/* * Author : Amit Dutta * Date : 08 Feb 2026 * Repo : https://github.com/notamitgamer/bsc * License : MIT License (See the LICENSE file for details) */ /* Write a program to convert a given text into an audio file using OpenAI Audio API (TTS). */ /* Let Us C, Chap- 24 (Interaction with ChatGPT through C), Qn No.: B(a) */ /* This file is auto-generated by a bot. */ /* This code is not compiled; it is for reference only. */ /* NOTE: These programs require the 'libcurl' library to compile. Command: gcc luc117.c -o output -lcurl */ #include #include #include #include /* Pre-requisites: 1. Install libcurl development package. 2. Get OpenAI API Key. */ #define API_KEY "YOUR_OPENAI_API_KEY_HERE" size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) { size_t written = fwrite(ptr, size, nmemb, stream); return written; } int main(void) { CURL *curl; CURLcode res; FILE *fp; // JSON Payload construction const char *url = "https://api.openai.com/v1/audio/speech"; const char *data = "{" "\"model\": \"tts-1\"," "\"input\": \"Hello! This is a C program talking to you.\"," "\"voice\": \"alloy\"" "}"; struct curl_slist *headers = NULL; char auth_header[100]; sprintf(auth_header, "Authorization: Bearer %s", API_KEY); curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if(curl) { // Set Headers headers = curl_slist_append(headers, "Content-Type: application/json"); headers = curl_slist_append(headers, auth_header); // Open file to save audio fp = fopen("output_audio.mp3", "wb"); if(!fp) { printf("Error opening file for writing.\n"); return 1; } // Configure CURL curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); // Perform Request printf("Sending request to OpenAI TTS API...\n"); res = curl_easy_perform(curl); if(res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); else printf("Audio saved to 'output_audio.mp3' successfully.\n"); // Cleanup fclose(fp); curl_slist_free_all(headers); curl_easy_cleanup(curl); } curl_global_cleanup(); return 0; }