Spaces:
Sleeping
Sleeping
from openai import OpenAI | |
import os | |
def generate_audio_and_text(api_key, input_text, model_name, voice_type, voice_speed, 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 | |
voice_type (str): Voice type for TTS | |
voice_speed (float): Speed of speech | |
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) | |
# 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", | |
voice=voice_type, | |
input=input_text, | |
speed=float(voice_speed) | |
) | |
# 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 | |
# Save the input 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(input_text)}.txt") | |
with open(script_path, "w", encoding='utf-8') as f: | |
f.write(input_text) | |
script_file = script_path | |
status_message = "Generation completed successfully!" | |
return audio_file, script_file, status_message | |
except Exception as e: | |
return None, None, f"Error: {str(e)}" |