Speech to Text pre Discord na CachyOS

Speech to Text pre Discord na CachyOS pomocou Speech Note a ydotool

Tento návod popisuje funkčné nastavenie diktovania v slovenčine do aplikácie Discord na CachyOS / KDE Plasma / Wayland.

Výsledok:

kliknem do textového poľa v Discorde
stlačím klávesovú skratku
nadiktujem text po slovensky
zastavím počúvanie
prepísaný text sa vloží priamo do Discord správy

Použité riešenie:

Speech Note → FasterWhisper Medium / sk → ydotool → Discord

1. Cieľ riešenia

Cieľom je doplniť do Discordu funkciu Speech to Text bez úprav Discordu, bez Discord pluginov a bez bota.

Riešenie funguje systémovo. Speech Note spracuje hlas na text a cez ydotool vloží výsledný text do aktívneho okna. Ak je aktívne okno Discord a kurzor je v textovom poli správy, text sa vloží priamo tam.


2. Použité komponenty

Použité boli tieto nástroje:

CachyOS
KDE Plasma
Wayland
Discord
Speech Note cez Flatpak
FasterWhisper slovenský model
ydotool
KDE Global Shortcuts

3. Inštalácia Speech Note

Speech Note sa inštaluje cez Flatpak.

sudo pacman -S --needed flatpak
flatpak install flathub net.mkiol.SpeechNote

Aplikáciu je možné spustiť príkazom:

flatpak run net.mkiol.SpeechNote

alebo klasicky z menu aplikácií.


4. Stiahnutie slovenského STT modelu

Po prvom spustení Speech Note treba stiahnuť model pre rozpoznávanie reči.

V Speech Note sa otvorí správca modelov.

Vyhľadať jazyk:

Slovenčina / sk

Na testovanie bol najprv použitý model:

Slovenčina (FasterWhisper Small) / sk

Ten fungoval, ale kvalita prepisu nebola ideálna.

Ako funkčný a kvalitnejší kompromis bol následne zvolený:

Slovenčina (FasterWhisper Medium) / sk

Odporúčané nastavenie:

STT model: Slovenčina (FasterWhisper Medium) / sk
Režim: Speech to Text
Jazyk: Slovenčina / sk
Nepoužívať Translate režim
Nepoužívať Always translate režim

5. Prvý test prepisu priamo v Speech Note

Najskôr treba otestovať samotný prepis v okne Speech Note.

Postup:

1. Otvoriť Speech Note
2. Nastaviť slovenský FasterWhisper Medium model
3. Spustiť Listen
4. Nadiktovať krátku vetu
5. Zastaviť počúvanie
6. Skontrolovať kvalitu prepisu

Testovacia veta:

Toto je test diktovania v slovenčine na CachyOS.

Ak Speech Note správne prepíše hlas do svojho vlastného okna, samotná STT časť funguje.


6. Povolenie globálnych skratiek a externých akcií

V Speech Note treba otvoriť:

Settings → Accessibility

Zapnúť tieto tri možnosti:

Use global keyboard shortcuts
Allow external applications to invoke actions
Toggle behavior for actions

Význam nastavení:

Use global keyboard shortcuts
umožní ovládať Speech Note cez globálne KDE skratky

Allow external applications to invoke actions
umožní spúšťať akcie Speech Note aj cez príkazový riadok alebo KDE shortcut systém

Toggle behavior for actions
umožní používať rovnakú akciu ako prepínač štart / stop

Pri zapnutí globálnych skratiek sa môže zobraziť KDE okno:

Global Shortcuts Requested

Toto okno treba potvrdiť cez:

OK

7. Test režimu cez clipboard

Pred priamym vkladaním do Discordu je vhodné overiť clipboard režim.

V KDE skratkách sa nachádza položka:

Start listening, text to clipboard

V testovanom nastavení mala skratku:

Ctrl + Alt + Shift + ]

Stop počúvania:

Ctrl + Alt + Shift + S

Postup testu:

1. Otvoriť Discord alebo Kate/KWrite
2. Kliknúť do textového poľa
3. Stlačiť Ctrl + Alt + Shift + ]
4. Nadiktovať vetu
5. Stlačiť Ctrl + Alt + Shift + S
6. Stlačiť Ctrl + V

Ak sa prepísaný text vloží cez Ctrl + V, clipboard režim funguje.

Tento režim nepotrebuje ydotool.


