Kashaf23's picture
Update app.py
4364f5a verified
Raw
History Blame Contribute Delete
1.53 kB
import os
import uuid
import whisper
from groq import Groq
import gradio as gr
from gtts import gTTS
# -------------------------------
# Groq API Key (set in HF Secrets)
# -------------------------------
client = Groq(api_key=os.environ["GROQ_API_KEY"])
# -------------------------------
# Load Whisper model
# -------------------------------
stt_model = whisper.load_model("base")
# -------------------------------
# Voice-to-Voice function
# -------------------------------
def voice_to_voice(audio_path):
try:
# 1️⃣ Speech-to-Text
text = stt_model.transcribe(audio_path)["text"]
# 2️⃣ LLM response via Groq
response = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=[{"role": "user", "content": text}]
).choices[0].message.content
# 3️⃣ Text-to-Speech (gTTS)
output_file = f"out_{uuid.uuid4().hex}.mp3"
tts = gTTS(text=response, lang='en')
tts.save(output_file)
return output_file
except Exception as e:
return f"Error: {str(e)}"
# -------------------------------
# Gradio UI
# -------------------------------
interface = gr.Interface(
fn=voice_to_voice,
inputs=gr.Audio(type="filepath", label="Speak"),
outputs=gr.Audio(type="filepath", label="Assistant Reply"),
title="🎙️ Voice-to-Voice AI Assistant",
description="Whisper → Groq LLaMA-3 → Google TTS (Free & Open Source)"
)
if __name__ == "__main__":
interface.launch()