from openai import OpenAI import os def translate_text(client, text, target_language, model_name): """ Translate the input text to the target language using specified OpenAI GPT model. """ prompt = f"Translate the following text to {target_language}:\n\n{text}\n\nTranslation:" response = client.chat.completions.create( model=model_name, messages=[{"role": "user", "content": prompt}] ) return response.choices[0].message.content.strip() def generate_audio_and_text(api_key, input_text, model_name, voice_type, voice_speed, language, output_option): """ Generate audio and text files from input text using OpenAI's TTS API. Args: api_key (str): OpenAI API key input_text (str): Text to convert to speech model_name (str): OpenAI model name for translation voice_type (str): Voice type for TTS voice_speed (float): Speed of speech language (str): Language code for synthesis output_option (str): Output type ('audio', 'script_text', or 'both') Returns: tuple: (audio_file_path, script_file_path, status_message) """ if not input_text: return None, None, "No input text provided" if not api_key: return None, None, "No API key provided" try: client = OpenAI(api_key=api_key) # Translate the text if the target language is not the same as the input text language translated_text = translate_text(client, input_text, language, model_name) # Create temp directory if it doesn't exist temp_dir = os.path.join(os.getcwd(), 'temp') if not os.path.exists(temp_dir): os.makedirs(temp_dir) # Generate audio file audio_file = None if output_option in ["audio", "both"]: speech_response = client.audio.speech.create( model="tts-1-hd", voice=voice_type, input=translated_text, speed=float(voice_speed) ) # Save the audio to a temporary file audio_path = os.path.join(temp_dir, f"output_{hash(translated_text)}_{language}.mp3") with open(audio_path, "wb") as f: for chunk in speech_response.iter_bytes(): f.write(chunk) audio_file = audio_path # Save the translated text as a script file script_file = None if output_option in ["script_text", "both"]: script_path = os.path.join(temp_dir, f"script_{hash(translated_text)}_{language}.txt") with open(script_path, "w", encoding='utf-8') as f: f.write(translated_text) script_file = script_path status_message = f"Generation completed successfully in {language}!" return audio_file, script_file, status_message except Exception as e: return None, None, f"Error: {str(e)}"