8. Inštalácia ydotool

Na priame vkladanie textu do aktívneho okna je potrebný ydotool.

Inštalácia:

sudo pacman -S --needed ydotool

Spustenie user služby:

systemctl --user enable --now ydotool.service

Dôležité:

Nepoužívať sudo pri systemctl --user.

Nesprávny príkaz:

sudo systemctl --user enable --now ydotool.service

Tento príkaz môže skončiť chybou:

Failed to connect to user scope bus via local transport:
$DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined

Správny príkaz je:

systemctl --user enable --now ydotool.service

Overenie služby:

systemctl --user status ydotool.service --no-pager

Očakávaný stav:

Active: active (running)

9. Test samostatného ydotool

Pred prepojením so Speech Note treba overiť, že ydotool vie písať do aktívneho okna.

Otvoriť Discord alebo Kate/KWrite a kliknúť do textového poľa.

Potom v termináli spustiť:

sleep 3; ydotool type "test priameho pisania cez ydotool"

Po stlačení Enter sú 3 sekundy na prepnutie späť do Discordu alebo textového editora.

Očakávaný výsledok:

test priameho pisania cez ydotool

Text sa musí vložiť do aktívneho textového poľa.

Ak sa text vloží, ydotool funguje.


10. Nájdenie ydotool socketu

Speech Note ako Flatpak potrebuje prístup k socketu ydotool.

V tomto systéme sa socket nenachádzal v:

/tmp/.ydotool_socket

Správna cesta bola:

/run/user/1000/.ydotool_socket

Overenie:

echo "$XDG_RUNTIME_DIR"
ls -l "$XDG_RUNTIME_DIR/.ydotool_socket"

Očakávaný výstup:

/run/user/1000
/run/user/1000/.ydotool_socket

Socket môže vyzerať napríklad takto:

srw------- ... /run/user/1000/.ydotool_socket

11. Povolenie ydotool socketu pre Speech Note Flatpak

Speech Note treba povoliť prístup k socketu ydotool.

Použitý príkaz:

flatpak override --user net.mkiol.SpeechNote --filesystem=xdg-run/.ydotool_socket --env=YDOTOOL_SOCKET="$XDG_RUNTIME_DIR/.ydotool_socket"

Overenie oprávnení:

flatpak info --show-permissions net.mkiol.SpeechNote | grep -Ei "ydotool|filesystems|environment"

Očakávaný výstup má obsahovať:

xdg-run/.ydotool_socket
YDOTOOL_SOCKET=/run/user/1000/.ydotool_socket

Príklad funkčného výstupu:

filesystems=xdg-download;xdg-desktop;xdg-music;xdg-config/kdeglobals:ro;xdg-run/.ydotool_socket;xdg-videos;xdg-documents;

[Environment]
YDOTOOL_SOCKET=/run/user/1000/.ydotool_socket

12. Reštart Speech Note

Po nastavení Flatpak override treba Speech Note úplne reštartovať.

flatpak kill net.mkiol.SpeechNote
flatpak run net.mkiol.SpeechNote

Potom v Speech Note otvoriť:

Settings → Accessibility

Pred nastavením ydotool sa zobrazovala červená hláška o tom, že ydotool daemon nie je dostupný.

Po správnom nastavení socketu a reštarte Speech Note táto hláška zmizla.

To znamená, že Speech Note už vidí ydotool.


13. KDE globálne skratky pre Speech Note

Po povolení globálnych skratiek sa Speech Note objaví v KDE nastaveniach:

Nastavenia systému → Klávesnica → Skratky → Speech Note

Overené funkčné skratky:

Start listening, text to active window:
Ctrl + Alt + Shift + K

Start listening, text to clipboard:
Ctrl + Alt + Shift + ]

Stop listening:
Ctrl + Alt + Shift + S

Najdôležitejšia skratka pre Discord je:

Ctrl + Alt + Shift + K

Tá spúšťa režim:

Start listening, text to active window

Tento režim vkladá prepísaný text priamo do aktívneho okna.


14. Priame diktovanie do Discordu

Finálne použitie:

1. Otvoriť Discord
2. Kliknúť do textového poľa správy
3. Stlačiť Ctrl + Alt + Shift + K
4. Nadiktovať text po slovensky
5. Stlačiť Ctrl + Alt + Shift + S
6. Prepísaný text sa vloží priamo do Discord textového poľa

