moved and updated gradio app
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
"""
|
||||
Gradio Audio Transcription App.
|
||||
--------------------------------
|
||||
|
||||
This module provides an interface to transcribe audio files using the
|
||||
AutoTranscribe model. Users can either upload an audio file or record their speech
|
||||
live for transcription. The application supports multiple languages and provides
|
||||
options to specify the number of speakers and the language of the audio.
|
||||
|
||||
Attributes:
|
||||
LANGUAGES (list): A list of supported languages for transcription.
|
||||
|
||||
Usage:
|
||||
Run this script to start the Gradio web interface for audio transcription.
|
||||
|
||||
"""
|
||||
|
||||
from autotranscript import AutoTranscribe
|
||||
import gradio as gr
|
||||
|
||||
LANGUAGES = [
|
||||
"Afrikaans", "Arabic", "Armenian", "Azerbaijani", "Belarusian",
|
||||
"Bosnian", "Bulgarian", "Catalan", "Chinese", "Croatian",
|
||||
"Czech", "Danish", "Dutch", "English", "Estonian",
|
||||
"Finnish", "French", "Galician", "German", "Greek",
|
||||
"Hebrew", "Hindi", "Hungarian", "Icelandic", "Indonesian",
|
||||
"Italian", "Japanese", "Kannada", "Kazakh", "Korean",
|
||||
"Latvian", "Lithuanian", "Macedonian", "Malay", "Marathi",
|
||||
"Maori", "Nepali", "Norwegian", "Persian", "Polish",
|
||||
"Portuguese", "Romanian", "Russian", "Serbian", "Slovak",
|
||||
"Slovenian", "Spanish", "Swahili", "Swedish", "Tagalog",
|
||||
"Tamil", "Thai", "Turkish", "Ukrainian", "Urdu",
|
||||
"Vietnamese", "Welsh"
|
||||
]
|
||||
|
||||
|
||||
def gradio_server(model : AutoTranscribe):
|
||||
"""
|
||||
Sets up and launches the Gradio interface for audio transcription.
|
||||
|
||||
Args:
|
||||
model (AutoTranscribe): An instance of the AutoTranscribe model for transcription.
|
||||
"""
|
||||
def transcribe(audio, microphone, number_of_speakers, language):
|
||||
"""
|
||||
Transcribes the provided audio input based on the given parameters.
|
||||
|
||||
Args:
|
||||
audio (str): Filepath to the uploaded audio file.
|
||||
microphone (str): Filepath to the recorded audio.
|
||||
number_of_speakers (int): Number of speakers in the audio.
|
||||
language (str): Language of the audio content.
|
||||
|
||||
Returns:
|
||||
tuple: Transcribed text (str), JSON output (dict)
|
||||
"""
|
||||
kwargs = {}
|
||||
if number_of_speakers != 0:
|
||||
kwargs["num_speakers"] = number_of_speakers
|
||||
if language != "None":
|
||||
kwargs["language"] = language
|
||||
|
||||
print()
|
||||
|
||||
if audio is not None:
|
||||
out = model.transcribe(audio, **kwargs)
|
||||
elif microphone is not None:
|
||||
out = model.transcribe(microphone , **kwargs)
|
||||
else:
|
||||
out = "Please upload an audio file or record one."
|
||||
|
||||
return str(out), out.get_json(), out.get_md()
|
||||
|
||||
gr.Interface(
|
||||
fn=transcribe,
|
||||
inputs=[
|
||||
gr.Audio(source= "upload", type="filepath", label="Upload Your Audio File",
|
||||
interactive=True),
|
||||
gr.Audio(source= "microphone", type="filepath", label="Record Your Audio",
|
||||
interactive=True, container= False),
|
||||
gr.Number(value=0, label= "Number of speakers (optional)",
|
||||
info = "Number of speakers in the audio file. If you don't know, leave it at 0."),
|
||||
gr.Dropdown(LANGUAGES,
|
||||
label="Language (optional)", value = "None",
|
||||
info="Language of the audio file. If you don't know, leave it at None.")
|
||||
],
|
||||
outputs=[
|
||||
gr.Textbox(label="Transcription"),
|
||||
gr.JSON(label="Raw Output", container= False),
|
||||
],
|
||||
title="Audio Transcription",
|
||||
description="Upload an audio file to transcribe its content. Powered by AutoTranscribe!",
|
||||
theme="soft", # Example of a more modern theme
|
||||
server_port=7860,
|
||||
server_name="autotranscribe",
|
||||
).queue().launch()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
model = AutoTranscribe()
|
||||
gradio_server(model)
|
||||
Reference in New Issue
Block a user