LINUXZONE






 >> Hlavní stránka

(1713/30.07.2010)


 >> Administrace

(160/29.07.2010)


 >> Literatura

(305/28.07.2010)


 >> Bezpečnost

(340/30.07.2010)


 >> Programování

(307/19.04.2010)


 >> Distribuce

(97/09.06.2010)


 >> Síťování

(86/03.06.2010)


 >> Lokalizace

(10/15.09.2004)


 >> Aplikace

(175/12.04.2010)


 >> Multimedia

(32/31.03.2006)


 >> Hardware

(45/02.03.2007)


 >> Začínáme

(228/24.06.2010)


 >> Aktuálně

(556/27.07.2010)


 >> RELAX

(201/26.07.2010)


 >> Jinde vyšlo

přehled ostatních serverů




 Přihlášení




Login:
Heslo:
 uložit v prohlížeči


Nejste-li ješte zaregistrováni, můžete tak učinit zde.





 Vyhledávání




Hledaný výraz:
v klíčových slovech
v titulku
v anotaci
v textu








 Reklama









 Servis




*   Vaše náměty a připomínky
Máte k Linuxzone.cz nějaké připomínky nebo náměty? Našli jste na stránkách chybu? Dejte nám o tom vědět pomocí formuláře nebo v diskuzi.
Komentářů: 30
*   Podpořte Linuxzone.cz
Chcete podpořit náš server umístěním odkazu nebo zveřejněním backendu? Zde najdete vše potřebné.
*   Pište pro Linuxzone.cz
Máte zájem podílet se na obsahu Linuxzone.cz ať už jako redaktoři nebo i jinak? Dejte nám o sobě vědět!





 Aktuálně z bezpečnosti




-- 
6.12.2005, 19:01
Na serveru informit.com vyšla ukázková kapitola týkající se práce s řetězci z knihy Secure Coding in C and C++. (lz)

-- 
3.12.2005, 12:34
Bugtraq: Format String Vulnerabilities in Perl Programs. (lz)

-- 
3.12.2005, 12:32
Linux Advisory Watch December 2nd 2005. (lz)

-- 
23.10.2005, 13:28
Rozhovor na téma klasické zálohování versus CDP. (lz)

-- 
23.10.2005, 13:24
Linux Advisory Watch October 21st 2005. (lz)

další >>





 Aktuálně o software




-- 
6.12.2005, 19:07
Potřebujete-li pod linuxem rozchodit bezdrát založený na čipsetech Broadcom 43xx, konečně existuje linuxový ovladač. (lz)

-- 
6.12.2005, 19:04
Byla uvolněna verze Xen 3.0.0 virtualizační technologie XEN. (lz)

-- 
6.12.2005, 18:59
Byla uvolněna verze X11R6.9/X11R7 RC 3 grafickérho rozhraní X Window System. (lz)

-- 
3.12.2005, 12:45
Co je nového okolo projektu Amanda (open source zálohovací software)? Více na osnews.com. (lz)

-- 
3.12.2005, 12:40
Jak to akuálně v linuxu vypadá s podporou SATA.. (lz)

další >>





 Aktuálně z IT




-- 
3.12.2005, 12:51
Novellu se daří prodej linuxových produktů, oproti loňskému roku se Novell dočkal výrazného nárůstu. (lz)

-- 
3.12.2005, 12:48
Třetí verzi licence GPL by měla být publikována během jara 2007. (lz)

-- 
23.10.2005, 13:20
V Peru nyní mají zákon, který umožňuje nasazení open source software ve vládní správě. (lz)

-- 
23.10.2005, 13:14
Proč se Microsoft bojí Google? (lz)

-- 
27.9.2005, 22:01
Peru má zákon podporující free software. (lz)

další >>





 Nejčtenější články




-- 
Hurd včera dnes a zítra

-- 
XEN aneb virtualizujeme (3/6)

-- 
Security Digest (15/2010)

-- 
Fotografický ateliér

-- 
XEN aneb virtualizujeme (4/6)

-- 
Novinky ze světa svobodného software (16/2010)

-- 
Gamesárium [138]

-- 
Proč používat svobodný software?

-- 
Velká kniha sportovní fotografie

-- 
Security Digest (16/2010)






 Nejlepší články




-- 
Gamesárium [138]

-- 
Datové struktury bez předchozích znalostí

-- 
XEN aneb virtualizujeme (4/6)

-- 
XEN aneb virtualizujeme (3/6)

-- 
Security Digest (16/2010)

-- 
Novinky ze světa svobodného software (17/2010)

-- 
Velká kniha sportovní fotografie

-- 
XEN aneb virtualizujeme (5/6)

-- 
Security Digest (15/2010)

-- 
Proč používat svobodný software?






 Anketa




