Transskripte aus Audio-Dateien auf dem Mac lokal erstellen
In Anlehnung an den Artikel zum Durchsuchen eurer Transskripte hatte ich versprochen noch zu erklären, wie ich sie auf meinem Mac lokal erstellt habe, als Grundlage für die Transskript-Suche in eurem Podcast.
Hinter der Transkription stecken vier freie, quelloffene Bausteine:
Die 4 Werkzeuge
ffmpeg
Das Schweizer Taschenmesser für Audio. Bringt jede Aufnahme (MP3, M4A, WAV, FLAC …) ins Format, das die Spracherkennung lesen kann.
whisper-cli
Die Spracherkennung (whisper.cpp). Wandelt Gesprochenes in Text um.
large-v3-turbo
Das Sprachmodell, das „Gehirn“ dahinter (≈ 1,5 GB). Kommt auch mit Fachbegriffen, Dialekt und Nebengeräuschen gut zurecht.
Silero VAD
Ein Pausen-Erkenner (≈ 1 MB). Sorgt dafür, dass die Zeitmarken auch bei längeren Sprechpausen genau bleiben.
Die Installation
Voraussetzung ist Homebrew, der Paketmanager für den Mac. Falls noch nicht vorhanden, richtet ihn diese eine Zeile ein:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
ffmpeg und whisper installieren
$ brew install ffmpeg whisper-cpp
Die beiden KI-Modelle als Bestandteil von whisper
# Zielordner anlegen
MODELS="$HOME/Library/Application Support/whisper-cpp/models"
mkdir -p "$MODELS"
# Werkzeug 3 — Sprachmodell large-v3-turbo (~1,5 GB)
curl -L -o "$MODELS/ggml-large-v3-turbo.bin" \
https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-large-v3-turbo.bin
# Werkzeug 4 — Pausen-Modell Silero VAD (~1 MB)
curl -L -o "$MODELS/ggml-silero-v5.1.2.bin" \
https://huggingface.co/ggml-org/whisper-vad/resolve/main/ggml-silero-v5.1.2.bin
Erstellung der vtt Dateien
Audio umwandeln. whisper.cpp liest nur 16-kHz-Mono-WAV. ffmpeg macht das aus jeder Aufnahme:
$ ffmpeg -i interview.mp3 -ar 16000 -ac 1 -c:a pcm_s16le interview.wav
|
-i interview.mp3 |
Eingabedatei (MP3, M4A, FLAC … egal) |
|
-ar 16000 |
Abtastrate auf 16 kHz setzen |
|
-ac 1 |
auf einen Kanal (mono) mischen |
|
-c:a pcm_s16le |
als unkomprimiertes WAV speichern |
Transkribieren und als VTT ausgeben: Jetzt schreibt Whisper die WAV-Datei auf — und legt die WebVTT-Datei direkt daneben:
MODELS="$HOME/Library/Application Support/whisper-cpp/models"
whisper-cli \
-m "$MODELS/ggml-large-v3-turbo.bin" \
-l de \
--vad -vm "$MODELS/ggml-silero-v5.1.2.bin" \
-f interview.wav \
-ovtt -otxt -osrt \
-of interview
|
-m |
…das Sprachmodell (Werkzeug 3) |
|
-l de |
esprochene Sprache Deutsch ( |
|
–vad -vm … |
…Pausen-Erkennung an, mit dem VAD-Modell (Werkzeug 4) — für stimmige Zeitmarken |
|
-f interview.wav |
die WAV-Datei aus Schritt 1 |
|
-ovtt -otxt -osrt |
gewünschte Ausgaben: VTT, Text und SRT (nur VTT? die anderen weglassen) |
|
-of |
Basisname der Ausgabedateien, ohne Endung |
Ergebnis
Neben der Aufnahme liegen anschließend drei Dateien mit demselben Namen — je nach Verwendungszweck:
|
.txt |
reiner Lesetext |
|
.srt |
Untertitel — für Video-Programme und YouTube |
|
.vtt |
Web-Untertitel — z. B. für den Podcast-Player auf der Website |
Mindestens die VTT Datei wirst du zu deinen Audio-Dateien in deinem Podcast-Verzeichnis, dass du bei Podlove eingestellt hast. Und dann sollte der Indexioerung nichts mehr im Wege stehen.
