Spaces:
Sleeping
Sleeping
File size: 2,347 Bytes
f9ae432 78decde 5fad48b 9c78509 5fad48b 9c78509 f9ae432 9c78509 f9ae432 9c78509 f9ae432 9c78509 f9ae432 9c78509 f9ae432 9c78509 f9ae432 5fad48b f9ae432 9c78509 5fad48b 9c78509 5fad48b 9c78509 f9ae432 9c78509 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
from openai import OpenAI
import os
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
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)
# 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)}_{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 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)}_{language}.txt")
with open(script_path, "w", encoding='utf-8') as f:
f.write(input_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)}" |