Používáte nějaké rozšíření bezpečnostního modelu linuxového jádra?

Openwall (18%)

LIDS (12%)

Pax/Grsecurity (3%)

SELinux (6%)

RSBAC (1%)

jiné (1%)

používám standardní jádro (59%)







Linuxzone.cz - server o Linuxu pro programátory, administrátory a fanoušky.
Provozuje společnost Impossible.
ISSN: 1213-8738





Systém syntézy řeči Festival

Syntéza řeči patří mezi zajímavé počítačové problémy s rozmanitým praktickým uplatněním. Vytvořit dobrou syntézu řeči není jednoduché, a tak například v oblasti svobodného softwaru, jinak na zajímavé programy bohaté, příliš velký výběr kvalitních řečových syntetizérů mít nebudete. Nejsofistikovanějším z nich je zřejmě Festival, který si v tomto článku trochu představíme.

Syntéza řeči obecně

Syntéza řeči je jedním z velmi důležitých, byť zatím poměrně málo využívaných, prostředků nabízených počítači. Mezi její nejvýznamnější oblasti využití patří například zpřístupnění počítačů zrakově postiženým, odkázaným na zvukový výstup či jiné alternativní nástroje výstupu, nebo dialogové služby provozované přes telefonní systémy. Smysluplně ji lze využívat ale i na běžné uživatelské úrovni, například pro přečtení článku bez nutnosti namáhat zrak již tak dost unavený celodenním vysedáváním u obrazovky monitoru nebo pro čtení občasných zpráv z IRC bez nutnosti soustavného civění do povětšinou prázdného promptu.

Chcete-li syntetizovat text na svém počítači, máte na výběr mezi hardwarovými zařízeními a softwarovou syntézou. Většina uživatelů dá v dnešní době nepochybně přednost softwarové syntéze, která je provozovatelná bez nutnosti pořizování a zprovozňování specializovaného hardwarového zařízení a stačí pro ni jakákoliv provozuschopná zvuková karta.

Uživatelé svobodných systému jsou na tom ovšem v tomto směru nevalně. Nechtějí-li být odkázáni na tvůrce proprietárních řečových systémů, příliš mnoho výběru jim nezbývá. Z rozumně použitelných systémů syntézy řeči lze pro příklad uvést Festival, Flite a Epos. V tomto článku se budeme věnovat prvnímu z nich, který poskytuje nejširší možnosti.

Co je Festival

Festival je kompletní systém syntézy řeči (text-to-speech system neboli TTS system) šířený pod licencí ve stylu BSD. Pod pojmem kompletní myslíme systém, který dokáže zvládnout celý proces syntézy řeči začínající u vstupního textu a končící výsledným zvukovým vzorkem.

Festival je původem z Edinburghské univerzity. Je určen jak pro akademický výzkum syntézy řeči, tak pro její praktické využití. Obsahuje prostředky pro analýzu textu, jeho interpretaci i syntézu výsledného zvuku. A nejen to, celý proces je modulární, takže lze aplikovat pouze některé jeho části nebo některé části nahradit jinými prostředky (například závěrečnou syntézu zvuku lze provést externím programem) nebo si definovat zcela vlastní sekvenci modulů.

Jádro Festivalu je napsáno v C++ a jsou v něm definovány základní systémové funkce, dále funkce, jejichž provádění je výpočetně náročné, a nakonec funkce, které zatím nebyly přepsány do rozšiřujícího jazyka Festivalu. Tím je tzv. SIOD (Scheme In One Defun), což je jednoduchý interpret jazyka podobného lispovému jazyku Scheme. Je to jazyk velmi jednoduchý, přitom však pro programování a úpravy rozšíření velmi dobře použitelný, a je v něm napsána významná část Festivalu. Díky rozšiřujícími interpretovanému jazyku můžete s Festivalem takřka neomezeně experimentovat, snadno a interaktivně cokoliv měnit, a to bez nutnosti modifikace zdrojových kódů Festivalu.

Festival je tedy systém rozšiřitelný a potřebujete-li pro něj napsat například podporu syntézy nového jazyka, vystačíte si pravděpodobně jen se SIOD a předpřipravenými parametrizovatelnými moduly. Celá filozofie systému je tedy podobná a stejně úspěšná jako například v případě populárního prostředí Emacs.

Základy používání Festivalu

