import time import random import gradio as gr from transformers import pipeline p = pipeline("automatic-speech-recognition", "facebook/wav2vec2-base-960h") def user(user_message, history): return "", history + [[user_message, None]] # def transcribe(audio, state=""): # text = p(audio)["text"] # state += text + " " # return state, state def transcribe(audio): text = p(audio)["text"] return text def bot(history): bot_message = random.choice(["How are you?", "I love you", "I'm very hungry"]) history[-1][1] = "" for character in bot_message: history[-1][1] += character time.sleep(0.05) yield history css = """ .gradio-container { font-family: 'IBM Plex Sans', sans-serif; } .gr-button { color: white; border-color: black; background: black; } .container { max-width: 730px; margin: auto; padding-top: 1.5rem; } #chatbot { min-height: 30rem; margin-bottom: 15px; margin-left: auto; margin-right: auto; } """ with gr.Blocks(css=css) as demo: gr.HTML( """

Interview with AI (Really?)

""" ) with gr.Box(): # chatbot = gr.Chatbot() # msg = gr.Textbox() chatbot = gr.Chatbot([], show_label=False, elem_id="chatbot").style(height="auto") # with gr.Row(): with gr.Row(elem_id="prompt-container").style(mobile_collapse=False, equal_height=True): with gr.Column(scale=0.70): txt = gr.Textbox( show_label=False, placeholder="Type your response and press enter, or record your response", ).style(container=False) with gr.Column(scale=0.15, min_width=0): record = gr.Audio(source="microphone", type="filepath", show_label=False) with gr.Column(scale=0.15, min_width=0): speech = gr.Button("Submit") # gr.Interface( # fn=transcribe, # inputs=[ # gr.Audio(source="microphone", type="filepath", streaming=True), # "state" # ], # outputs=[ # msg, # "state" # ], # live=True) send = gr.Button("Send") speech.click(transcribe, inputs=record, outputs=txt) txt.submit(user, [txt, chatbot], [txt, chatbot], queue=False).then( bot, chatbot, chatbot ) send.click(user, [txt, chatbot], [txt, chatbot], queue=False).then( bot, chatbot, chatbot ) demo.queue() demo.launch()