Das openai/whisper-large-v3-turbo Modell von OpenAI ist eine optimierte Version des Whisper large-v3 Modells. Es wurde entwickelt, um die Geschwindigkeit der Transkription erheblich zu verbessern, ohne dabei die Genauigkeit wesentlich zu beeinträchtigen. Im Gegensatz zu seinem Vorgänger verfügt das Turbo-Modell über nur vier Decoder-Schichten, was es deutlich effizienter macht. Dieses Modell ist besonders nützlich für Anwendungen, die schnelle und präzise Spracherkennung erfordern, und es unterstützt eine Vielzahl von Sprachen und Dialekten. Durch die Feinabstimmung auf umfangreiche mehrsprachige Transkriptionsdaten bietet das Whisper-large-v3-turbo Modell eine hervorragende Balance zwischen Leistung und Genauigkeit.
So steht es jedenfalls auf der Huggingface Webseite. Grund genug, das Model mal zu testen und zu prüfen, ob das wirklich so ein Game-Changer ist? Laut der Webseite unterstütz whisper-large-v3-turbo 99 Sprachen. Auf meinem Jetson Orin 64GB Developer Kit habe ich mehr als genug VRAM um das openai/whisper-large-v3-turbo auf der GPU laufen zu lassen.
Darunter auch deutsch. Also teste ich es mal auf deutsch. Für den Test verwende ich die Tonspur des folgenden Youtube Videos von NoCode Reviews.
Der YouTube-Kanal NoCode Reviews beschäftigt sich mit No-Code- und KI-Technologien. Der Kanal bietet Reviews, Tutorials und Neuigkeiten aus der No-Code und KI Welt. Es verschiedene Tools getestet und Erkenntnisse und Erfahrungen auf verständliche Weise erklärt. Besonders spannend finde ich die Projektvorstellungen und die praxisnahen Anleitungen, die sowohl Einsteigern als auch fortgeschrittenen Nutzern helfen.
Das Video ist unter der “Creative Commons-Lizenz mit Quellenangabe (Wiederverwendung erlaubt)”, so dass ich mit der Verwendung auch keine urheberrechtlichen Probleme bekomme, solange ich die Quelle korrekt angebe.
Für den Download des Videos verwende ich yt-dlp.
yt-dlp ist ein leistungsstarkes Kommandozeilen-Tool, das zum Herunterladen von Videos und Audios von einer Vielzahl von Websites verwendet wird. Es ist ein Fork des beliebten youtube-dl Projekts und bietet zahlreiche zusätzliche Funktionen und Verbesserungen. yt-dlp ist kostenlos und quelloffen, und es ist für Windows, Mac und Linux verfügbar.
Der Befehl zum Download der Audio Datei im Wav-Format erfolgt mit dem folgenden Befehl.
yt-dlp https://www.youtube.com/watch?v=hJgS6rbp6SI -x --audio-format wav
Die Datei ist 739MB groß und 16 Bit, Stereo 48000 Hz. Da Whisper aber nur 16000 Hz Mono verarbeiten kann muss das Video noch entsprechend konvertiert werden. Dazu kann man das Tool ffmpeg verwenden.
ffmpeg ist ein leistungsstarkes, quelloffenes Tool zur Aufnahme, Konvertierung und Streaming von Audio- und Videodateien. Es unterstützt eine Vielzahl von Audio- und Video-Codecs und ist vielseitig einsetzbar. Mit ffmpeg kann man beispielsweise Videos in verschiedene Formate umwandeln, Audio extrahieren oder Streams.
Der Bezehl zum Umwandeln lautet wie folgt:
ffmpeg -i Welche\ Webseite\ hat\ den\ besten\ KI-Bildgenerator?\ Ich\ teste\ sie\ ALLE!\ (September\ 2024)\ [hJgS6rbp6SI].wav -acodec pcm_s16le -ac 1 -ar 16000 ki-bildgenerator-16000.wav
Das Ergebnis ist eine Datei, die folgende Eigenschaften hat:
$ file ki-bildgenerator-16000.wav
ki-bildgenerator-16000.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 16000 Hz
Um die Wave Datei zu transkribieren verwende ich das folgende kleine Python Skript (whisper-large-v3-turbo.py):
import time
import torch
from transformers import pipeline
filename = "output.txt"
device = "cuda:0"
model_id = "openai/whisper-large-v3-turbo"
whisper = pipeline(
"automatic-speech-recognition",
model_id,
torch_dtype=torch.float16,
device=device)
start_time = time.time()
transcription = whisper("ki-bildgenerator-16000.wav")
end_time = time.time()
with open(filename, 'w') as file:
file.write(transcription["text"])
print(f"The string has been saved to {filename}.")
execution_time = end_time - start_time
print(f"Execution time: {execution_time:.4f} seconds")
Das Python Skript verwendet die Transformers Pipeline. Die Pipeline-Abstraktion ist ein Wrapper um alle anderen verfügbaren Pipelines. Damit bieten sie eine einfache Möglichkeit, Modelle für verschiedene Aufgaben zu nutzen, ohne sich mit komplexem Code auseinandersetzen zu müssen. Die „automatic-speech-recognition“ (ASR) Pipeline ist ein Ausprügung der Pipeline, das Sprachaufnahmen in geschriebenen Text umwandelt. Damit ist sie besonders nützlich für Anwendungen wie Untertitelung, Spracherkennung in Echtzeit und die Transkription von Interviews oder Meetings. Die „automatic-speech-recognition“ (ASR) Pipeline ist extrem einfach zu implementieren. Die automatic-speech-recognition (ASR) Pipeline kann auch sehr lange Audiodateien verarbeiten, indem sie die Datei in kleinere Segmente aufteilt, ohne dass man sich hier selber darum kümmern muss.
Um das Skript auszuführen, gebe ich folgenden Befehl im Terminal ein.
$ python whisper-large-v3-turbo.py
Nach weniger als 5 Minuten erhalte ich folgende Ausgabe:
The string has been saved to output.txt.
Execution time: 252.1233 seconds
Die „Execution time“ bezieht sich hierbei nur auf den Teil der Transkription. Das laden von openai/whisper-large-v3-turbo und das erzeugen der Datei output.txt wird nicht gemessen, fällt aber auch nicht wirklich ins Gewicht. Vor allem wenn man mehrere WAV Dateien transkribiert, muss das Model ja nur einmal geladen werden und dann kann mehrmals verwendet werden.
Um die Qualität der Transkription einschätzen zu können, habe ich mal das Original Trankript von Youtube heruntergeladen. Auch hier gibt es eine einfache und kostenlose Open-Source Lösung. „youtube_video_and_transcript_downloader„.
Mit WinMerge kann man sich die beiden Textdateien dann direkt miteinander vergleichen.
Wie man sieht gibt es zwischen dem original YouTube Transkript (links) und dem Whisper Transkript (rechts) einige Unterschiede. Alles in allem ist das Transkript von openai/whisper-large-v3-turbo deutlich besser. Es enthält Punkt und Komma und ist besser in Groß- und Kleinschreibung. Außerdem werden Begriffe wie z.B. Midjourney oder Figma von openai/whisper-large-v3-turbo korrekt transkribiert während das original YouTube Transkript hier statt „Midjourney“ „mit journey“ erkennt und statt „Figma-Board“ wird „figm Board“. Auch andere Begriffe wie z.B. Flux-Modell oder Comic-Style werden von openai/whisper-large-v3-turbo deutlich besser erkannt und korrekt transkribiert.
Das vollständige Transkript kann man hier herunterladen.
Fazit
Alles in allem liefert whisper-large-v3-turbo von OpenAI ein echt gutes Transkript und das bei einer echt guten Performance. Auf dem Jetson Orin dauert das Transkribieren der Audio Datei zu dem Video von über einer Stunde Länge nur gerade mal etwas mehr als 4 Minuten. Damit könnte man es sogar für Echtzeitanwendungen nutzen. 👍
Also mal sehen, was für ein Projekt man damit realisieren könnte. Schließlich habe ich noch ein ReSpeaker Mic Array v2.0 herumliegen. Aber das ist eine andere Geschichte ….. 🙂