speech-dispatcher-cs: Konfigurace generického výstupního modulu
2.3.3.3 Konfigurace generického výstupního modulu
.................................................
Generický výstupní modul uživatelům dovoluje jednoduše si napsat vlastní
jednoduchý výstupní modul pro syntetizéry, které mají rozhraní ve formě
jednoduchého řádkového klienta, pouze modifikací konfiguračního souboru.
Tímto způsobem nemusí psát žádný specifický kód v C a uživatelé si mohou
přidávat podporu pro výstupní zařízení i když neumí programovat.
AddModule.
Klíčová část každého generického výstupního modulu je definice
řetězce, který se má spouštět.
-- Konfigurace generického modulu: GenericExecuteSynth
"EXECUTION_STRING"
'execution_string' je příkaz, který by měl být zavolán v shellu,
když je potřeba něco říct. Ve skutečnosti to může být více jak
jeden příkaz, dohromady zřetězené operátorem '&&'. Když bude
výstupní modul chtít přeříkávání zprávy zastavit, zašle těmto
procesům signál KILL, takže je důležité, aby použité příkazy po
obdržení KILL okamžitě přestaly mluvit. (Na většině GNU/Linuxových
systémů má tuto vlastnost utilita 'play')
V 'execution_string' můžete využít těchto proměnných, které budou
nahrazeny pořadovanými hodnotami, než bude příkaz vykonán.
* '$DATA' Text, který by měl být přeříkán. Znaky řetězce, které
by nějak interferovali se zpracováním v bashi budou
automaticky nahrazeny odpovídajícími escape sekvencemi. Asi
bude ale nutné uvést kolem této proměnné uvozovky (např.
takto: '\"$DATA\"').
* '$LANG' Identifikační řetězec jazyka (ten je definován pomocí
GenericLanguage).
* '$VOICE' Identifikační řetězec hlasu (ten je definován pomocí
AddVoice).
* '$PITCH' Požadovaná výška hlasu (desetinné číslo definované v
GenericPitchAdd a v GenericPitchMultiply)
* '$RATE' Požadovaná rychlost hlasu (desetinné číslo definované
v GenericRateAdd a v GenericRateMultiply)
Tady je příklad z 'etc/speech-dispatcher/modules/epos-generic.conf'
GenericExecuteSynth \
"epos-say -o --language $LANG --voice $VOICE --init_f $PITCH --init_t $RATE \
\"$DATA\" | sed -e s+unknown.*$++ >/tmp/epos-said.wav && play /tmp/epos-said.wav >/dev/null"
-- Konfigurace generického modulu: AddVoice "LANGUAGE" "SYMBOLICNAME"
"NAME"
AddVoice.
-- Konfigurace generického modulu: GenericLanguage "iso-code"
"string-subst"
Definuje, jaký řetězec 'string-subst' by měl být nahrazen za
'$LANG' pro daný 'iso-code' ISO kód jazyka.
Opět příklad z Epos generic:
GenericLanguage "en" "english"
GenericLanguage "cs" "czech"
GenericLanguage "sk" "slovak"
-- Konfigurace generického modulu: GenericRateAdd NUM
-- Konfigurace generického modulu: GenericRateMultiply NUM
-- Konfigurace generického modulu: GenericPitchAdd NUM
-- Konfigurace generického modulu: GenericPitchMultiply NUM
Tyto parametry nastavují konverzi pro výpočet rychlosti a výšky.
('$RATE' a '$PITCH').
Výsledná rychlost (nebo výška) je dána následujícím vzorcem:
(speechd_rate * GenericRateMultiply) + GenericRateAdd
kde speechd_rate je hodnota mezi -100 (nejnižší) a +100 (nejvyšší).
Je třeba definovat nějakou rozumnou konverzi pro daný syntetizér.
(Hodnoty v GenericNěcoMultiply jsou vynásobeny stem, protože
stávající verze DotConfu nepodporuje desetinná čísla. Můžete tedy
psát 0.85 jako 85 atd.)