dindizz commited on
Commit
dad9456
·
verified ·
1 Parent(s): ab9b26b

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +68 -0
app.py ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import openai
2
+ import speech_recognition as sr
3
+ import pyttsx3
4
+ import os
5
+ import gradio as gr
6
+ from dotenv import load_dotenv
7
+
8
+ # Load your OpenAI API key from environment variable
9
+ load_dotenv()
10
+ openai.api_key = os.getenv("OPENAI_API_KEY")
11
+
12
+ # Initialize speech recognition and text-to-speech engines
13
+ recognizer = sr.Recognizer()
14
+ tts_engine = pyttsx3.init()
15
+
16
+ # Function to convert speech to text
17
+ def speech_to_text(audio):
18
+ try:
19
+ with sr.AudioFile(audio) as source:
20
+ recognizer.adjust_for_ambient_noise(source)
21
+ audio_data = recognizer.record(source)
22
+ text = recognizer.recognize_google(audio_data)
23
+ return text
24
+ except sr.UnknownValueError:
25
+ return "Sorry, I could not understand the audio."
26
+ except sr.RequestError as e:
27
+ return f"Could not request results; {e}"
28
+
29
+ # Function to get GPT response
30
+ def get_gpt_response(prompt):
31
+ try:
32
+ response = openai.Completion.create(
33
+ engine="text-davinci-003",
34
+ prompt=prompt,
35
+ max_tokens=150
36
+ )
37
+ return response.choices[0].text.strip()
38
+ except Exception as e:
39
+ return f"Error: {e}"
40
+
41
+ # Function to convert text to speech
42
+ def text_to_speech(response):
43
+ tts_engine.save_to_file(response, "response.mp3")
44
+ tts_engine.runAndWait()
45
+ return "response.mp3"
46
+
47
+ # Gradio function that integrates all components
48
+ def chatbot(audio):
49
+ user_input = speech_to_text(audio)
50
+ if "Sorry" in user_input:
51
+ return user_input, None
52
+ response = get_gpt_response(user_input)
53
+ if response:
54
+ audio_response = text_to_speech(response)
55
+ return response, audio_response
56
+ return "Error generating response.", None
57
+
58
+ # Gradio interface
59
+ iface = gr.Interface(
60
+ fn=chatbot,
61
+ inputs=gr.Audio(source="microphone", type="filepath"),
62
+ outputs=[gr.Textbox(label="Transcription"), gr.Audio(label="AI Response")],
63
+ live=True
64
+ )
65
+
66
+ # Launch the Gradio interface
67
+ if __name__ == "__main__":
68
+ iface.launch()