Stammtisch 2024-12-06
06.12.2024 - 20:00 Uhr, Online-Stammtisch auf https://bbb.ch-open.ch/rooms/ulf-nm2-y26/join
wöchentlicher Online-Stammtisch
Auf dem Stammtisch Mai 2020 beschlossener wöchentlicher Stammtisch jeden Freitag ab 20:00 Uhr anstelle des monatlichen Stammtisches im realen Leben.
Anwesende
- Holger
- Ulf
- Plocki
- Bertram
Themen
Zeitstempel für Audiodateien erstellen und auf Homepage anbieten
Holger hat schon seit Jahren vor, die Audiodateien seiner Homepage Audio-Bibel NeÜ so zu bearbeiten, dass man sie nicht nur kapitelweise, sondern auch versweise abspielen kann.
Dazu muss aber erst mal ein Zeitstempel hinterlegt werden [Datei anhören, Zeit notieren, wenn Übergang von Vers 1 zu Vers 2 usw. und dies in einer (zum Beispiel) RSS-Datei hinterlegen].
Ulf hilft Holger, erst mal Tools zu finden – und auch eine Vorgehensweise zu überdenken, um dies dann dem interessierten Hörer anzubieten –; so könnte man zum Beispiel die Audiodateien auch über einen Podcast anbieten, dort die Suchfunktion nutzen, um dann ganz konkret in ein bestimmtes Buch, dort in ein bestimmtes Kapitel und dort wiederum zu einem (oder mehreren auzuwählenden) Vers(en) springen.
Hier findet sich eine Liste der in Frage kommenden Programme / Vorgehensweisen:
- mp3tag.de Community – Kapitelmarkierungen zu Audio- und Videodateien hinzufügen
- Wikihow.com: In Audacity Track-Marker einfügen --> wenig hilfreich, da Audacity-Version unbekannt und die beschriebene Vorgehensweise nur schwer nachvollzogen werden kann
- Podcaster.de Einfügen von Kapitelmarken
- forecast.fm – MP3 encoder with chapters --> wenig hilfreich; die empfohlene Anwendung läuft nur auf MacOS
- gnulinux.ch – Kapitelmarken im Podcast mit mp3chaps
- Das Kid3-Handbuch --> "Kid3" ist ein Editor für die Metadaten von Audiodateien (es gibt noch andere, zum Beispiel NTag, oder auch Wikipedia: Tag-Editor. Oder einfach die Suchmaschine bemühen ...
- Ulf empfiehlt Holger zunächst den Metadaten-Editor Kid3 grafisch über den "Discover" (Softwareverwaltungstool unter openSUSE) zu installieren, was Holger umsetzt, während er seinen Bildschirm teilt.
- Danach installiert Holger über die Konsole die Anwendung mp3chaps, was sich für ihn nicht ganz einfach gestaltet.
<$> pipx install mp3chaps.
INFO ubuntuusers.de: pipx – Installation und Benutzung ist ein Hilfsprogramm, mit dem Python-Module, welche ausführbare Programme enthalten, installiert werden können.
Die pipx-Befehle werden ohne vorangestellten "sudo" (Systemadministrator) ausgeführt. Hier findet sich noch die Hilfe zu pipx:pipx --help
Das Programm 'pipx' kann in den folgenden Paketen gefunden werden: * python310-pipx [ Pfad: /usr/bin/pipx, Repository: base-oss ] * python311-pipx [ Pfad: /usr/bin/pipx, Repository: base-oss ] * python312-pipx [ Pfad: /usr/bin/pipx, Repository: base-oss ]
Wie wir der Konsolenausgabe entnehmen, werden drei verschiedene Repositorys für pipx angeboten; auf Ulfs Empfehlung wählt Holger das mittlere (phython311-pipx).
<$> sudo zypper in python311-pipx
Unter Holgers openSUSE Tumbleweed-Slowroll werden "automatisch" die argcomplete-Pakete mit installiert, welche beim Nutzen der Tab-Taste die Auto-Vervollständigungs-Funktion im pipx-Paket mit einbauen.
Nun kann das Paket mp3chaps installiert werden.
<$> pipx install mp3chaps
Und jetzt noch dem System erlauben, auf die ausführbaren Skripte (werden als symbolischer Link abgelegt) zuzugreifen
<$> python3 -m pipx ensurepath
Laut Ubuntuusers.de sollte man sich noch aus- und wieder einloggen; bei Holger hat es auch ohne Ab- und Anmeldung funktioniert.
Was pipx nun tut, erfahrt Ihr, wenn Ihr den obigem Link von ubuntuusers.de unter der Überschrift "Benutzung" nachlest.
In Holgers Fall (es war ein anderer Pfad vorangegeben) musste noch Handarbeit geleistet werden; über den Joe-Editor musste in der Datei '~/.bashrc
noch der Pfad verändert werden und die Autovervollständigung (python-argcomplete) für pipx hinterlegt werden:
<$> ~> joe ~/.bashrc ^K I A ~/.bashrc (Modified)(conf) Row 30 Col 1 # Sample .bashrc ['rc steht (vermutlich) für 'resource' = Systemdateien werden beim Start eines Terminals verändert] # Copyright (c) SUSE Software Solutions Germany GmbH # There are 3 different types of shells in bash: the login shell, normal shell # and interactive shell. Login shells read ~/.profile and interactive shells # read ~/.bashrc; in our setup, /etc/profile sources ~/.bashrc - thus all # settings made here will also take effect in a login shell. # # NOTE: It is recommended to make language settings in ~/.profile rather than # here, since multilingual X sessions would not work properly if LANG is over- # ridden in every subshell. #Include local und sik Linux/Skripte/ path test -d ${Linux/Skripte} && test $(echo ${PATH} | grep ${Linux/Skripte}) || export PATH=${PATH}:${LinuxScripte} # change dir alias dir="ls -ahl" test -s ~/.alias && . ~/.alias || true export EDITOR=/usr/bin/joe echo "Holgers Willkommenstext bei Konsolenöffnung" # Created by `pipx` on 2024-12-06 20:28:59 export PATH="$PATH:/home/holger/.local/bin" eval "$(register-python-argcomplete pipx)"
Die Änderungen an der Datei werden mit <Strg> + <C> und einem darauf folgenden <X> und durch Drücken der "N"-Taste ("N" für nein, Dateiänderungen akzeptieren) übernommen.
Holger muss jetzt erst mal alles in Ruhe sichten und dann einen Plan machen und experimentieren, wie genau er denn vorgehen wird. Er wird vermutlich als erstes
- eine RSS-Datei erstellen, in dem neben Buchtitel, Kapitel- und Versauswahl (mit Zeitstempel im Format hh:mm:sss) auch noch weitere Meta-Infos (wie Author, Link zur Webseite, Copyright, Textstand und Aufnahmedatum, etc.) aufgeführt werden; quasi ein "Inhaltsverzeichnis".
- schauen, mit welchem Tag-Editor er arbeiten wird
Eins ist klar: die 66 Bücher der Bibel mit ihren (ungefähr) knapp 1.200 Kapiteln und (ungefähr – je nach Bibelübersetzung – über 31.000 Versen in den Audiodateien versweise mit einem Zeitmarker zu versehen, dauert eine Weile ...
Fortschritte beim Zeichnen mit "Krita" übers Zeichentablett
Bertram entwickelt immer mehr Begeisterung beim Zeichnen mit seinem Grafiktablett und dem Zeichenprogramm Krita. Folgendes hat er festgestellt:
- das Verringern (in den Einstellungen) der Stiftgeschwindigkeit ermöglicht "flüssigeres" Zeichen (weniger krakelig); standardmäßig ist die Stiftgeschwindigkeit auf 30 px / ms (30 Pixel je Millisekunde) eingestellt. Bertram hat sie auf das Minimum von 1 px / ms reduziert.
- die Funktion "Ausfüllen" (kolorieren) spart viel Zeit
Bertram demonstriert seine Erfolge mit dem Zeichenprogramm "Krita" per Bildschirmfreigabe. Die sind wirklich sehr ansehnlich geworden!
Installation von Whisper (von OpenAI) auf openSUSE über die Konsole
<! -- Whisper (OpenAI), Spracherkennung, Transkription, Whisper (Flatpak), Google-Speech-To-Text-Alternative, Alternative Spracherkennungssoftware --> Holger moniert, dass sein Whisper nicht läuft; es erscheint nur ein Fenster, in dem Mikrofoneingang und Lautsprecherausgang gewählt werden können. Aber wie die Anwendung dann genutzt werden kann, erschließt sich Holger nicht.
Ulf weist darauf hin, dass es sich hier – bei Holgers Whisper von Flathub nicht um das (schon von Bertram installierte und genutzte Whisper openAI handelt. Das von Holger zuvor über die Softwareverwaltung "Discover" grafisch installierte Tool (auszugsweises Zitat aus dem Englischen übersetzt):
... erlaubt es, über die Lautsprecherausgänge die Mikrofoneingabe zu hören, um zum Beispiel das Mic zu testen, oder die eigene Stimme zu hören ...
Mehr aber auch nicht. Holger hat also das falsche "Whisper" installiert.
Das von Bertram schon genutzte Whisper (von) OpenAI dagegen ermöglicht es, gesprochene Sprache zu erkennen und in eine Textdatei zu speichern – dabei kann der Text nicht nur erkannt und als Textdatei gespeichert werden, sondern sogar auch noch in eine andere Sprache übersetzt werden (z. B. deutsches Audio wird in englischen Text übersetzt und als Textdatei gespeichert). Und das wäre für Holger ein Anwendungsfall. Entweder die von ihm produzierten Schulungsvideos mit deutschen Untertiteln unterlegen, oder für englischsprachig Interessierte diese mit auf Englisch übersetzten Untertiteln anzubieten.
So wird Whisper openAI über die Konsole (ohne "sudo" – wie bei dem Artikel weiter oben Installation mp3chaps beschrieben – mit dem Hilfsprogramm pipx installiert:
<$>pipx install openai-whisper
- Jetzt wähle in Deinem Dateimanager – idealerweise Dolphin (KDE-Desktop ist Voraussetzung) – die zu transkribierende Audio-Datei (oder auch Videodatei) aus und öffne im Dateimanager (im Dolphin per Tastaturkürzel <F4>) die Konsole; das sieht in der Konsole des Dateimanagers dann so aus:
<$>PFAD/Audioverzeichnis
- Als nächstes tippe den Befehl "whisper" in die letzte Zeile der Konsole
<$>PFAD/Audioverzeichnis whisper
- Nun ziehe mit der Maus (Drag & Drop) die zu bearbeitende Datei einfach runter in die Konsole hinter den Befehl "whisper"; das sieht dann so aus:
<$>PFAD/Audioverzeichnis whisper /Audiofile.mp3
- Man kann nun noch auswählen, mit welchem der fünf Sprachmodelle man arbeiten möchte (siehe Box unten); wir entscheiden uns für das beste (und größte und damit auch langsamste) Sprachmodell large, was so aussieht:
<$>PFAD/Audioverzeichnis whisper Audiofile.mp3 --model large
Nun wird die die Audiodatei untersucht, nachdem (automatisch die Sprache Deutsch für die zu erstellende Textdatei gewählt wurde – innerhalb von 30 Sekunden kann man mit einem angehängten --language german (oder english, etc.)
die Sprache noch ändern.
Whisper erkennt nun satzweise den gesprochenen Text und erstellt (zunächst auf der Konsole) verschiedenen Textdateien in den Formaten .txt, jason,
So sieht das dann aus:
user@linux:~/PFAD/Audioverzeichnis> whisper /PFAD/Audioverzeichnis/MatthaeusKapitel01.mp3 --model large /home/user/.local/share/pipx/venvs/openai-whisper/lib64/python3.11/site-packages/whisper/__init__.py:150: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature. checkpoint = torch.load(fp, map_location=device) /home/user/.local/share/pipx/venvs/openai-whisper/lib64/python3.11/site-packages/whisper/transcribe.py:126: UserWarning: FP16 is not supported on CPU; using FP32 instead warnings.warn("FP16 is not supported on CPU; using FP32 instead") Detecting language using up to the first 30 seconds. Use `--language` to specify the language Detected language: German [00:00.000 --> 00:15.480] das evangelium nach matthäus kapitel 1 buch des ursprungs von jesus christus dem nachkommen von [00:15.480 --> 00:26.820] könig david und dem stammvater abraham abraham wurde der vater von isaak isaak der vater von [00:26.820 --> 00:37.200] jakob und jakob der vater von juda und seinen brüdern juda wurde der vater von peres und serach [00:37.200 --> 00:48.600] ihre mutter war tamar peres wurde der vater von hetzen (statt Hezron) und hetzen der von rahmen (statt Raman) wurde [00:48.600 --> 00:56.520] der vater von amina dab (statt Aminadab) amina dab von nach schon (statt Nachschon) nach schon von salmon ...
Wie man sieht, wird in der Konsole weder Großschreibung, noch Satzzeichen beachtet. Außerdem ist die Erkennung der biblischen (hebräischen) Namen sehr dürftig; im Sprachmodell "small" war es meiner Erinnerung nach sogar besser. Das muss ich noch austesten; den Stammbaum mit extrem vielen hebräischen Namen zu wählen, war wohl nichts das Schlaueste.
Später bemerkt Holger, dass auf einmal doch die Groß- und Kleinschreibung beachtet wird. Mittendrin hatte er im Dolphin-Dateimanager die Taste <F5> gedrückt (für Refresh); ob das "geholfen" hat?
Allerdings hat Holger es nach der obigen – in seinen Augen recht schlechten Transkription – mit dem "schlechteren" Sprachmodell small versucht. Danach war die Ausgabe fast fehlerfrei (Groß- und Kleinschreibung korrekt, Satzzeichen gesetzt, die biblischen Namen relativ gut erkannt (allerdings scheint Whisper OpenAI auf die englische Schreibweise der Namen zurückzugreifen). Und der Vorgang lief nun deutlich (!) schneller ab.
Die Transkription mit dem Sprachmodell klein (small) sah dann (in der Konsole des Dolphin) so aus:
<$> whisper /home/user/PFAD/Audioverzeichnis/MatthaeusKapitel01.mp3 --model small 100%|███████████████████████████████████████| 461M/461M [00:40<00:00, 11.9MiB/s] /home/holger/.local/share/pipx/venvs/openai-whisper/lib64/python3.11/site-packages/whisper/__init__.py:150: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature. checkpoint = torch.load(fp, map_location=device) /home/user/.local/share/pipx/venvs/openai-whisper/lib64/python3.11/site-packages/whisper/transcribe.py:126: UserWarning: FP16 is not supported on CPU; using FP32 instead warnings.warn("FP16 is not supported on CPU; using FP32 instead") Detecting language using up to the first 30 seconds. Use `--language` to specify the language Detected language: German [00:00.000 --> 00:06.380] Das Evangelium nach Matthäus. [00:06.380 --> 00:10.380] Kapitel 1 [00:10.380 --> 00:18.620] Buch des Ursprungs von Jesus Christus, dem Nachkommen von König David und dem Stammvater [00:18.620 --> 00:21.220] Abraham [00:21.220 --> 00:33.560] Abraham wurde der Vater von Isaac, Isaac der Vater von Jakob und Jakob der Vater von Juda und seinen Brüdern. [00:33.560 --> 00:41.000] Juda wurde der Vater von Peres und Serach, ihre Mutter war Tamar. [00:41.000 --> 00:47.720] Peres wurde der Vater von Hetzron und Hetzron der von Rahm. [00:47.720 --> 00:58.620] Rahm wurde der Vater von Aminadab, Aminadab von Nachschon, Nachschon von Salmon. [00:58.620 --> 01:05.060] Salmon wurde der Vater von Boaz, die Mutter war Rahab. [01:05.060 --> 01:11.540] Boaz wurde der Vater von Obed, die Mutter war Ruth. [01:11.540 --> 01:19.400] Obed wurde der Vater von Isai und Isai der von König David. [01:19.400 --> 01:27.320] David wurde der Vater von Salomo, die Mutter war Uriyas Frau. [01:27.320 --> 01:51.580] Salomo wurde der Vater von Rehabiam, Rehabiam der von Abiyah, Abiyah der von Asa, Asa der von Yosaphat, Yosaphat der von Yoram, Yoram der von Ussia, Ussia der von Yotam, [01:51.580 --> 01:58.440] Yotam der von Ahas, Ahas der von Hiskia. [01:58.440 --> 02:09.200] Hiskia wurde der Vater von Manasse, Manasse der von Amon, Amon der von Yosia. [02:09.200 --> 02:16.640] Yosia wurde der Vater von Joachim und seinen Brüdern. [02:16.660 --> 02:22.860] Damals wurde das Volk in die Verbanung nach Babylon geführt. [02:22.860 --> 02:45.980] Danach wurde Joachim der Vater von Shealtiel, Shealtiel der von Serubbabel, Serubbabel der von Abihud, Abihud der von El Yaqim, El Yaqim der von Azor, Azor der von Zadok. [02:45.980 --> 02:52.600] Zadok der von Achim, Achim der von Eliud. [02:52.600 --> 03:03.400] Eliud der von Eliassar, Eliassar der von Matan, Matan der von Jakob. [03:03.400 --> 03:08.840] Jakob wurde der Vater von Josef, dem Mann der Maria. [03:08.840 --> 03:15.080] Sie wurde die Mutter von Jesus, der auch Messias genannt wird. [03:15.080 --> 03:20.980] Insgesamt sind es also von Abraham bis David 14 Generationen. [03:20.980 --> 03:34.020] Von David bis zum Beginn der Verbanung nach Babylon 14 und von da an bis zu Messias noch einmal 14 Generationen. [03:34.020 --> 03:41.260] Es folgt die Geschichte der Geburt von Jesus, dem Messias. [03:41.400 --> 03:46.480] Seine Mutter, Maria, war mit Josef verlobt. [03:46.480 --> 03:55.080] Das stellte sich heraus, dass Maria ein Kind erwartete, obwohl sie noch nicht miteinander geschlafen hatten. [03:55.080 --> 03:59.840] Sie war durch den heiligen Geist schwanger geworden. [03:59.840 --> 04:13.940] Josef, der schon als er Ehemann galt und ein aufrechter Mann war, nahm sich vor, den Ehevertrag stillschweigend rückgängig zu machen, um sie nicht zum Gespött werden zu lassen. [04:13.940 --> 04:21.300] Während er noch darüber nachdachte, erschien ihm ein Engel des Herrn im Traum. [04:22.280 --> 04:39.780] Josef, sagte er, du Sohn Davids, zögere nicht, Maria, als deine Frau öffentlich zu dir zu holen, denn das Kind, das sie erwartet, wurde vom heiligen Geist gezeugt. [04:40.100 --> 04:51.660] Sie wird einen Sohn zur Welt bringen, den du, Jesus, Retter nennen sollst, denn er wird sein Volk von seinen Sünden erretten. [04:51.660 --> 05:00.520] Das alles ist geschehen, damit in Erfüllung geht, was der Herr durch den Propheten angekündigt hat. [05:00.520 --> 05:11.480] Sieht, das unberührte Mädchen wird schwanger sein und einen Sohn zur Welt bringen, man wird ihn Immanuel nennen. [05:11.480 --> 05:16.860] Immanuel bedeutet, Gott ist mit uns. [05:16.860 --> 05:25.480] Als Josef aufwachte, tat er, was der Engel des Herrn ihm gesagt hatte und holte seine Frau zu sich. [05:25.480 --> 05:35.340] Doch hatte er keine geschlechtliche Gemeinschaft mit ihr, bis sie ihren Sohn geboren, und er ihm den Namen Jesus gegeben hatte. user@linux:~/PFAD/Audioverzeichnis/Matthaeus_mp3>
Das sieht doch schon ganz anders aus!
Hier noch die verfügbaren Sprachmodelle in Whisper OpenAI (Stand: Dezember 2024):
Sprachmodell | Größe in MiB |
winzig (tiny) | ca. 40 |
basis (base) | ca. 70 |
klein (small) | ca. 250 |
normal (medium) | ca. 750 |
gross (large) | ca. 1.500 |
Zurück zur Übersicht