KI Modell mit Spracherkennung

#8038737
Lesenswert?

1N 4. schrieb:

Gemma 4 E2B/E4B kann auch Sprache

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.

#8039446
Lesenswert?

1N 4. schrieb:

Gemma 4 E2B/E4B kann auch Sprache (https://github.com/ggml-org/llama.cpp/issues/21325#issuecomment-4187969225)

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.
(Firma: Starfleet) #8039450
Lesenswert?

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

#8039483
Lesenswert?

Bradward B. schrieb:

speech-to-text engine, bspw.:

Whisper funktioniert, aber schnarchlangsam

1
whisper wieWetter.wav --model medium
2

3
Detected language: German
4
[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.

#8039580
Lesenswert?

Whisper funktioniert, aber schnarchlangsam

Dem kann man etwas abhelfen:

  • fater-whisper oder Whisper-Ctranlate2 verwenden
  • das large-v3-turbo Modell benutzen

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.

Jörg

#8039767
Lesenswert?

Christoph M. schrieb:

Leider scheint auch meine Graphikarte für das Modell zu klein:

Das ist halt die langsam implementierte Version. Llama.cpp ist schneller, kann den Speicher auf GPU+CPU aufteilen.

https://huggingface.co/unsloth/gemma-4-E2B-it-GGUF https://huggingface.co/unsloth/gemma-4-E4B-it-GGUF/

Passendes gguf laden. Für Audio oder vision brauchst du auch das mmproj File.

Mit E2B-Q8 + mmproj-F16.gguf komm ich mit meiner 9070 auf 15x Realtime. E4B-Q8 ist nur minimal langsamer.

Dümmlicherweise sind die mmproj files Model-spezifisch, auch wenn sie gleich heißen...

Ich hab ein populäres Lied transkribieren lassen. Ergebnis ist ... na ja. Ist ja aber auch ein Lied mit allem...

Angehängte Dateien:
#8039819
Lesenswert?

Whisper gibts auch in schnell:

https://github.com/ggml-org/whisper.cpp

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.

Angehängte Dateien:
(Firma: Starfleet) #8039931
Lesenswert?

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.

https://youtu.be/8n0f2sJJfzs?t=122

: Bearbeitet durch User
#8039935
Lesenswert?

Joerg W. schrieb:

Whisper funktioniert, aber schnarchlangsam

Dem kann man etwas abhelfen:

  • fater-whisper oder Whisper-Ctranlate2 verwenden

Danke für den Hinweis. Praktischerweise gibt es hier
https://opennmt.net/CTranslate2/quickstart.html
ja auch einen Hinweis, wie man das Ganze an Python anbindet.

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:

1
result = model.transcribe(
2
    tmp.name,
3
    language="de",
4
    task="transcribe",   # (not translate!)
5
    temperature=0.0
6
)
7
#result = model.transcribe(tmp.name, language="de")
8
txt=result["text"]
9
print("→", txt)
10
if txt.__contains__("Ende.") :
11
    flag=False
12
    print("Ende verstanden")
Angehängte Dateien:
(Firma: Starfleet) #8039942
Lesenswert?

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.

#8040067
Lesenswert?

Norbert schrieb:

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.

#8040070
Lesenswert?

Christoph M. schrieb:

Norbert schrieb:

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.

Es geht darum, dass man die

1
__wasauchimmer__

Methoden in diesem Kontext niemals verwendet.

: Bearbeitet durch User
#8042921
Lesenswert?

Bradward B. schrieb:

speech-to-text engine

Ist jedenfalls keine KI-Neuheit.

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.

#8042997
Lesenswert?

Christoph M. schrieb:

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."

#8062973
Lesenswert?

Whisper Medium scheint seltsame Eigenschaften zu haben.

Das obige Script realisiert ja eine online Spracheingabe die immer mitläuft:
Beitrag "Re: KI Modell mit Spracherkennung"

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.

Als Sprachausgabe habe ich "supertonic"
https://huggingface.co/Supertone/supertonic-3
dran gehängt, was den erkannten Text einfach nachsprechen soll (Hörbeispiel im Anhang).

Angehängte Dateien:
: Bearbeitet durch User
(Firma: Q3) #8064118
Lesenswert?

Rolf schrieb:

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.

: Bearbeitet durch User
#8064166
Lesenswert?

Frank E. schrieb:

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.

#8071797
Lesenswert?

Christoph M. schrieb:

Wie das wohl akustisch geht?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren