Danke für die Antwort.
Jetzt stellt sich mir aber die Frage, wie kommt der Audio-Stream in die KI?
Eine Lösung die mir einfallen würde, wäre mit einem Python-Script Sprachsignal aufnehmen und als Wav auf die Platte schreiben und dann via Script das Wav Signal an das Modell senden. Aber ich vermute stark, dass es da einen viel einfacheren Workflow gibt.
Danke für den Link. Ich hatte den erst etwas unterschätzt, weil er auf "issues" zeigt.
Mittlerweile ist klar, warum man in Zukunft einen Glasfaseranschluss braucht: Im Testscript wird das 16GB Google-Gemma-Modell gezogen und da muss man erst mal eine halbe Stunde warten.
Leider scheint auch meine Graphikarte für das Modell zu klein:
1
File "~/venv/ch/lib/python3.12/site-packages/transformers/core_model_loading.py", line 794, in _materialize_copy
2
tensor = tensor.to(device=device, dtype=dtype)
3
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4
torch.OutOfMemoryError: CUDA out of memory. Tried to allocate 5.25 GiB. GPU 0 has a total capacity of 7.52 GiB of which 921.12 MiB is free. Including non-PyTorch memory, this process has 6.44 GiB memory in use. Of the allocated memory 1.83 GiB is allocated by PyTorch, and 4.50 GiB is reserved by PyTorch but unallocated.
Mittlerweile ist klar, warum man in Zukunft einen Glasfaseranschluss
braucht: Im Testscript wird das 16GB Google-Gemma-Modell gezogen und da
muss man erst mal eine halbe Stunde warten.
Herrje, wie haben wir damals Linux installieren können obwohl uns nur ein lausiges 56k Modem zur Verfügung stand ... SCNR
[00:00.000 --> 00:03.000] Mal eine Frage, wie wird das Wetter heute?
Ich vermute, es wird jedesmal das Modell neu geladen, wenn man whisper per Kommandozeile startet. Es muss also eine Möglichkeit geben, das Ding resident im Speicher zu halten und die Wav-Junks hin zu schicken.
Damit komme ich mit meinem i5-7300 (2600MHz) auf rund 75% "Echtzeitgeschwindigkeit" im Batch mode, d.h. für 4min Sample braucht er ca. 6min zum konvertieren in Text. Für meine Zwecke war das bis jetzt ausreichend. Für die Nachbearbeitung habe ich mir ein Perl-Script geschrieben, welches die json in eine RTF Datei umwandelt, mit farbig hinterlegtem Text wenn wählbare Wahrscheinlichkeitsgrenzen unterschritten werden und Absätzen bei Sprechpausen.
Whisper-Ctranlate2 hat auch einen Live-Modus, mit dem man das zumindest testen kann.
Mit Vulkan auf der 9070 ca 20x Realtime mit dem base.en Model
Mit large-v3 3.3x Realtime
Mit large-v3-turbo 14x realtime
Nochmal Gemma. Diesmal mit mmproj-F32 ... macht irgendwie auch keinen Qualitätsunterschied. Wahrscheinlich ist das Lied durch die Trainingsdaten verbrannt. Ich hab nochmal ein anderes probiert.
Sowieso sind die Modelle jetzt nicht unbedingt auf Lieder trainiert. IMO ein Härtetest.
Sowieso sind die Modelle jetzt nicht unbedingt auf Lieder trainiert. IMO
ein Härtetest.
Danke für Deine Hinweise. Meine Spracherkennung muss allerdings gut bei der Erkennung der deutschen Sprache sein. Naturgemäß scheint es viel mehr englschsprachige Spracherkenner zu geben und vielleicht funktionieren die bei Englisch auch besser.
Sowieso sind die Modelle jetzt nicht unbedingt auf Lieder trainiert. IMO
ein Härtetest.
Speechrecognition ist eben ein zu harten Job für die Maschine, selbst ein Mensch, der gut zuhören kann, schafft das nur bei eingeschränkten Kontext.
IMHO könnte das in einem face2facesetting (Einschluss der non-verbalen KOmmunikation (bspw. Minenspiel)) besser laufen.
Und hier in diesem thread wird das auf simple Installation eines vorgefertigt-generischen Softwarepaketes reduziert, keinerlei Anpassung der Audioaufzeichnung auf menschliches Sprachgehör (bspw. Bandbreitenbeschränkung auf 4kHz, Equalizer, Richtmikrofon, ...) das kann IMHO nur bescheiden enden.
Vielleicht als Zwischenschritt sich an einer Konversion Bärndütsch (Bern deutsch, Schweiz) -> Hochdeutsch versuchen, da braucht es kaum Sprachverständniss, fast nur Phonemanpassung.
Ich hatte gestern das normale Whisper an ein Python-Script gehängt.
Nach ziemlich langem probieren hat es dann geklappt. Die Schwierigkeit war, die device-ID des Microphons zu finden und das Script lief nicht an, weil die Samplerate des Microphon im Script exakt stimmen muss. Obwohl die Samplerate des Treibers 48kHz angezeigt hatte, war das falsch und man muss 16kHz einstellen.
Mit dem Sript kann man theoretisch eine Art "Alexa" bauen, mit der man dann das Licht steuern könnte.
Im Moment ist die Spracherkennung auf Deutsch eingestellt und es wird das Wort "Ende" erkannt, damit ich das Script per Sprachbefehl beenden kann:
Im Moment ist die Spracherkennung auf Deutsch eingestellt und es wird
das Wort "Ende" erkannt, damit ich das Script per Sprachbefehl beenden
kann:
Na wenn da ende nicht mit "Spende", "Gelände" oder anderen auf "-ende" endenden Wörter verwechselt wird.
In der Funkkommunikation gibt es xtra vereinbarte Terminierungsworte/-phrasen (Bspw.: "Over", "Over and Out", "Конец передачи") und Bestätigung desselben ("Roger that", "Copy that").
Halt Kontext-sensetiv.
Da fragt man sich allerdings was aus dem guten, alten
›if txt.count("Ende.")‹
geworden ist. PEP würde sich freuen, wenn es nicht völlig in Vergessenheit geräte.
Da fragt man sich allerdings was aus dem guten, alten
›if txt.count("Ende.")‹
geworden ist. PEP würde sich freuen, wenn es nicht völlig in
Vergessenheit geräte.
Wenn man bei Whisper (medium) "Ende" sagt, erzeugt es den Text "Ende.". Es scheint also das Wort schon irgendwie zu interpretieren und vielleicht gibt es da eine Verbindung zu deinem Text oben.
"Ende." als Programmtermination zu nutzen, ist natürlich schon "Murks". Ich fand es aber lustig, das mal so zu machen, weil dadurch quasi eine echte Aktion durch das Sprechen ausgelöst wird.
Da fragt man sich allerdings was aus dem guten, alten
›if txt.count("Ende.")‹
geworden ist. PEP würde sich freuen, wenn es nicht völlig in
Vergessenheit geräte.
Wenn man bei Whisper (medium) "Ende" sagt, erzeugt es den Text "Ende.".
Es scheint also das Wort schon irgendwie zu interpretieren und
vielleicht gibt es da eine Verbindung zu deinem Text oben.
"Ende." als Programmtermination zu nutzen, ist natürlich schon "Murks".
Ich fand es aber lustig, das mal so zu machen, weil dadurch quasi eine
echte Aktion durch das Sprechen ausgelöst wird.
Diktiersoftware für den PC war schon in Windows Vista, also vor ca. 20 Jahren integriert, nur wussten das die meisten PC-Nutzer gar nicht.
Und schon vor circa 30 Jahren konnte man "Dragon Natural Speaking" für Windows kaufen.
Manche Übersetzer haben das schon damals eingesetzt. Problem: Man muss druckreif formuliert sprechen können, sonst frisst die Zeit für Änderungen/Verbesserungen die durch das Diktieren (statt Tippen) ersparte Zeit auf.
Wenn ich das richtig interpretiere, sollten die kleinen gemma4 Modelle
Spracherkennung können (siehe Zeile Audio):
Wenn Ollama keine API/Interface dazu bereitstellt, hilft es nichts wenn das Modell Audio könnte.
Du kannst das gemma4-Modell z.B. über PyTorch nutzen, da geht das.
Evtl. auch, wenn du direkt llama.cpp nutzt, ohne die Ollama-Abstraktionsschicht außenherum.
Aber die schreiben "Audio is highly experimental and may have reduced quality."
Bisweilen fängt das Modell aber an zu Halluzinieren und gibt so was von sich:
1
→ Ich bin ein bisschen schlau, aber ich bin auch ein bisschen schlau. Ich bin ein bisschen schlau, aber ich bin auch ein bisschen schlau. Ich bin ein bisschen schlau, aber ich bin auch ein bisschen schlau. Ich bin ein bisschen schlau, aber ich bin auch ein bisschen schlau. Ich bin ein bisschen schlau, aber ich bin auch ein bisschen schlau. Ich bin ein bisschen schlau, aber ich bin auch ein bisschen schlau. Ich bin ein bisschen schlau, aber ich bin auch ein bisschen schlau. Ich bin ein bisschen schlau, aber ich bin auch ein bisschen schlau. Ich bin ein bisschen schlau, aber ich bin auch ein bisschen schlau.
Diktiersoftware für den PC war schon in Windows Vista, also vor ca. 20
Jahren integriert, nur wussten das die meisten PC-Nutzer gar nicht.
Und schon vor circa 30 Jahren konnte man "Dragon Natural Speaking" für
Windows kaufen.
Mit dem kleinen Unterschied, das die (und andere) nur dann halbwegs funktionierten (meist als Sekretärinnen-Ersatz um lange Texte zu diktieren), wenn man vorher ein aufwändiges Training bzw. Anlernen absolvierte. Dazu präsentierte die Software Texte, die man wieder und wieder vorlesen musste. Super Mikrofon, keine Nebengräusche und immer die gleiche Art zu Sprechen, nix heiser sein oder sich räuspern.
Was man heute erwartet ist "Sprecher-Unabhhängigkeit". Sobald jemand hinreichend deutlich in der vereinbarten Sprache spricht, sollen die Worte erkannt werden.
Das ist wie beim OCR die Stufe nach dem Erkennen der Buchstaben. Den tieferen Sinn zu erschließen, dafür ist dann die KI zuständig. Und die kann das ganz gut, denn sie kommt z.B. auch mit den meisten Tippfehlern zurecht (sofern diese den Sinn nicht extrem entstellen) ...
Sprachausgabe ist dagegen (nach Jahrzehnten der Forschung) fast schon primitiv, quasi wie ein rein mechanischer Vorgang. Denn inzwischen ist der Zusammenhang zwischen Text und gesprochenem Wort nahzu vollständig erforscht, da gibts nur noch Verfeinerungen im Detail.
Sprachausgabe ist dagegen (nach Jahrzehnten der Forschung) fast schon
primitiv, quasi wie ein rein mechanischer Vorgang.
Naja, fast: Die Sprachausgabe scheint zwar erst mal weniger komplex als die Spracheingabe. Immerhin gab es die Sprachausgabe schon auf dem Attari ST.
Allerdings sollte man die extrem aufwändige Forschung und das Einfließen deren Ergebnisse in die heutigen Sprachgeneratoren nicht vergessen. Da braucht es schon eine KI-gestützte Erkennung Inhalts und Emmotionserkennung, um die Ausgabe nicht langweilig klingen zu lassen. Beitrag "Re: KI: Stand und Weiterentwicklung"
Ich suche immer noch nach einer guten Ausgabe für Linux ohne Spezialmodell, aber da wird immer espeak vorgeschlagen und das spricht mechanisch langweilig.
Das muss nicht akustisch (Headset) gehen, das macht Software/DSP.
Du schaust wie stark und wieviel verzögert dein Lautsprechersignal wieder am Mic ankommt, und rechnest das dann einfach wieder raus.
Braucht keine KI, passende Algorithmen bringen Browser schon mit (WebRTC AEC)
d.H. das muss noch nichtmal bei OpenAI in der Cloud laufen, dein Webbrowser erledigt das schon und schickt dein Gelaber sauber getrennt vom KI-Gelaber in die Cloud.