Spaces:
Runtime error
Runtime error
| from openai import OpenAI | |
| import tempfile | |
| import os | |
| def generate_audio_and_text(api_key, input_text, model_name, voice_type, voice_speed, language, output_option, summary_length, additional_prompt): | |
| if not input_text: | |
| return None, "No input text provided" | |
| try: | |
| client = OpenAI(api_key=api_key) | |
| # Generate summary if requested | |
| summary_text = None | |
| if output_option in ["summary_text", "both"]: | |
| summary_prompt = f"Summarize the following text in approximately {summary_length} words. {additional_prompt or ''}\n\nText: {input_text}" | |
| summary_response = client.chat.completions.create( | |
| model=model_name, | |
| messages=[{"role": "user", "content": summary_prompt}] | |
| ) | |
| summary_text = summary_response.choices[0].message.content | |
| # Generate audio if requested | |
| audio_file = None | |
| if output_option in ["audio", "both"]: | |
| speech_response = client.audio.speech.create( | |
| model="tts-1", # or "tts-1-hd" for higher quality | |
| voice=voice_type, | |
| input=input_text, | |
| speed=float(voice_speed) | |
| ) | |
| # 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) | |
| # Save the audio to a temporary file | |
| audio_path = os.path.join(temp_dir, f"output_{hash(input_text)}.mp3") | |
| with open(audio_path, "wb") as f: | |
| for chunk in speech_response.iter_bytes(): | |
| f.write(chunk) | |
| audio_file = audio_path | |
| # Return the audio file path and the summary text | |
| if output_option == "summary_text": | |
| return None, summary_text | |
| elif output_option == "audio": | |
| return audio_file, None | |
| elif output_option == "both": | |
| return audio_file, summary_text | |
| except Exception as e: | |
| return None, f"Error: {str(e)}" | |
| return None, None |