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