Fast_VoiceChat / app.py
pratham0011's picture
Update app.py
7dafaa4 verified
raw
history blame
1.55 kB
import gradio as gr
import asyncio
import sys
import os
from pydub import AudioSegment
sys.path.append('voice_chat')
from voice_chat import respond
def process_audio(audio):
if audio is None:
return None
if isinstance(audio, tuple): # Gradio returns a tuple (path, sampling_rate)
audio_path = audio[0]
else:
audio_path = audio
# Ensure the file exists
if not os.path.exists(audio_path):
raise FileNotFoundError(f"Audio file not found: {audio_path}")
# Convert audio to wav if it's not already
if not audio_path.endswith('.wav'):
audio = AudioSegment.from_file(audio_path)
wav_path = audio_path.rsplit('.', 1)[0] + '.wav'
audio.export(wav_path, format="wav")
audio_path = wav_path
return audio_path
async def voice_chat(audio):
try:
processed_audio = process_audio(audio)
if processed_audio is None:
return None
response_audio = await respond(processed_audio)
return response_audio
except Exception as e:
print(f"Error in voice_chat: {str(e)}")
return None
interface = gr.Interface(
fn=lambda audio: asyncio.run(voice_chat(audio)),
inputs=gr.Audio(type="filepath"),
outputs=gr.Audio(),
title="Voice Chat with AI Assistant",
description="Upload an audio file or record using the microphone, and the AI will respond with voice.",
examples=None,
theme="default"
)
if __name__ == "__main__":
interface.launch(debug=True)