Nebudu vás nudit popisem instalace, Festival si nejspíše nainstalujete z balíku své oblíbené linuxové distribuce a v případě nutnosti ruční instalace naleznete pokyny v instalačním návodu zdrojového balíku, který je ke stažení na stránkách Festivalu. Pouze upozorním, že Festival sám o sobě žádný řečový výstup nevyprodukuje, musíte k němu ještě mít nějaký hlas pro daný jazyk a k němu příslušné zvukové vzorky, případně nějaký jiný software, který umí výsledný zvuk na základě předaného popisu vyprodukovat. Kvalita zvukových vzorků hlasu je velmi významná pro výsledný výstup, takže je lepší použít raději lepší vzorky, ze svobodných anglických jsou to kallpc16k a kdlpc16k, dostupné opět přímo ve vaší distribuci nebo na stránkách Festivalu. S Festivalem dříve spojované náročnosti na hardware se bát nemusíte, nebudete-li jej chtít provozovat na nějakém PDA nebo opravdu starém PC, poběží hladce a spotřeba času procesoru bude nevýznamná.

Nejjednodušší je seznámit se s Festivalem interaktivně prostřednictvím jeho příkazové řádky. Dostanete se do ní prostým spuštěním binárky festival. První věcí, kterou si budete chtít vyzkoušet, bude nejspíše to, jak Festival mluví. Pro přemluvení zadaného krátkého textu lze využít funkce SayText:

  (SayText "Hello, world!")

Syntézu textu ze souboru provedete voláním

  (tts_file "/nějaký/soubor" nil)

Tento způsob syntézy textu lze doporučit pro jakékoliv delší texty nebo texty obsahující osmibitové znaky, jak se zmíníme později v souvislosti s češtinou. Na rozdíl od SayText nezačne tts_file mluvit až po zpracování celého textu, nýbrž jej rozdělí na menší části, které syntetizuje průběžně.

Potřebujete-li výsledný zvukový vzorek uložit do WAV souboru, můžete to udělat například takto:

  (utt.save.wave (SynthText "Hello, world!") "neco.wav" nil)

Můžete se přepínat mezi několika hlasy nebo jazyky, jsou-li instalovány, například:

  (voice_kal_diphone)

nebo

  (voice_ked_diphone)

