Spaces:
Runtime error
Runtime error
File size: 3,866 Bytes
6c226f9 8e787d3 6c226f9 d790c0b ec615a5 d790c0b 88183ad ef45b2f 6c226f9 a5bfe25 9d6fa91 ec615a5 6c226f9 3c0cd8e ec615a5 3c0cd8e ec615a5 ef45b2f 6c226f9 ef45b2f 9814301 ec615a5 ef45b2f 6c226f9 3c0cd8e ef45b2f 3c0cd8e 609dcbe 6c226f9 9814301 a5bfe25 ec615a5 ef45b2f ec615a5 6c226f9 7097513 ef45b2f 7097513 6c226f9 34bd5ac a5bfe25 ec615a5 80d9bfc ec615a5 6c226f9 ef45b2f ec615a5 3c0cd8e 6c226f9 ef45b2f 7097513 ef45b2f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
import gradio as gr
import yt_dlp as youtube_dl
from transformers import pipeline
from transformers.pipelines.audio_utils import ffmpeg_read
import tempfile
import os
import time # Hinzugefügtes Modul für die Zeitberechnung
MODEL_NAME = "openai/whisper-large-v3"
BATCH_SIZE = 8
FILE_LIMIT_MB = 1000
YT_LENGTH_LIMIT_S = 3600 # limit to 1 hour YouTube files
device = 0 if torch.cuda.is_available() else "cpu"
pipe = pipeline(
task="automatic-speech-recognition",
model=MODEL_NAME,
chunk_length_s=30,
device=device,
)
def transcribe(inputs, task):
if inputs is None:
raise gr.Error("No audio file submitted! Please upload or record an audio file before submitting your request.")
text = pipe(inputs, batch_size=BATCH_SIZE, generate_kwargs={"task": task}, return_timestamps=True)["text"]
return text
# ... (Fortsetzung des Codes für die Funktionen _return_yt_html_embed, download_yt_audio, yt_transcribe, etc.)
# Schritt 1: Definiere das gr.Blocks-Element für das Layout der Demo
demo = gr.Blocks(theme="TogetherAi/Alex2")
# Schritt 2: Ändere das Layout für das Blockelement auf "centered" und setze die Breite auf 500 Pixel
demo.layout = "centered" # Layout auf "centered" ändern
demo.width = 500 # Breite auf 500 setzen
# Schritt 3: Erstelle die Schnittstellen wie zuvor für Audioaufnahmen, das Hochladen von Audiodateien und das Transkribieren von YouTube-Videos
mf_transcribe = gr.Interface(
fn=transcribe,
inputs=[
gr.inputs.Audio(source="microphone", type="filepath", optional=True),
gr.inputs.Radio(["transcribe", "translate"], label="Task", default="transcribe"),
],
outputs="text",
layout="horizontal",
theme="TogetherAi/Alex2",
title="Whisper Large V3: Audio transkribieren",
description=(
"Transkribiere lange Mikrofon- oder Audioeingaben mit einem Klick! Die Demo verwendet den"
f" Checkpoint [{MODEL_NAME}](https://huggingface.co/{MODEL_NAME}) und 🤗 Transformers, um Audiodateien"
" beliebiger Länge zu transkribieren."
),
allow_flagging="never",
)
file_transcribe = gr.Interface(
fn=transcribe,
inputs=[
gr.inputs.Audio(source="upload", type="filepath", optional=True, label="Audio file"),
gr.inputs.Radio(["transcribe", "translate"], label="Task", default="transcribe"),
],
outputs="text",
layout="horizontal",
theme="TogetherAi/Alex2",
title="Whisper Large V3: Transcribe Audio",
description=(
"Transkribiere lange Mikrofon- oder Audioeingaben mit einem Klick! Die Demo verwendet den"
f" Checkpoint [{MODEL_NAME}](https://huggingface.co/{MODEL_NAME}) und 🤗 Transformers, um Audiodateien"
" beliebiger Länge zu transkribieren."
),
allow_flagging="never",
)
yt_transcribe = gr.Interface(
fn=yt_transcribe,
inputs=[
gr.inputs.Textbox(lines=1, placeholder="Paste the URL to a YouTube video here", label="YouTube URL"),
gr.inputs.Radio(["transcribe", "translate"], label="Task", default="transcribe"),
],
outputs=["html", "text"],
layout="horizontal",
theme="TogetherAi/Alex2",
title="Whisper Large V3: Transcribe YouTube",
description=(
"Transkribiere lange Mikrofon- oder Audioeingaben mit einem Klick! Die Demo verwendet den"
f" Checkpoint [{MODEL_NAME}](https://huggingface.co/{MODEL_NAME}) und 🤗 Transformers, um Audiodateien"
" beliebiger Länge zu transkribieren."
),
allow_flagging="never",
)
# Schritt 4: Erstelle eine TabbedInterface, um die verschiedenen Schnittstellen für Mikrofon, Hochladen von Audiodateien und YouTube-Transkription anzuzeigen
with demo:
gr.TabbedInterface([mf_transcribe, file_transcribe, yt_transcribe], ["Microphone", "Audio file", "YouTube"])
# Schritt 5: Starte die Demo
demo.launch(enable_queue=True)
|