|
import gradio as gr |
|
from transformers import pipeline |
|
import torchaudio |
|
import time |
|
|
|
|
|
transcriber = pipeline(model="openai/whisper-base") |
|
|
|
|
|
summarization_model = pipeline("summarization") |
|
|
|
|
|
model_name = "deepset/roberta-base-squad2" |
|
nlp = pipeline('question-answering', model=model_name, tokenizer=model_name) |
|
|
|
def translate_audio(audio): |
|
|
|
transcription = transcriber(audio) |
|
print('transcription', transcription) |
|
|
|
|
|
summary = summarization_model(transcription['text']) |
|
print('summary', summary) |
|
|
|
return transcription['text'], summary[0]['summary_text'] |
|
|
|
def answer_question(context, question): |
|
QA_input = { |
|
'question': question, |
|
'context': context |
|
} |
|
print('----QA_input----', QA_input) |
|
return nlp(QA_input)['answer'] |
|
|
|
|
|
with gr.Blocks() as iface: |
|
gr.Markdown("# Audio Translator, Summarizer, and QA System") |
|
|
|
with gr.Row(): |
|
audio_input = gr.Audio(type="filepath", label="Upload Audio") |
|
transcription_output = gr.Textbox( |
|
label="Transcribed Text", |
|
info="Initial text") |
|
translation_output = gr.Textbox( |
|
label="Summary", |
|
info="Meeting minute") |
|
|
|
translate_button = gr.Button("Translate Audio") |
|
|
|
translate_button.click( |
|
translate_audio, |
|
inputs=[audio_input], |
|
outputs=[transcription_output, translation_output] |
|
) |
|
|
|
def respond(message, chat_history, context): |
|
bot_message = answer_question(context, message) |
|
print('----bot_message---', bot_message) |
|
chat_history.append((message, bot_message)) |
|
time.sleep(2) |
|
return "", chat_history |
|
|
|
with gr.Blocks() as demo: |
|
chatbot = gr.Chatbot() |
|
msg = gr.Textbox() |
|
clear = gr.ClearButton([msg, chatbot]) |
|
|
|
msg.submit(respond, [msg, chatbot, transcription_output], [msg, chatbot]) |
|
|
|
|
|
iface.launch(share=True) |