Spaces:
Runtime error
Runtime error
| 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 = "<h1 style='text-align: center; color: #ffffff; font-size: 40px;'> 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() |