EchoScript / app.py
usertea
EchoScript : remove typo
586b3e7
Raw
History Blame
2.26 kB
import tempfile
from pathlib import Path
import gradio as gr
from faster_whisper import WhisperModel
MODEL_SIZE = "base"
model = WhisperModel(
MODEL_SIZE,
device="cpu",
compute_type="int8"
)
LANGUAGE_NAMES = {
"fr": "French",
"en": "English",
"de": "German",
"fa": "Persian",
"es": "Spanish",
"it": "Italian",
"pt": "Portuguese",
"nl": "Dutch"
}
def transcribe(audio_file):
if audio_file is None:
return "", "", None
segments, info = model.transcribe(
audio_file,
beam_size=5
)
transcript_lines = []
timestamp_lines = []
for segment in segments:
transcript_lines.append(segment.text)
timestamp_lines.append(
f"[{segment.start:.2f}s ? {segment.end:.2f}s] "
f"{segment.text}"
)
transcript = "\n".join(transcript_lines)
transcript_with_timestamps = "\n".join(
timestamp_lines
)
detected_language = LANGUAGE_NAMES.get(
info.language,
info.language
)
summary = (
f"Detected language: {detected_language}\n"
f"Confidence: {info.language_probability:.2%}"
)
output_file = Path(tempfile.gettempdir()) / "transcript.txt"
with open(
output_file,
"w",
encoding="utf-8"
) as f:
f.write(transcript_with_timestamps)
return (
summary,
transcript,
str(output_file)
)
with gr.Blocks(title="EchoScript") as demo:
gr.Markdown(
"""
# EchoScript
Upload an audio file and automatically
transcribe speech to text.
"""
)
audio_input = gr.Audio(
type="filepath",
label="Upload Audio"
)
transcribe_button = gr.Button(
"Transcribe"
)
language_output = gr.Textbox(
label="Language Information"
)
transcript_output = gr.Textbox(
label="Transcript",
lines=20
)
download_output = gr.File(
label="Download Transcript"
)
transcribe_button.click(
fn=transcribe,
inputs=audio_input,
outputs=[
language_output,
transcript_output,
download_output
]
)
demo.launch()