Častým požadavkem je změna rychlosti a výšky řeči. Nastavení rychlosti řeči se provede nastavením parametru Duration_Stretch takto:

  (Param.set 'Duration_Stretch VALUE)

kde VALUE je kladná číselná hodnota, přičemž hodnota 1.0 odpovídá normálnímu tempu, nižší hodnoty poměrně zrychlují (zkracují výsledný vzorek) a vyšší hodnoty poměrně zpomalují (prodlužují výsledný vzorek).

Nastavení výšky hlasu je trochu složitější, protože bývá častěji závislé na použitém intonačním modelu konkrétního hlasu. Pro základní anglické hlasy lze nastavení výšky hlasu provést voláním

  (set! int_lr_params (cons '(target_f0_mean VALUE) (cdr int_lr_params)))

kde VALUE je průměrná výška hlasu v Hz, implicitně nastavená na 105.

Pro automatické provedení žádaných nastavení můžete využít globální startovací soubor /etc/festival.scm a lokální startovací soubor konkrétního uživatele ~/.festivalrc, kde můžete provádět stejná volání SIOD jako na příkazové řádce nebo ve festivalových programech.

Potřebujete-li syntetizovat text bez vstupu do interaktivního promptu, můžete tak učinit s pomocí volby příkazové řádky --tts:

  festival --tts soubor

K Festivalu existuje i emacsové rozhraní umožňující jednoduché přemluvení emacsového bufferu nebo regionu. Více informací o něm naleznete v manuálu Festivalu.

Festival jako server

Kromě řádkového rozhraní může Festival fungovat i v serverovém režimu. Spustíte-li jej s volbou --server, bude čekat, implicitně na TCP portu 1314, na přicházející spojení. Připojíte-li se k němu na tento port, můžete mu zasílat požadavky na volání rozšiřujícího jazyka a číst odpovědi. Festival vždy vrátí výslednou hodnotu daného volání funkce. Kromě toho lze prostřednictvím volání funkce send.wave.client na straně serveru poslat klientovi WAV vzorek, což je užitečné v případě, kdy po serveru chcete provést syntézu textu do zvukového vzorku bez jeho současného přehrání a výsledný zvuk potom přehrát ve vlastní režii.

Serverový režim je velmi užitečný při použití Festivalu v aplikacích. Umožňuje stálé spojení na Festival bez nutnosti jeho opakovaného startování a s tím spojenými inicializačními prodlevami a zároveň umožňuje rozumnější způsob komunikace se systémem, než je přesměrování vstupů a výstupů příkazové řádky.

Pokud si festivalový server spustíte a pokusíte se k němu připojit, pravděpodobně narazíte na častý problém, kterým je nepřítomnost jména lokálního stroje v proměnné server_access_list. Tato proměnná omezuje možnost připojení pouze na klienty z vyjmenovaných strojů. Smysl tohoto opatření je jasný -- bezpečnost není mezi předními cíli Festivalu, takže je záhodno omezit možnost připojení pouze na důvěryhodné stroje. Chcete-li se připojit z lokálního stroje, musíte v závislosti na vaší síťové konfiguraci mnohdy uvést kromě localhost i další jména tohoto stroje, jinak jej Festival nemusí rozpoznat a spojení odmítne. Například:

  (set! server_access_list '(localhost other-host-name))

Festival umožňuje v serverovém režimu povolit spouštění pouze předem určených funkcí. K jejich nastavení slouží funkce set_server_safe_functions. Tímto způsobem můžete server v případě potřeby dále zabezpečit, například proti pokusům číst a zapisovat libovolné soubory. Ani toto opatření však nemění nic na skutečnosti, že Festival se na bezpečnost nijak nezaměřuje a je tedy lépe jej v případě potřeby skutečného zabezpečení spouštět pod uživatelem nobody a aplikovat další vnější opatření.

Chcete-li změnit implicitní port, na kterém festivalový server sedí, můžete tak učinit nastavením proměnné server_port, například:

  (set! server_port 1315)

Festival a čeština

Čeština není silnou stránkou Festivalu. Na rovinu řečeno, Festival sám o sobě podporuje pouze angličtinu a ostatní jazyky je nutno doinstalovat. Kompletní řešení pro češtinu přitom neexistuje vůbec. Kromě toho se setkáte i s drobnými nepříjemnostmi jako je nemožnost zadávání osmibitového vstupu na příkazové řádce Festivalu. Pokusíte-li se do ní zapsat jakékoliv osmibitové znaky, ať už přímo nebo nepřímo třeba přesměrováním standardního vstupu, nedopadnete dobře. Toto omezení se však naštěstí týká pouze příkazové řádky, pro textové ani SIOD soubory ani pro serverový režim neplatí, tam můžete používat osmibitové znaky dle libosti.

Čeština ve Festivalu naráží jak na absenci důkladné analýzy textu, tak na nedostupnost českých zvukových vzorků. Druhý problém lze obejít použitím programu Mbrola, který je však nesvobodným softwarem a uživatel je tedy plně závislý na jeho tvůrcích. Syntéza výsledného zvuku je ale jen závěrečnou částí celého procesu syntézy řeči, předchází mu právě analýza vstupního textu a získání kompletního popisu výsledného řečového výstupu. V tomto směru je zatím asi nejdále projekt festival-czech, kromě něho existuje ještě nástroj cz2_mbrola.scm.

Praktické zkušenosti

Festival je možno hodnotit jako relativně stabilní a každopádně velmi mocný nástroj pro syntézu řeči. Mezi jeho klady bych zařadil zejména řadu modulů určených pro různé fáze procesu syntézy řeči, rozšiřitelný programovací jazyk, slušnou kvalitu anglické syntézy, poměrně podrobnou dokumentaci, svobodnou licenci a serverové rozhraní.

Jako nedostatky naopak vidím občasné pády (na které však narazíte pravděpodobně jen při různých experimentech, nikoliv při běžném provozu), dále místy chybějící části dokumentace, nemožnost zadávání osmibitového vstupu na příkazové řádce a chybějící přímou podporu nějakého multibytového kódování znaků.

Poznámka závěrem

Festival je velmi zajímavým svobodným systémem pro syntézu řeči. Bohužel svoboda všech těchto systémů a systémů souvisejících s hlasovým výstupem obecně je ohrožena. Důvody nejsou technické, jsou jimi obchodní zájmy prosazované právními nástroji prostřednictvím patentové legislativy. Nechcete-li, aby syntéza řeči (a zdaleka nejen ona) byla ovládána skupinou majitelů patentů a jejich právníky, věnujte prosím pozornost momentálně velmi aktuální problematice softwarových patentů v Evropské unii. Nepodaří-li se prosadit konečné schválení zákona vylučujícího softwarové patenty, bude ve vývoji softwaru ještě více potlačena otázka technické kvality ve prospěch mocenských zájmů, na kterých se může stát veškerý vývoj softwaru zcela závislým.

Odkazy

Autor: Milan Zamazal, 16. 12. 2003, 00:00
Sekce Aplikace, Komentářů: 0
Průměrné hodnocení: 2,91

o Poslat e-mailem
o Tisk článku
o Uložit do profilu


 Přispějte nám




Líbil se Vám tento článek? Můžete ho ocenit zavoláním na tel. číslo 906 460 134.
Cena hovoru za 1 minutu je 46 Kč.





 Hodnocení článku




Článek hodnotím jako:  [1] výborný   [2] dobrý   [3] průměr   [4] špatný   [5] hrůza  





 Komentáře







PŘIDAT KOMENTÁŘ ZOBRAZ VŠE >>










2002 © Impossible, s.r.o.   >> Kontaktujte redakci >> Právní upozornění >> Reklama