DiktierApp (Vosk + Silero) mit Problemen

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
pythia
User
Beiträge: 4
Registriert: Sonntag 27. Juli 2025, 20:38

Hi,

ich falle gleich mit der Tür ins Haus :D
Und gleich vorweg, ich habe recht wenig Ahnung vom Coden (vielleicht wird sich das ändern). Meine letzten 'Coder-Erfahrungen' liegen in zeiten, in denen man Webseiten mit HTML, Tabellen und Frames gemacht hat, also nciht gleich erschlagen :)

Es fragte mich jemand nach einer Diktierapp und ich dachte mir, warum nicht, ChatGPT, Grok und Co. können sowas bestimmt schreiben. Denn Ich hab seltsamerweise keine wirklich aktuell funktionierende (kostenlose) App gefunden.

Also habe ich mich an die Arbeit gemacht bzw. die KI-Chats zur Arbeit gezwungen.
Interessant ist es auf jeden Fall, was die Dinger rausspucken können!
Nach einer ganzen Weile herumdiskutieren und jede menge Verzweifelung (die Dinger sind doch noch blöd und ich nicht schlau genug) kam dieser code raus, den ich hier poste.

An sich funktioniert (fast) alles.
Die on/off-Funktion für Groß- und Kleinschreibung geht wohl noch nicht (habe es vor allem aus debugging Gründen implementieren lassen, damit man manche Prozesse abschalten kann), aber ansonsten läufts.

Das Problem:
1. es ist noch etwas langsam und ich frage mich, obs doch auch mit Silero + Großschreibung (german-nouns) schneller geht
2. die Spracherkennung ist dürftig

Ich habe davor ohne Silero-VAD nen Skript gebastelt, der geht mit deutlich besserer Erkennung und Geschwindigkeit, aber da kommt doch einiges an Müll mit.

Falls hier jemand mit Erfahrung Lust/Zeit hat, kann er gerne mal mitschauen. Ich denke, wenn man mit Vosk und Silero schon gearbeitet hat und Ahnung von Python hat, wird man das Problem eher erkennen.

Danke schon mal!

P.S.
Habe versucht den Code zu posten, der ist allerdings zu lang. Gibts eine andere Möglichkeit? Dateien hochladen kann man hier wie es aussieht nicht.
Habs jetzt erstmal so gelöst: https://codeshare.io/GL7Ng6
pythia
User
Beiträge: 4
Registriert: Sonntag 27. Juli 2025, 20:38

habs in der Zwischenzeit auf customtkinter ändern lassen.
Die Spracherkennung ist nach dem Rumspielen mit Empfindlichkeit, Timeout und Pufferdauer ganz ok. Auch wenn natürlich nicht überragend. Weiß nicht, ob mans noch besser hinbekommt durch etwas.

Was könnte man noch dran verbessern?
pythia
User
Beiträge: 4
Registriert: Sonntag 27. Juli 2025, 20:38

Noch ein paar Anpassungen untenrommen.

1. Sanftes scrollen der Zwischenergebnisse geht nicht.
2. Komma und Punkt werden sehr schlecht erkannt.
3. "Substantive automatisch großschreiben"-Schalter funktioniert nicht.

Falls jemand grundsätzlich etwas noch zu verbessern sieht, sehr gerne! :)
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Was genau ist denn jetzt deine Erwartung?
Du hast dir Code generieren lassen, der - vorsichtig ausgedrückt - unschön ist.
Ich empfehlen von LLMs Abstand zu nehmen und Python zu lernen, falls du wirklich lernen willst.
Ansonsten wird wohl niemand Zeit investieren, um Code zu prüfen, in den du keine Zeit investiert hast.
Benutzeravatar
noisefloor
User
Beiträge: 4195
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Was könnte man noch dran verbessern?
Den GUI-Teil _immer_ in einen Klasse packen, sofern nicht eine mega-triviale GUI generiert wird. Den Code sinnvoll aufteilen und nicht Spaghetti-mäßig eine Haufen Funktionen in eine Datei packen. Grundsätzlich _nie_ globale Variablen verwenden. Der Installationsteil via pip funktioniert mit neueren Python Versionen u.U. nicht, weil für die Installation von Modulen ein venv vorausgesetzt wird.

