Lokale automatische Generierung von Untertiteln? AI vielleicht?

Shader schrieb:
Zeiten von Streaming ändern sich die Gegebenheiten wieder, wie bindet man da andere Untertitel ein? K.A.
Was meinst du?
Bei den Anbietern, wie Netflix und co. gar nicht. Die werden von Server geliefert.
Bei Plex und Jellyfin usw., da sind sie entweder im Container oder du kannst sie als extra File, meistens in den gleichen Ordner, packen und der Rest macht die Software.
 
  • Gefällt mir
Reaktionen: Shader
@Shader Wenn ich das richtig verstehe benutzt SubSync die herkömmlichen Methoden Audio zu transkribieren das wiederum dann zum Abgleich genutzt wird mit der untertiteldatei!?
Entsprechen die transkribierungen auch nur annähernd der Qualität die heutige KI Tools liefern?
Und da ist ja noch keine automatische Übersetzung mit dabei oder?

Der Knackpunkt ist ja die Zusammenarbeit der einzelnen Schritte/Tools.

-Zuerst muss ja ein Audio zu Text mitschnitt erfolgen.
Sammt Zeitindex.

-Dann muss dieser mitschnitt in ein lesbares Format gebracht werden. Was meiner Meinung nach erst seit deepl so richtig möglich ist da es zusammenhänge erkennt und aus dem teilweise Kauderwelch (den man zb oft bei automatischen YT transkribierungen beobachten kann) sinnvolle Texte erzeugt.

-Dann muss dieser Text wiederum sinnvoll übersetzt werden.
 
  • Gefällt mir
Reaktionen: Azghul0815
@samuelclemens

SubSync ist simpel, man wählt eine Videodatei (z.B. .mkv) aus, die Sprache und eine Untertiteldatei (.srt).
Dann kann man einstellen wie weit in die Videodatei die Software schauen soll um Offsets zu analyisieren für ein besseres Korrekturergebnis, was bis 120min geht.
Dann klickt man auf Start und bekommt eine neue Untertitel-Datei. Kürzlich für Z for Zachariah z.B. getan, hat vll. insgesamt 3min gedauert und hab bis 100min für die Analyse geschaut. Die neue Untertitelspur war auch gut synchron.

Es erstellt keine neue Sprache oder dergleichen (soll aber angeblich möglich sein), es löst wirklich nur automatisch Offsets zwischen einer Videodatei (z.B. mkv) und Untertiteldatei. Bei einem Film hat's bisher nicht funktioniert aber kann sein das ich beim Analysevorgang zu sehr gespart habe.

Die Anwendung wird jedoch nicht mehr weiter gepflegt und entwickelt, deshalb hab ich auch den Thread gestartet.
 
  • Gefällt mir
Reaktionen: samuelclemens
samuelclemens schrieb:
Naja, eine andere Idee wäre, wie gesagt, das Audio oder Videomaterial in hunderte oder tausende winzige Clips per Client zu zerstückeln, mischen und damit den externen Server füttern. Das Puzzle kann dann nur der eigene Client zusammensetzen.
Stell ich mir schwierig vor. Weil wenn Du irgendein Anbieter nutzen willst, dann muss man sich ja da üblicherweise Registrieren usw. Und das Ganze willst Du dann für hunderte oder gar tausende von Anbietern machen? Die dann auch noch das selbe Protokoll sprechen müssen!
Mal davon abgesehen, das Märkte ja zur Konsolidierung neigen und man am Ende in einem Segment oft nur wenige Player hat.

samuelclemens schrieb:
Mit verschlüsselt meinte ich aber eher das die Files vor und nach der Bearbeitung auf dem Server verschlüsselt gelagert werden. Somit wäre man wenigstens vor Leaks etwas geschützt.
Wenn es auf dem Server verschlüsselt wird, liegt der Schlüssel ja daneben und die Chance das der bei einem Leak mit geleakt wird ist recht hoch.

samuelclemens schrieb:
Natürlich ist es dann immer noch eine Vertrauensfrage zum Betreiber der Server.
Und zwar summiert. Da Du ja in Deiner Idee nicht einem Betreiber vertrauen musst, sondern ganz ganz vielen.
Die sehen dann zwar nur ein Ausschnitt aber der kann ja schon problematisch genug sein. Möglicherweise sogar problematischer als wenn man den Kontext kennt.

Shader schrieb:
Wäre übrigens super, wenn man bei solchen Produktnennungen mal ein Link dran packt. Insbesondere wenns ein eher generischer Begriff ist. Denn wenn man danach sucht, findet man sehr viele Ergebnisse die auch nicht wirklich was miteinander zu tun haben.
 
So hat lange gedauert aber wie vorgeschlagen habe ich Whisper probiert. Hier meine Erfahrung auf Manjaro Linux. Vielleicht hilft es anderen.

Welches Whisper?
Auf Linux hat man die Qual die Wahl, unter Arch als AUR oder doch direkt via Phython?
Wenn man einmal die Quelle eingeschränkt hat stellt sich dann die Wahl welche Variante?

Ich habe mich für das "Reine" whsiper.cpp entschieden, ohne Cuda und auch nicht "whisper-ctranslate2"
Warum? Ich habe eine Radeon RX6900 XT Grafikkarte, ctranslate2 oder jene mit Cuda fallen da weg.

whisper_variants.png


Das Bauen von whisper.cpp ging zügig.

Mein Testobjekt
Herhalten musste "Day of the Dead" DVD aus dem Jahr 2008. Opensubtitles und co bot Untertitel aber nur mit 23,98fps und nicht 25fps. Diese waren waren einfach nicht vernünftig auf meine PAL Version "umbieggbar" und meilenweit vom Timing entfernt. Meiner Erfahrung immer so bei Horrorfilmen.

Testlauf 1
Klar zuerst mit ffmpeg ein Ausschnitt aus der DVD gefertigt um mit einer kleinen Menge zu sehen wie gut es funktioniert.

Code:
ffmpeg -i DOD.mkv -ss 00:00:00 -t 00:03:00 -c copy AITest.mkv

Dann hat meine (Gemini) Recherche gezeigt whisper braucht natürlich kein Video, Audio reicht.
Also mit ffmpeg vom Ausschnitt eine Audiodatei erstellt:

Code:
ffmpeg -i "AITest.mkv" -vn -ar 16000 -ac 1 -c:a pcm_s16le "audio_for_ai.wav"

Da ich whisper ohne jegliche "vorgefertigte" Modellvariante genommen habe, habe ich mir diese Modelle über den Commandline dann heruntergeladen. Achte, wo man in der Kommendozeile gerade ist (also ~, oder / oder sonswto) dort wird das Modell dann auch abgelegt:
Code:
Modell: large-v3
wget https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-large-v3.bin

Modell: large-v2
wget https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-large-v2.bin

Und der krönende Abschluss: Die Generierung

Code:
whisper-cli -m ~/Documents/ggml-large-v3.bin -f "audio_for_ai.wav" -pp -osrt -l en

Erfahrung: Am Anfang Freude, die Testdatei wurde tadellos bearbeitet. Mit dem ganzen Film kommt Ernüchterung, das Modell läuft zeitnah in ein Loop.


whisper_loop.png


Optimiereung
Klar ich habe dann Gemini AI gefragt was kann man tun. Gemini sagt mir Day of the Dead hat viel Rauschen, analoge Effekte, das Gesprochene ist sehr im Hintergrund.

large-v3 ist besser wenn man auch mit anderen Sprachen als nur Englisch hantiert, genauer und sensibler aber schlecht bei alten Audiomaterial.

Ich brauche nur Englisch, also

Testlauf 2 mit v2 Modell


Code:
whisper-cli -m ~/Documents/ggml-large-v2.bin -f "audio_for_ai.wav" -pp -osrt -l en

Erfolg! Lief durch ohne Loops und das Ergebnis war erstaunlich gut.
Hier vom ganzen Film ein Ausschnitt:

whisper_v2_result.png


Testlauf 3 - Audiooptimierun und neuer Versuch mit Modell v3

ffmpeg ist mächtig und kann natürlich bei der Audioextrahierung Dinge verbessern, sagt Gemini und gab mir diesen Befehl:

Code:
ffmpeg -i "DOD.mkv" -vn -ar 16000 -ac 1 -c:a pcm_s16le \
-af "highpass=f=200, lowpass=f=3500, afftdn, dynaudnorm" \
"audio_for_ai.wav"

Ergebnis?
v3 war besser und lief länger aber halluzinierte dann trotzdem.

Testlauf 4 - Die ultimative Waffe? Whisper mit einem extra "Voice Activity Detection" (VAD) Modell
VAD ist ein Filter und fokussiert sich auf Gesprochenes. Laut Gemini genau das Werkzeug um Dinge wie (coughs) nicht in der Untertiteldatei zu haben.

Code:
whisper-cli -m ~/Documents/ggml-large-v3.bin -f "audio_for_ai.wav" -osrt -l en \
--vad \
--vad-model ~/Documents/ggml-silero-v6.2.0.bin \
--vad-threshold 0.1 \
--vad-min-speech-duration-ms 10

Tatsächlich musste ich mit dem vad-treshold mächtig herumprobieren bis whisper von VAD Material bekommen hat. Und ja 0.1, der niedrigste Wert war schlussendlich nur brauchbar.

Ergebnis?
v3 lief durch und Dinge wie "(coughs)" gabs nicht mehr. :) Aber manch Dialoge wurden nicht erfasst und viel kritischer, die Timings waren off!

Trotzdem war das ein netter Test, VAD macht wohl eher mehr Sinn für Live-Captions in schlechter Umgebung und Gemini hat vielleicht etwas halluziniert wie man "(coughs)" und so nicht in der Untertiteldatei bekommt und trotzdem synchron zum Film bleibt oder die Audiodatei war noch immer zu schlecht für die Kombi.

Fazit
Testlauf 2 hat das beste Ergebnis geliefert. Schon ohne optimiertes Audio! :)

Übrigens viel Zeit brauchte whisper nicht um durch den Film zu laufen.

Den Film konnte ich dann tadellos mit den AI generierten Untertitel auf mein neustes Spielzeug, ein Zidoo Z9X 8K Mediaplayer genießen.
Übrigens, mit Medium AI Enhancements des Geräts wurde der Film quasi auf ca. Netflix 1080p Streamingniveau gehoben, ich konnte die Qualität nicht fassen!
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Marco01_809
Zurück
Oben