Shanulhaq's picture
Update app.py
c919793 verified
#1st Line install Libraries:-
#!pip install gradio groq openai-whisper gtts numpy pydub requests
#!apt-get install -y ffmpeg
#2nd Line generate API key from GROQ:-
#import os
#os.environ["GROQ_API_KEY"] = "Mention_your API_Key_here"
#3rd Line Code:-
import os
import gradio as gr
from groq import Groq, GroqError
import whisper
from gtts import gTTS
import tempfile
import logging
import numpy as np
from pydub import AudioSegment
# Set up logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
# Set up Groq API key
groq_api_key = os.getenv('groq_api_key')
#GROQ_API_KEY = "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"
if not groq_api_key:
raise ValueError("GROQ_API_KEY is not set.")
try:
groq_client = Groq(api_key=groq_api_key)
logger.info("Groq API key is set and client is initialized.")
except GroqError as e:
logger.error(f"Failed to initialize Groq client: {e}")
raise
try:
# Load Whisper model
whisper_model = whisper.load_model("base")
logger.info("Whisper model loaded successfully.")
except Exception as e:
logger.error(f"Failed to load Whisper model: {e}")
raise
def process_audio(audio_file):
try:
# Transcribe audio using Whisper
result = whisper_model.transcribe(audio_file)
user_text = result['text']
logger.info(f"Transcription successful: {user_text}")
except Exception as e:
logger.error(f"Error in transcribing audio: {e}")
return "Error in transcribing audio.", None
try:
# Generate response using Llama 8b model with Groq API
chat_completion = groq_client.chat.completions.create(
messages=[
{
"role": "user",
"content": user_text,
}
],
model="llama3-8b-8192",
)
response_text = chat_completion.choices[0].message.content
logger.info(f"Received response from Groq API: {response_text}")
except GroqError as e:
logger.error(f"Error in generating response with Groq API: {e}")
return "Error in generating response with Groq API.", None
try:
# Convert response text to speech using gTTS
tts = gTTS(text=response_text, lang='en')
audio_file = tempfile.NamedTemporaryFile(delete=False, suffix='.mp3')
tts.save(audio_file.name)
logger.info("Text-to-speech conversion successful.")
except Exception as e:
logger.error(f"Error in text-to-speech conversion: {e}")
return "Error in text-to-speech conversion.", None
return response_text, audio_file.name
# Create Gradio interface
iface = gr.Interface(
fn=process_audio,
inputs=gr.Audio(type="filepath"),
title="AI-Powered Converter",
outputs=[gr.Textbox(label="Response"), gr.Audio(label="Response Audio")],
live=True
)
try:
iface.launch()
logger.info("Gradio interface launched successfully.")
except Exception as e:
logger.error(f"Failed to launch Gradio interface: {e}")
raise