Gruß, noisefloor
Benutzeravatar
__blackjack__
User
Beiträge: 14069
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Installation von Modulen würde ich sowieso nicht mit in ein Programm stecken. Dafür gibt es doch die requirements.txt. Und ohne venv zerschiesst man sich eventuell auch das System. Keiner möchte so ein Programm einsetzen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
pythia
User
Beiträge: 4
Registriert: Sonntag 27. Juli 2025, 20:38

danke schon mal für Tadel und Tipps :D

In der Zwischenzeit kam ich etwas weiter, mit manchen dämlichen Schleifen von Grok.

Es gibt ein Problem mit Speicherleak bei Vosk, da habe ich eine automatische Speicherentleerung eingebaut.
Der RAM füllt sich nach und nach, wenn man so vor sich hin aufnimmt. Jetzt gibts ne Einstellung, das man ihn nach so und so viel MB-Zuwachs und so und so viel Minuten Standby durch das Neuladen des Modells entleert. Eine bessere Möglichkeit fand ich nicht. Dazu habe ich einen ausgelagerten Daemon drin, der die Arbeit erledigt.

Dann habe ich versucht den Code etwas besser umzusetzen bzw. umsetzen zu lassen.
Das ist natürlich so eine Sache, wenn man Laie ist. Aber ich glaub, es ist etwas besser als die erste Chaosvariante.
Aber ja, lang nicht fertig. Wollte zuerst mich auf Funktionalität konzentrieren.

Für Mac habe ich mittlerweile eine dmg gebaut, die funktioniert! Und zwar bisher gar nicht schlecht.
Weiß allerdings noch nicht, ob sie auf anderen Geräten läuft, wird demnächst gecheckt (ich vermute, nicht).
Gebaut habe ich für MacOS mit dieser spec: https://codeshare.io/5XNd4l

Bei Windows kämpfe ich schon seit Tagen und bekomme keine lauffähige (vor allem auf anderen PCs) exe hin.
Es gab eine Tonne an verschiedenen Fehlern, fehlenden DLLs etc.
Jetzt bin ich soweit, dass onedir auf meinem Win-PC (VM via UTM auf MacOS) läuft.
Nur das large Modell gibt beim Laden nach etwas über 5GB im RAM einen Ladefehler aus.
Bisher hat nichts geholfen, ich dachte an Auslagerungsdatei, aber es liegt nicht daran.
RAM wurde der VM mehr als genug gegeben, samt 6 CPUs.
Gebaut wurde die onedir mit dieser spec: https://codeshare.io/29jKDK
Es gab zick versionen davon, mit und ohne DLL-Einbindung, aber so hats zumindest mal funktioniert (auf meinem PC).
Übertrage ich die exe und _internal auf einen anderen PC, bekomme ich quasi nen Windows-Fehler:

Code: Alles auswählen

Ein wichtiges Paket fehlt: None.
Bitte installiere alle Pakete mit: pip install customtkinter pillow numpy etc.
Und lade danach das deutsche Sprachmodell von spacy herunter
Nicht im wortlaut, aber sinnegmäß.

Das ist der im Skript eingebaute Check.
Ich dachte, vielleicht ist er einfach bei einem build unnötig und führt zum Absturz, weil die Pakete ja intern drin sind.
Habe aber noch nicht versucht ihn auszukommentieren.

Bei onefile sind noch mehr Probleme. Da will die exe gar nicht starten. Hab gefühl alles versucht.
Einmal mit Python 3.12: https://codeshare.io/5w4AYK
Hier war der direkte, harte Pfad zu Python-DLL nötig, anders wollte er sie nicht einbinden.
Einmal mit Python 3.11: https://codeshare.io/GkJBKw

Am Ende fehlt immer die python311.dll oder *312.dll, obwohl sie eingebunden wird. Egal was ich mache.
Der Fehler zeigt, dass sie im _internal-Ordner gesucht wird, den gibts aber natürlich nicht, weil es onefile ist.

Soweit erstmal :)

Was ich erwarte? Gar nichts.
Ich hab halbwegs Spaß dran und mach mir nichts draus. Fand einfach keine App, die das kann.
Wenn hier jemand vielleicht mit Ahnung auch mal an so eine App gedacht hat, wäre das vielleicht eine gute Grundlage.
Aber das könnt ihr besser beurteilen.
Antworten