Spaces:
Build error
Build error
| """Deploying AI Voice Chatbot Gradio App.""" | |
| import gradio as gr | |
| from typing import Tuple | |
| from utils import ( | |
| TextGenerationPipeline, | |
| from_en_translation, | |
| html_audio_autoplay, | |
| stt, | |
| to_en_translation, | |
| tts, | |
| tts_to_bytesio, | |
| ) | |
| max_answer_length = 100 | |
| desired_language = "de" | |
| response_generator_pipe = TextGenerationPipeline(max_length=max_answer_length) | |
| def main(audio: object) -> Tuple[str, str, str, object]: | |
| """Calls functions for deploying Gradio app. | |
| It responds both verbally and in text | |
| by taking voice input from the user. | |
| Args: | |
| audio (object): Recorded speech of the user. | |
| Returns: | |
| tuple containing: | |
| - user_speech_text (str): Recognized speech. | |
| - bot_response_de (str): Translated answer of the bot. | |
| - bot_response_en (str): Bot's original answer. | |
| - html (object): Autoplayer for bot's speech. | |
| """ | |
| user_speech_text = stt(audio, desired_language) | |
| translated_text = to_en_translation(user_speech_text, desired_language) | |
| bot_response_en = response_generator_pipe(translated_text) | |
| bot_response_de = from_en_translation(bot_response_en, desired_language) | |
| bot_voice = tts(bot_response_de, desired_language) | |
| bot_voice_bytes = tts_to_bytesio(bot_voice) | |
| html = html_audio_autoplay(bot_voice_bytes) | |
| return user_speech_text, bot_response_de, bot_response_en, html | |
| # Define the Gradio interface | |
| with gr.Blocks() as demo: | |
| gr.Markdown("## AI Voice Chatbot") | |
| with gr.Row(): | |
| audio_input = gr.Audio(type="filepath", label="Speak or Upload Audio") | |
| submit_btn = gr.Button("Submit") | |
| with gr.Row(): | |
| user_speech_text = gr.Textbox(label="You said:", interactive=False) | |
| bot_response_de = gr.Textbox(label="AI said (in German):", interactive=False) | |
| bot_response_en = gr.Textbox(label="AI said (in English):", interactive=False) | |
| html_output = gr.HTML() | |
| # Connect the function to the components | |
| submit_btn.click( | |
| fn=main, | |
| inputs=[audio_input], | |
| outputs=[user_speech_text, bot_response_de, bot_response_en, html_output], | |
| ) | |
| # Launch the Gradio app | |
| demo.launch(debug=True) | |