nerd-dictation: Open Source speech synthesis via python; both self-trained and predefined models are possible

in Deutsch D-A-CH3 years ago (edited)

https://github.com/ideasman42/nerd-dictation

Hallo,

heute mal Lust gehabt, einem Kollegen 'ne Nachricht zu schreiben, ohne die Tastatur zu benutzen. Auf Android ja kein Problem (und angeblich tun zumindest die Pixel-Smartphones nicht nach Hause telefonieren beim synthetisieren), aber Linux? Anscheinend gar nicht so einfach.

Nachdem ich KDE Simon aussortiert habe, weil kein KDE, habe ich mir nerd-dictation von ideasman42 näher angeschaut. Nerd-dictation ist 100% Python (GitHub stats), kann wohl noch ein paar leckere Extrafeatures,

Screenshot_2021-11-24_02-14-06.png

die ich aber für's Erste auch nicht getestet habe. Wichtig waren mir nur

Screenshot_2021-11-24_02-16-26.png

, die quasi das Zuhören starten bzw. stoppen; dabei wird der Text über xdotool direkt unter den Cursor geschrieben. (Und ja, da können Probleme auftreten, wenn z.B. der Fokus aus dem Fenster rausspringt und du im Menü landest. Ist mir auch passiert, dann schnell die richtige Key Combo drücken; dazu später mehr)

Jedenfalls ist die Installationsanleitung für alle, die schon rudimentär mit Linux, Git, Python, Pip gearbeitet haben, nicht sonderlich schwer.

Screenshot_2021-11-24_02-18-53.png

Hier gleich noch der Link für alternative Models: https://alphacephei.com/vosk/models

Ich habe dafür eine extra Virtualenv angelegt, ist sehr empfehlenswert, sollte man bei PiP Dependencies sowieso immer machen. (https://wiki.archlinux.org/title/Python/Virtual_environment)

Die Installation ging tatsächlich ohne Schwierigkeiten, weshalb ich da auch nicht näher drauf eingehe. Interessanter ist Part 2: In der Desktop Environment dafür Shortcuts zu setzen.


Unter XFCE geht das folgendermaßen:

  1. Keyboard Settings
    Screenshot_2021-11-24_02-22-21.png

  2. Application Shortcuts
    Screenshot_2021-11-24_02-25-04.png
    Hier seht ihr schon, dass ich die entsprechenden Sachen eingetragen habe.

Da ich eine Virtualenv verwende, muss ich gewisse Sachen setzen vor dem Programmaufruf. Deswegen steht bei begin ein Wrapper davor. Hier der Inhalt von nerd-dictation-start.sh

Screenshot_2021-11-24_13-11-51.png

, damit ihr Anhaltspunkte habt.

  1. Add klicken, Pfad eintragen, Keyboard Shortcut eintragen.

Bei mir hat's so funktioniert. Die Spracherkennung beim Lite Model lässt allerdings zu wünschen übrig, mal sehen, obs besser geht mit der großen Version. Bzw es geht schon, man muss aber eher deutlich sprechen.

Theoretisch könnte man auch ein eigenes Model trainieren.


https://github.com/ideasman42/nerd-dictation

Hello,

today I felt like writing a message to a colleague without using the keyboard. No problem on Android (and supposedly at least the Pixel smartphones don't call home when synthesizing), but Linux? Apparently not so easy.

After sorting out KDE Simon because no KDE, I took a closer look at nerd-dictation by ideasman42. Nerd-dictation is 100% Python (GitHub stats), can probably do some tasty extra features,

Screenshot_2021-11-24_02-14-06.png

but I didn't test them for now. Important for me were only

Screenshot_2021-11-24_02-16-26.png

which start/stop listening, so to speak; the text is written directly under the cursor via xdotool. (And yes, there can be problems, e.g. if the focus jumps out of the window and you end up in the menu. Happened to me too, then quickly press the right key combo; more about that later).

Anyway, the installation instructions are not very difficult for those who have already worked rudimentarily with Linux, Git, Python, Pip.

Screenshot_2021-11-24_02-18-53.png

Here is the link for alternative models: https://alphacephei.com/vosk/models

I have created an extra virtualenv for this, is highly recommended, should always be done with PiP Dependencies anyway. (https://wiki.archlinux.org/title/Python/Virtual_environment)

The installation went without any problems, so I won't go into it. More interesting is Part 2: Set shortcuts in the desktop environment.


Under XFCE it works like this:

  1. keyboard settings
    Screenshot_2021-11-24_02-22-21.png

  2. application shortcuts
    Screenshot_2021-11-24_02-25-04.png
    Here you can already see that I have entered the appropriate things.

Because I use a virtualenv, I must set certain things before the program call. That's why I put a wrapper in front of begin. Here the content of nerd-dictation-start.sh

Screenshot_2021-11-24_13-11-51.png

so you have some clues.

  1. click Add, enter path, enter keyboard shortcut.

It worked like this for me. The speech recognition of the Lite model leaves a lot to be desired, let's see if it works better with the big version. It works, but you have to speak clearly.

Theoretically, you could also train your own model.

Sort:  

Congratulations @t-nil! You have completed the following achievement on the Hive blockchain and have been rewarded with new badge(s):

You received more than 300 upvotes.
Your next target is to reach 400 upvotes.

You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Check out the last post from @hivebuzz:

Hive Power Up Month - Feedback from Day 21
Hive Power Up Month - Feedback from Day 18

Ich habe jetzt auch das größere Model getestet (1.9Gb), aber nach ersten Versuchen scheint die Single-Core-Application nicht mit der Datenmenge zurechtzukommen. Kam nichts Verwertbares bei raus.