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)