File size: 2,536 Bytes
afd8033
 
 
aad01e3
0e59554
afd8033
0e59554
afd8033
0e59554
aad01e3
afd8033
 
 
 
 
 
0e59554
 
afd8033
aad01e3
 
afd8033
aad01e3
afd8033
 
 
aad01e3
afd8033
aad01e3
afd8033
0e59554
 
 
50a0a9f
0e59554
afd8033
da7457b
50a0a9f
afd8033
 
 
 
50a0a9f
e7c5694
5e6b009
dac9128
da7457b
afd8033
 
0e59554
afd8033
 
0e59554
afd8033
 
b2e67d3
0e59554
afd8033
 
 
 
 
 
0e59554
afd8033
6cfcc47
afd8033
 
 
 
 
6cfcc47
50a0a9f
afd8033
f4d9076
afd8033
1c5cdee
6cfcc47
 
afd8033
1c5cdee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import gradio as gr
from main import index, run
from gtts import gTTS
import os, time

from transformers import pipeline

p = pipeline("automatic-speech-recognition")

"""Use text to call chat method from main_old.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):
    start_time = time.time()
    print("start time:" + str(start_time))
    response = run(question=text)
    end_time = time.time()
    # If response contains string `SOURCES:`, then add a \n before `SOURCES`
    if "SOURCES:" in response:
        response = response.replace("SOURCES:", "\nSOURCES:")
        # response = response + "\n\n" + "Time taken: " + str(end_time - start_time)
    print(response)
    print("Time taken: " + str(end_time - start_time))
    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")

    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
    )

    print(audio)
    audio.change(lambda:None, None, audio)

if __name__ == "__main__":
    demo.launch(debug=True)