Voicebot / app.py
dschandra's picture
Update app.py
3b0cc06 verified
raw
history blame
2.16 kB
import gradio as gr
from gtts import gTTS
import openai
import speech_recognition as sr
import os
# Set OpenAI API Key
openai.api_key = "YOUR_OPENAI_API_KEY" # Replace with your OpenAI API Key
# Text-to-Speech Function
def text_to_speech(response_text):
tts = gTTS(response_text, lang="en")
audio_file = "response.mp3"
tts.save(audio_file)
return audio_file
# Speech Recognition Function
def speech_to_text(audio_file):
recognizer = sr.Recognizer()
with sr.AudioFile(audio_file) as source:
audio_data = recognizer.record(source)
try:
return recognizer.recognize_google(audio_data)
except sr.UnknownValueError:
return "I'm sorry, I couldn't understand that. Could you repeat?"
except sr.RequestError:
return "There was an error with the speech recognition service."
# Chatbot Logic using OpenAI GPT
def chatbot_response(user_input):
try:
response = openai.Completion.create(
engine="text-davinci-003", # Use a powerful GPT model
prompt=f"User: {user_input}\nChatbot:",
max_tokens=150,
temperature=0.7,
)
return response.choices[0].text.strip()
except Exception as e:
return f"Error generating response: {e}"
# Gradio Interface Logic
def process_interaction(audio_file):
# Convert user speech to text
user_text = speech_to_text(audio_file)
if "Error" in user_text or "sorry" in user_text:
return user_text, None
# Get chatbot response
chatbot_reply = chatbot_response(user_text)
# Convert chatbot reply to speech
chatbot_audio = text_to_speech(chatbot_reply)
return chatbot_reply, chatbot_audio
# Gradio Interface
interface = gr.Interface(
fn=process_interaction,
inputs=gr.Audio(source="microphone", type="filepath"),
outputs=[gr.Textbox(label="Chatbot Reply"), gr.Audio(label="Chatbot Voice Reply")],
title="Face-to-Face Chatbot",
description="Talk to this chatbot like you're having a real conversation! Speak into your microphone to start.",
live=True,
)
if __name__ == "__main__":
interface.launch()