Spaces:
Build error
Build error
| import os | |
| import tempfile | |
| import whisper | |
| import gradio as gr | |
| from gtts import gTTS | |
| from groq import Groq | |
| # Load Groq API key from environment variable | |
| groq_api_key = os.getenv('GROQ_API_KEY') | |
| if not groq_api_key: | |
| raise ValueError("GROQ_API_KEY environment variable is not set.") | |
| groq_client = Groq(api_key=groq_api_key) | |
| # Attempt to load Whisper model | |
| try: | |
| whisper_model = whisper.load_model("base") | |
| except AttributeError: | |
| print("Error: The 'whisper' library does not support 'load_model'.") | |
| whisper_model = None | |
| def process_audio(audio_file): | |
| if whisper_model is None: | |
| return "Whisper model could not be loaded.", None | |
| try: | |
| # Transcribe audio using Whisper | |
| result = whisper_model.transcribe(audio_file) | |
| user_text = result['text'] | |
| # 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 | |
| # Convert response text to speech using gTTS | |
| tts = gTTS(text=response_text, lang='en') | |
| audio_file_path = tempfile.NamedTemporaryFile(delete=False, suffix='.mp3').name | |
| tts.save(audio_file_path) | |
| return response_text, audio_file_path | |
| except Exception as e: | |
| return str(e), None | |
| # Create Gradio interface with custom CSS | |
| css = """ | |
| .gradio-container { | |
| background: linear-gradient(135deg, #6e45e2, #88d3ce); | |
| border-radius: 15px; | |
| box-shadow: 0px 4px 20px rgba(0, 0, 0, 0.1); | |
| padding: 20px; | |
| } | |
| .gradio-input, .gradio-output { | |
| border-radius: 10px; | |
| box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.15); | |
| } | |
| .gradio-textbox { | |
| border: 2px solid #6e45e2; | |
| background: #fff; | |
| color: #333; | |
| } | |
| .gradio-audio { | |
| border: 2px solid #88d3ce; | |
| background: #fff; | |
| } | |
| .gradio-button { | |
| background: #6e45e2; | |
| color: #fff; | |
| border: none; | |
| border-radius: 8px; | |
| padding: 10px 20px; | |
| font-size: 16px; | |
| cursor: pointer; | |
| } | |
| .gradio-button:hover { | |
| background: #5a3d9c; | |
| } | |
| """ | |
| iface = gr.Interface( | |
| fn=process_audio, | |
| inputs=gr.Audio(type="filepath"), | |
| outputs=[gr.Textbox(label="Response"), gr.Audio(label="Response Audio")], | |
| live=True, | |
| css=css | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch() | |