Spaces:
Running
Running
"""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) | |