Spaces:
Runtime error
Runtime error
import gradio as gr | |
from main import index, run | |
from gtts import gTTS | |
import os | |
from transformers import pipeline | |
p = pipeline("automatic-speech-recognition") | |
"""Use text to call chat method from main.py""" | |
def add_text(history, text): | |
print("Question asked: " + text) | |
response = run_model(text) | |
history = history + [(text, response)] | |
print(history) | |
return history, "" | |
def run_model(text): | |
response = run(question=text) | |
# If response contains string `SOURCES:`, then add a \n before `SOURCES` | |
if "SOURCES:" in response: | |
response = response.replace("SOURCES:", "\nSOURCES:") | |
print(response) | |
return response | |
def get_output(history, audio): | |
txt = p(audio)["text"] | |
history.append(( (audio, ) , txt)) | |
audio_path = 'response.wav' | |
response = run_model(txt) | |
# Remove all text from SOURCES: to the end of the string | |
trimmed_response = response.split("SOURCES:")[0] | |
myobj = gTTS(text=trimmed_response, lang='en', slow=False) | |
myobj.save(audio_path) | |
# split audio by / and keep the last element | |
# audio = audio.split("/")[-1] | |
# audio = audio + ".wav" | |
history.append(( (audio, ) , (audio_path, ))) | |
print(history) | |
return history | |
def bot(history): | |
return history | |
with gr.Blocks() as demo: | |
index() | |
chatbot = gr.Chatbot([(None,'Learn about <a href="https://www.coursera.org/learn/3d-printing-revolution/home">3D printing Revolution</a> course with referred sources. Try out the new voice to voice Q&A on the course! ')], elem_id="chatbot").style(height=750) | |
with gr.Row(): | |
with gr.Column(scale=0.85): | |
txt = gr.Textbox( | |
label="Coursera Voice Q&A Bot", | |
placeholder="Enter text and press enter, or upload an image", lines=1 | |
).style(container=False) | |
with gr.Column(scale=0.15): | |
audio = gr.Audio(source="microphone", type="filepath").style(container=False) | |
txt.submit(add_text, [chatbot, txt], [chatbot, txt], postprocess=False).then( | |
bot, chatbot, chatbot | |
) | |
audio.change(fn=get_output, inputs=[chatbot, audio], outputs=[chatbot]).then( | |
bot, chatbot, chatbot | |
) | |
if __name__ == "__main__": | |
demo.launch() | |