tarrasyed19472007 commited on
Commit
55137ed
·
verified ·
1 Parent(s): f3143c9

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +87 -0
app.py ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # chatbot_app.py
2
+
3
+ import streamlit as st
4
+ import openai
5
+ import requests
6
+ from gtts import gTTS
7
+ from transformers import AutoModelForCausalLM, AutoTokenizer
8
+ import os
9
+ from io import BytesIO
10
+ from pydub import AudioSegment
11
+ from pydub.playback import play
12
+ import tempfile
13
+
14
+ # Configure API keys
15
+ HUGGING_FACE_API_KEY = "voicebot"
16
+ OPENAI_API_KEY = "your_openai_api_key"
17
+ openai.api_key = OPENAI_API_KEY
18
+
19
+ # Initialize the Hugging Face model and tokenizer
20
+ def load_model():
21
+ model_name = "facebook/musicgen-small"
22
+ tokenizer = AutoTokenizer.from_pretrained(model_name, use_auth_token=HUGGING_FACE_API_KEY)
23
+ model = AutoModelForCausalLM.from_pretrained(model_name, use_auth_token=HUGGING_FACE_API_KEY)
24
+ return model, tokenizer
25
+
26
+ model, tokenizer = load_model()
27
+
28
+ # Function to convert voice to text using OpenAI's Whisper API
29
+ def voice_to_text(audio_file):
30
+ with open(audio_file, "rb") as file:
31
+ transcript = openai.Audio.transcribe("whisper-1", file)
32
+ return transcript["text"]
33
+
34
+ # Function to generate chatbot response using Hugging Face's model
35
+ def generate_response(prompt):
36
+ inputs = tokenizer.encode(prompt, return_tensors="pt")
37
+ outputs = model.generate(inputs, max_length=100, num_return_sequences=1)
38
+ response = tokenizer.decode(outputs[0], skip_special_tokens=True)
39
+ return response
40
+
41
+ # Function to convert text to voice using gTTS
42
+ def text_to_speech(text):
43
+ tts = gTTS(text, lang="en")
44
+ temp_file = tempfile.NamedTemporaryFile(delete=False, suffix=".mp3")
45
+ tts.save(temp_file.name)
46
+ return temp_file.name
47
+
48
+ # Streamlit app layout
49
+ st.title("Voice-to-Text Chatbot")
50
+ st.write("Speak to the chatbot and get responses in both text and audio!")
51
+
52
+ # Upload audio file
53
+ audio_file = st.file_uploader("Upload your voice input", type=["mp3", "wav", "ogg"])
54
+
55
+ if audio_file is not None:
56
+ # Convert voice to text
57
+ with open("input_audio.wav", "wb") as f:
58
+ f.write(audio_file.read())
59
+ st.audio("input_audio.wav", format="audio/wav")
60
+
61
+ # Get text from audio
62
+ with st.spinner("Transcribing your voice..."):
63
+ user_input = voice_to_text("input_audio.wav")
64
+ st.write(f"**You said:** {user_input}")
65
+
66
+ # Generate chatbot response
67
+ with st.spinner("Generating response..."):
68
+ response_text = generate_response(user_input)
69
+ st.write(f"**Chatbot:** {response_text}")
70
+
71
+ # Convert response to audio
72
+ with st.spinner("Converting response to audio..."):
73
+ response_audio = text_to_speech(response_text)
74
+ audio_data = AudioSegment.from_mp3(response_audio)
75
+
76
+ # Display audio response
77
+ st.audio(response_audio, format="audio/mp3")
78
+
79
+ # Play audio
80
+ play(audio_data)
81
+
82
+ # Clean up temporary files
83
+ os.remove("input_audio.wav")
84
+ os.remove(response_audio)
85
+ else:
86
+ st.write("Please upload an audio file to get started.")
87
+