Moezulhaq24's picture
Update app.py
ac91624 verified
raw
history blame contribute delete
No virus
1.82 kB
import os
import gradio as gr
import whisper
from gtts import gTTS
import io
from groq import Groq
Groq_Api_Key = os.getenv("groq_api_key")
# Initialize the Groq client
client = Groq(api_key=Groq_Api_Key)
# Load the Whisper model
model = whisper.load_model("base") # You can choose other models like "small", "medium", "large"
def process_audio(file_path):
try:
# Load the audio file
audio = whisper.load_audio(file_path)
# Transcribe the audio using Whisper
result = model.transcribe(audio)
text = result["text"]
# Generate a response using Groq
chat_completion = client.chat.completions.create(
messages=[{"role": "user", "content": text}],
model="llama3-8b-8192", # Replace with the correct model if necessary
)
# Access the response using dot notation
response_message = chat_completion.choices[0].message.content.strip()
# Convert the response text to speech
tts = gTTS(response_message)
response_audio_io = io.BytesIO()
tts.write_to_fp(response_audio_io) # Save the audio to the BytesIO object
response_audio_io.seek(0)
# Save audio to a file to ensure it's generated correctly
with open("response.mp3", "wb") as audio_file:
audio_file.write(response_audio_io.getvalue())
# Return the response text and the path to the saved audio file
return response_message, "response.mp3"
except Exception as e:
return f"An error occurred: {e}", None
iface = gr.Interface(
fn=process_audio,
inputs=gr.Audio(type="filepath"), # Use type="filepath"
outputs=[gr.Textbox(label="Response Text"), gr.Audio(label="Response Audio")],
live=True,
title="Voice-to-Voice Chatbot"
)
iface.launch()