2023. június 2., péntek

Felolvasás Linuxban

 Visszatekintettem: már 9 éve annak, hogy foglalkoztam a szövegfelolvasás témájával. Az akkor szerepelt eSpeak rendszer már annyira beleérett a Linux környezetébe, hogy a tárolókból néhány kattintással telepíthető, és működik is. Ennek ellenére nemigen használtam, mert annyira robotikus orgánuma van, mintha a kiürült konzervdoboz emelkedne szólásra a hulladékgyűjtőből. Amit szerettem volna, az angol nyelvű szövegek felolvastatása abból a célból, hogy gyakoroljam a hallás utáni megértést. Mert olvasni ugyan elég jól tudok, de a beszélt nyelv terén volna még fejlődni valóm.


Nemrégen egy ajánlatból kattintott YouTube videó újra ráirányította a figyelmemet a tts (text to speech) rendszerekre. A keresésekből kirajzolódott a szokásos szomorú kép: Windowsra sok van, és köztük jók is, Linuxra kevés. Azért találtam olyat - a neve mimic3 tts - amelynek a hangzása már egészen tűrhető, de az első kísérletem csak félsikert hozott vele. Feltelepítettem, terminálból szépen felolvasta a próbaszöveget, a webszerverét is sikerült szóra bírni a böngészőben, de a Speech Dispatchernél elakadtam. Ez egy általános közvetítő felület a hangot előállító programok és a hangrendszer között. A mimic3 dokumentációja alapján igyekeztem a konfigurációs fájlt aktualizálni, de a leírásból kimaradt egy lényeges sor, a modult pedig magamnak kellett elkészítenem hozzá. És amikor már minden a helyére került, még mindig nem hallottam semmit. Azóta már gyanítom, hogy miért, de a bizonyosságért nem fogom visszafejleszteni a Linuxomat. Ugyanis közben feltelepítettem a Kubuntu 23.04 verziót. Ebben először egyáltalán nem sikerült működésre bírni a mimic3-at. A Python könyvtári modulokban valami inkompatibilitás van.

A következőkben tehát a mimic3 tts beillesztési tapasztalatait teszem közzé a Kubuntu Lunar-ba.

A Python lehetővé teszi virtuális környezetek kialakítását. A virtuális környezet verziója pedig eltérhet a rendszerben levő Pythonétól. Legalábbis az Anaconda nevű csomag lehetővé teszi ezt. Felkerestem tehát a webhelyét és telepítettem. Az Ubuntu tárolókban nem szerepel; ebből sajnos, az is következik, hogy nincs összehangolva a többi komponenssel. Megint csak valami inkompatibilitás lehet az oka, hogy az anaconda-navigator nem minden funkciója működik. A Python 3.9 környezetet sikerült létrehozni, de abban már csak terminálból tudtam alkotni. A mimic3 a githubon található (https://github.com/MycroftAI/mimic3), a


pip install mycroft-mimic3-tts[all]


paranccsal telepíthető.

A Kubuntu 23.04 kiadás a 0.11.4-2 verziószámú Speech Dispatcher-t tartalmazza. A konfigurációs fájlokat átmásoltam a /etc/speech-dispatcher/-ből a $HOME/.config/speech-dispatcher/-be, hogy sima felhasználóként tudjam módosítani. Ez a verzió már tartalmaz egy mimic3-generic modult, amelynek a konfigurációs fájljában látható nyomai vannak, hogy valaki egy másik modulénak a módosításával készítette. Persze, ha működik, ennek nincs jelentősége. A speechd.conf fájl a településkori állapotában kikommentezett felsorolást ad a modulokról, amelyekkel együtt tud működni különféle tts rendszerekkel. Ebbe a felsorolásba viszont nem került bele a mimic3. Tehát be kell szúrni egy új sort (kommentjel nélkül):


AddModule “mimic3-generic” “sd_generic” “mimic3-generic.conf”


Vigyázat, ez a githubon is kimaradt a dokumentáció ide vonatkozó szekciójából, de enélkül nem hívható a mimic3. Néhány további beszúrandó sor, amelyekhez minták, és magyarázatok is szerepelnek a fájlban:


DefaultModule “mimic3-generic”

DefaultLanguage “en”

DefaultVoiceType “MALE1”

AudioOutputMethod “libao”


Kipróbálás előtt el kell indítani a mimic3-server háttérszolgáltatást, mert a conf-ban a meghívás --remote paraméterrel szerepel. Ha ezt automatizálni szeretnénk a gép indulásakor, ahhoz találunk segítséget a dokumentációban. Én inkább a Rendszerbeállítások Indítás és leállás szekciójában adtam hozzá az Automatikus indítás-hoz, így is működik. A Speech Dispatcher-nek van egy parancssori bemeneti lehetősége, ezzel lehet legközvetlenebbül tesztelni.


spd-say 'She sells seashells by the seashore'


És ez az a pont, ahol az első kísérletem zátonyra futni látszott. Hibaüzenet nem volt, de hang se. Aztán rájöttem, hogy még egy működési réteggel kell megküzdeni. A gépemben ugyanis háromféle hangeszköz is található. Egy a processzorba integrálva, egy az alaplapon, és az USB felületű fejhallgatót is így tartja nyilván a rendszer. A PulseAudio hangerőszabályozó nevű program pedig a hangerőszabályozáson kívül az összeköttetés beállítására is szolgál a kliens programok és a lejátszóeszközök között. A kliens program viszont csak olyankor jelenik meg a Lejátszás fülön, ha az ember elindította. Tehát beadtam egy hosszabb tesztszöveget, hogy legyen időm akciózni, és a megjelenő kezelőfelületen kiválasztottam azt a lejátszóeszközt, amelyiken a beszédet szerettem volna hallani.

Az ellenség alaposabb megtévesztése érdekében nem a Speech Dispatcher neve jelent meg, hanem a paplay; nyilván a Dispatcher ennek adja tovább a hangokat.


És tadám, megvalósult az a szerény álmocskám, hogy betöltök egy ebookot az Okular-ba, vagy a Calibre-be, felolvasást kérek, és viszonylag kulturált hangon hallgathatom. Persze, nem tökéletes a dolog, már találkoztam olyan szavakkal, amiket nem ismert föl a tts, és inkább betűzte őket. De általános szöveghez jó lesz.

A mimic3 egyébként magyarul is tud olvasni, ha valakinek ilyen vágya van. Vagy akarhat egyéb kapcsolódó mesterséges intelligencia-szolgáltatásokat. A Mycroft AI-hoz tartozik KDE plazmoid; lehet beszélő és/vagy beszéddel vezérelhető gépi asszisztenst telepíteni és tanítgatni.