2024. május 6., hétfő

Kubuntu 24.04 és Piper tts

 Miután az előző Linux kiadásom már panaszkodott, hogy őhozzá nincsenek további frissítések, telepítettem az április végén megjelent Kubuntu 24.04 rendszert. Ez LTS, azaz hosszú támogatási idejű. A KDE Plasma testreszabása közben előfordult, hogy a kiválasztott téma legközelebb nem jelent meg. De mivel egy korábbi kiadásban már felmerült hasonló probléma a rendszerbeállítások között, most a keresgélést megspórolva átállítottam a nyelvet angolra, és ezt követően hajlandó volt megjegyezni a dekorációs elemek kért megjelenését.

A rendszer működésében eddig semmi említésre érdemeset nem tapasztaltam, szépen teszi a dolgát.

A korábbi bejegyzésben szereplő szövegfelolvasó programot nem telepítettem automatikusan, hanem szétnéztem a neten, van-e érdemleges újdonság. Mint kiderült, a Mycroft AI, amelyhez a mimic3 tts is tartozott, nem kerül további fejlesztésre. Ellenben leltem egy Piper tts nevű hasonló tudású, de talán még jobb hangzású programot. (https://github.com/rhasspy/piper) Ehhez nem kell egy óriáskígyót (Anaconda) belecsavarni a Linuxba, van hozzá kész futtatható állomány, amely néhány könyvtári modul társaságában felolvassa a szöveget. A githubos oldalán ugyan nincs segédlet a beillesztéshez a speech-dispatcher-be, de a mimic3 tapasztalataival felvértezve már nem ijesztett el a feladat. A neten pedig találtam erre vonatkozó leírásokat. Nem linkelem ide, mert mindegyikben van eltérés/hiba, inkább közzéteszem, ami nálam működik.

A speech-dispatcher konfigurációs állományait átmásoltam a saját könyvtáram .config almappájába. A speechd.conf-ban ez alkalommal a Pulse hangrendszert jelöljük meg végrehajtóként:


AudioOutputMethod "pulse"


A hangmodulok szekcióba pedig felvesszük a Piperét:


AddModule "piper-generic" "sd_generic" "piper-generic.conf"


A modules konfigurációs almappában el kell készíteni a piper-generic.conf fájlt, amely így néz ki:


GenericExecuteSynth "env DATA='$DATA\' VOICE=\'$VOICE\' RATE=\'$RATE\' piper-pipe"

GenericCmdDependency "piper-pipe"

AddVoice "en_GB" "FEMALE1" "en_GB-cori-high"

AddVoice "en_US" "FEMALE1" "en_US-lessac-high"

AddVoice "en_US" "FEMALE1" "en_US-ljspeech-high"

AddVoice "en_US" "MALE1" "en_US-ryan-high"

AddVoice "fi_FI" "MALE1" "fi_FI-harri-medium"

AddVoice "hu_HU" "FEMALE1" "hu_HU-berta-medium"

AddVoice "hu_HU" "MALE1" "hu_HU-imre-medium"

DefaultVoice "en_US-ljspeech-high"


Az AddVoice sorokba persze, mindenki azokat a hangokat veszi fel, amelyeket letöltött magának. A piper-pipe egy kis végrehajtható állomány, amely inkább csak arra kell, hogy egy változót a hang minőségétől függően beállítsunk benne. A saját mappám bin-jébe került, így Path-ban van. Így néz ki:


#!/bin/bash

VOICE_PATH=elérési út a hangfájlokhoz

if [[ ${VOICE: -3} = low ]]; then

  ADJ_RATE=16000

else

  ADJ_RATE=22050

fi

ADJ_RATE=$((${RATE::-3} * 30 + $ADJ_RATE))

echo "$DATA" | elérési út a Piperhez/ptts --model $VOICE_PATH/$VOICE.onnx  --output-raw | \

aplay -r $ADJ_RATE -f S16_LE -t raw -

wait


A piper végrehajtható fájlt átneveztem ptts-re, mert olvastam lehetséges névütközésről.


Helyreállt a világ rendje, működik a felolvasás.