tahirsher's picture
Update app.py
f501b1d verified
raw
history blame
2.29 kB
import os
import whisper
from gtts import gTTS
import gradio as gr
from groq import Groq
# Load the Whisper model for speech-to-text
whisper_model = whisper.load_model("large")
# Initialize Groq client for text generation
GROQ_API_KEY = "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"
client = Groq(api_key=GROQ_API_KEY)
# Function to convert text to speech using gTTS and return the audio path
def text_to_speech(text):
tts = gTTS(text=text, lang='en')
response_audio_path = "response.mp3"
tts.save(response_audio_path)
return response_audio_path
# Function to transcribe audio to text using Whisper
def transcribe_audio(audio):
print("Transcribing audio...")
result = whisper_model.transcribe(audio)
return result["text"]
# Function to get a response from the Groq API using LLaMA model
def get_response_from_groq(input_text):
chat_completion = client.chat.completions.create(
messages=[{"role": "user", "content": input_text}],
model="llama3-8b-8192",
)
response = chat_completion.choices[0].message.content
return response
# Gradio function to handle chatbot interaction
def chatbot(audio):
# Step 1: Transcribe audio to text using Whisper
user_input = transcribe_audio(audio)
print(f"User said: {user_input}")
# Step 2: Get chatbot response from Groq (LLaMA model)
response = get_response_from_groq(user_input)
print(f"Chatbot response: {response}")
# Step 3: Convert response text to speech and return audio
response_audio_path = text_to_speech(response)
# Ensure the audio file exists and return text + audio response
if os.path.exists(response_audio_path):
return response, response_audio_path
else:
return response, None # Fallback in case the audio file wasn't generated
# Gradio interface for the chatbot
interface = gr.Interface(
fn=chatbot,
inputs=gr.Audio(type="filepath"), # Use microphone input without the 'source' argument
outputs=["text", gr.Audio(type="filepath")], # Text and audio output
live=True,
title="Voice-Enabled Chatbot",
description="Speak into your microphone, and the chatbot will respond with both text and audio."
)
# Launch Gradio interface
interface.launch(share=True)