import gradio as gr import pandas as pd from asr_openai import AutomaticSpeechRecognition from tts_elevenlabs import ElevenLabsTTS from falcon_7b_llm import Falcon_7b_llm from order_parser import Order_Parser import logging import os logging.basicConfig(level=logging.INFO) def delete_files_in_folder(folder_path): if not os.path.exists(folder_path): os.makedirs(folder_path) for filename in os.listdir(folder_path): file_path = os.path.join(folder_path, filename) # Check if it's a file (and not a directory) if os.path.isfile(file_path): os.remove(file_path) def generate_response(input_audio): sentence = asr.run_transcription(input_audio) # sentence = 'how are you?' print(sentence) global order_dict try: order_dict = order_taking.order_parser(sentence['text']) print(order_dict) except Exception as e: print('order parsing failed') print(e) llm_response = llm.get_llm_response(sentence['text']) print(llm_response) output_audio = tts.tts_generate_audio(llm_response) # output_audio = tts.tts_generate_audio(sentence) chatbot_history.append(((input_audio,), (output_audio,))) return chatbot_history delete_files_in_folder('data//tts_responses') title = "

Falcon Barista - Proof of Concept (POC)" asr = AutomaticSpeechRecognition() tts = ElevenLabsTTS() llm = Falcon_7b_llm() order_taking = Order_Parser() chatbot_history = [] order_display=False order_dict={} df = pd.DataFrame({ "item" : [], "quantity" : [], }) s = df#.style.format("{:.2f}") with gr.Blocks() as demo: gr.Markdown(title) gr.Markdown('''Note: This is just a POC and has several issues 1. High Latency 2. Models are still in fine tuning phase and get confused easily ''') order_title = gr.Markdown('### Your Order', visible=False) with gr.Row(): gr.Image('https://i.imgur.com/fHCFI2T.png', label="Look how cute is Falcon Barista") with gr.Column(): chatbot = gr.Chatbot(label='Chat with Falcon Barista', avatar_images=('data//user_avatar_logo.png','data//falcon_logo_transparent.png'), scale=2) mic = gr.Audio(source="microphone", type='filepath', scale=1) mic.stop_recording(generate_response, mic, chatbot) with gr.Row(): restart_btn = gr.Button(value="Restart Chat", scale=1, variant='stop') # restart_btn.click(restart_chat, outputs=[chatbot]) end_btn = gr.Button(value="End Chat and Confirm Order", scale=2, variant='primary') with gr.Column(visible=False) as output_col: order_title = gr.Markdown('### Your Order') order_summary = gr.DataFrame(s) def restart_chat(): delete_files_in_folder('data//tts_responses') global chatbot_history chatbot_history = [] global order_dict order_dict = {} global df df = pd.DataFrame({ "item" : [], "quantity" : [], }) order_taking.restart_state() tts.restart_state() llm.restart_state() return { chatbot: [], output_col: gr.Column(visible=False) } def end_chat(): df = pd.DataFrame(list(order_dict.items()), columns=['item', 'quantity']) s = df#.style.format("{:.2f}") return { output_col: gr.Column(visible=True), order_summary: gr.DataFrame(s, visible=True) } restart_btn.click(restart_chat, outputs=[chatbot, output_col]) end_btn.click(end_chat, outputs=[output_col, order_summary]) if __name__ == "__main__": demo.launch()