Alternatívne môže fungovať aj opätovné stlačenie:

Ctrl + Alt + Shift + K

ak je zapnuté:

Toggle behavior for actions

Pre isté zastavenie počúvania je vhodné používať:

Ctrl + Alt + Shift + S

15. Funkčný stav po dokončení

Po dokončení funguje celý reťazec:

Speech Note
→ slovenský FasterWhisper Medium model
→ globálna KDE skratka
→ ydotool
→ Discord textové pole

Funkčné režimy:

Clipboard režim:
Ctrl + Alt + Shift + ]
výsledok sa vloží cez Ctrl + V

Priamy Discord režim:
Ctrl + Alt + Shift + K
výsledok sa vloží priamo do textového poľa

Stop počúvania:
Ctrl + Alt + Shift + S

16. Odporúčané finálne nastavenie

V Speech Note ponechať:

Settings → Accessibility

Use global keyboard shortcuts: zapnuté
Allow external applications to invoke actions: zapnuté
Toggle behavior for actions: zapnuté

Model:

Slovenčina (FasterWhisper Medium) / sk

Režim:

Speech to Text

Nepoužívať:

Translate
Always translate

17. Zlepšenie kvality prepisu

Ak je prepis slabý, najprv skontrolovať model.

Poradie modelov podľa praktického použitia:

FasterWhisper Tiny
veľmi rýchly, slabšia kvalita

FasterWhisper Base
rýchly, stále menej presný

FasterWhisper Small
použiteľný na test

FasterWhisper Medium
dobrý kompromis pre slovenčinu

FasterWhisper Large-v3 Turbo
vyššia kvalita, vyššie nároky

FasterWhisper Large-v3
najvyššia kvalita, najvyššie nároky

Overené odporúčanie:

Používať FasterWhisper Medium / sk.

Pre lepší prepis:

hovoriť kratšie vety
robiť jasné pauzy
nemať hudbu v pozadí
mať mikrofón blízko
nepoužívať príliš rýchle diktovanie
nepoužívať translate režim

18. Riešenie problémov

Problém: systemctl --user zlyhá

Chybný príkaz:

sudo systemctl --user enable --now ydotool.service

Správny príkaz:

systemctl --user enable --now ydotool.service

Problém: /tmp/.ydotool_socket neexistuje

Na tomto systéme socket nebol v /tmp.

Overiť správnu cestu:

echo "$XDG_RUNTIME_DIR"
ls -l "$XDG_RUNTIME_DIR/.ydotool_socket"

Použitá funkčná cesta:

/run/user/1000/.ydotool_socket

Problém: Speech Note hlási, že ydotool nie je dostupný

Overiť službu:

systemctl --user status ydotool.service --no-pager

Overiť socket:

ls -l "$XDG_RUNTIME_DIR/.ydotool_socket"

Overiť Flatpak oprávnenia:

flatpak info --show-permissions net.mkiol.SpeechNote | grep -Ei "ydotool|filesystems|environment"

Ak oprávnenie chýba, znova spustiť:

flatpak override --user net.mkiol.SpeechNote --filesystem=xdg-run/.ydotool_socket --env=YDOTOOL_SOCKET="$XDG_RUNTIME_DIR/.ydotool_socket"

Potom reštartovať Speech Note:

flatpak kill net.mkiol.SpeechNote
flatpak run net.mkiol.SpeechNote

Problém: ydotool píše do terminálu namiesto Discordu

Použiť test so oneskorením:

sleep 3; ydotool type "test priameho pisania cez ydotool"

Po spustení príkazu sa treba prepnúť do Discordu a kliknúť do textového poľa.


Problém: clipboard režim funguje, ale active window nie

Clipboard režim nepotrebuje ydotool.

Active window režim potrebuje:

spustený ydotool.service
existujúci ydotool socket
Flatpak override pre Speech Note
reštart Speech Note
aktívne textové pole v Discorde

19. Finálny overený výsledok

Overený finálny výsledok:

Discord textové pole aktívne
Ctrl + Alt + Shift + K
diktovanie po slovensky
Ctrl + Alt + Shift + S
text sa vloží priamo do Discordu

Riešenie je použiteľné nielen v Discorde, ale aj v iných aplikáciách, napríklad:

prehliadač
mail
textový editor
Nextcloud
Hermes
chatovacie aplikácie
formuláre
1 lajk