ai-voice-clone / app.py
Welly-code's picture
Upload app.py with huggingface_hub
21826ad verified
import gradio as gr
import os
import tempfile
from gtts import gTTS
def clone_voice(text, audio):
if not text:
return 'Please enter text', None
groq_key = os.getenv('GROQ_API_KEY')
openai_key = os.getenv('OPENAI_API_KEY')
if not groq_key and not openai_key:
tts = gTTS(text)
temp_file = tempfile.NamedTemporaryFile(suffix='.mp3', delete=False)
tts.save(temp_file.name)
return f'Demo TTS for: {text}', temp_file.name
try:
if groq_key:
import groq
client = groq.Groq(api_key=groq_key)
if audio:
with open(audio, 'rb') as f:
transcription = client.audio.transcriptions.create(
model='whisper-large-v3',
file=f
)
return f'Transcribed: {transcription.text}', None
tts = gTTS(text)
temp_file = tempfile.NamedTemporaryFile(suffix='.mp3', delete=False)
tts.save(temp_file.name)
return f'Generated TTS for: {text}', temp_file.name
except Exception as e:
return f'Error: {str(e)}', None
with gr.Blocks(title='AI Voice Clone Demo') as demo:
gr.Markdown('# 🎙️ AI Voice Clone Demo')
gr.Markdown('Clone any voice with AI using advanced TTS models.')
groq_key = os.getenv('GROQ_API_KEY')
openai_key = os.getenv('OPENAI_API_KEY')
if not groq_key and not openai_key:
gr.Warning('⚠️ API keys not set. Using demo TTS mode.')
else:
gr.Markdown('✅ API key detected. Voice cloning ready!')
with gr.Row():
text = gr.Textbox(label='Text to speak')
audio = gr.Audio(label='Voice sample (optional)', type='filepath')
btn = gr.Button('Clone Voice')
output_text = gr.Textbox(label='Result')
output_audio = gr.Audio(label='Generated Voice')
btn.click(clone_voice, [text, audio], [output_text, output_audio])
gr.Markdown('## 📦 Install')
gr.Markdown('```bash\npip install ai-voice-clone\n```')
gr.Markdown('**GitHub:** https://github.com/my-ai-stack/ai-voice-clone')
demo.launch()