Transkripce psaného českého textu do fonetické podoby

Transkript

Transkripce psaného českého textu do fonetické podoby
Transkripce psaného českého textu
do fonetické podoby
Dana Nejedlová, Marek Volejník
Laboratoř počítačového zpracování řeči
Technická univerzita v Liberci
1. ZAŘAZENÍ TÉMATU DO PROBLEMATIKY KOMUNIKACE S POČÍTAČEM
MLUVENOU ŘEČÍ
Za účelem počítačového zpracování řeči je třeba vytvořit její model. Řeč je snímána
mikrofonem a výsledkem jsou analogové kmity, které se dále vzorkováním a kvantizací
převedou na posloupnost vektorů popisujících jednotlivé mikrosegmenty řečového signálu.
Při rozpoznání takovéto nahrávky počítačem, jehož výsledkem je například přepis nahrávky
do textové podoby, je třeba rozdělit tuto posloupnost do jistých úseků neboli segmentů, které
vymezují předem definované fonetické či lingvistické jednotky korespondující s úsekem
textu. Při opačném procesu, kterým je počítačová syntéza řeči, je zase třeba mapovat
jednotlivé znaky čteného textu na posloupnost vektorů popisujících výstupní akustický signál
vysílaný počítačem opět s využitím segmentace.
2. ROZDÍLY MEZI MLUVENOU A PSANOU FORMOU JAZYKA
Při automatickém převodu mluvené řeči na text nebo při opačném procesu syntézy řeči
podle textu je třeba přihlédnout k jistým odlišnostem mluveného a psaného jazyka. Toto téma
je velmi dobře zpracováno v literatuře [1]. Tato kapitola shrnuje nejdůležitější informace
o rozdílech mezi jazykem mluveným a psaným.
Zvuková forma jazyka je starší, psaná forma jazyka vznikla jako záznam formy mluvené.
Přirozený jazyk je znakový systém. Prvky jazykového systému jsou při vytváření jazykových
jednotek i jazykových projevů lineárně uspořádány, vytvářejí lineární řetězy. Zaměníme-li
pořadí prvků v řetězech, změní se tím význam. To se nápadněji projevuje u zvukové formy
jazyka. Například rozdíl slov ano a ona je v psané podobě opřen o pořadí použitých písmen.
V mluvené podobě jazyka si nelze představovat, že mechanickým obrácením vysloveného
slova ano vznikne slovo ona.
V jazykové komunikaci se linearita jazyka promítá jako závislost na časovém průběhu
jazykového projevu. Mluvčí vytváří projev postupně a posluchač postupně zpracovává
zvukový signál. Takové faktory, jako rychlost, s jakou za sebou následují relevantní prvky,
délka těchto prvků a vyjádření vazeb mezi nimi, bezprostředně ovlivňují pozitivní nebo
negativní výsledek komunikace. V psaném projevu je faktor času zřetelně oslaben. Například
příjemce sám určuje rychlost, s jakou přijímá sdělení, předem je informován o délce projevů,
o zařazení jednotlivých prvků v kontextu atd. Důsledky tohoto rozdílu se objevují například
v gramatice: některé typy konstrukcí se v mluvené formě používají spíše výjimečně, ač
z hlediska významu nejsou přesně nahraditelné (např. přechodníky, souslednost časová
apod.).
V psaném jazyce jsou jednoznačně určeny hranice prvků jazyka, jako jsou písmena,
slova, věty a odstavce. Mluvená řeč představuje souvislý zvuk a její rozložení na segmenty
klade na příjemce podstatně vetší nároky, než je tomu v psané formě jazyka. Na druhé straně
10
poskytuje zvukové kontinuum možnosti obměňování významu, které psaná podoba může jen
nedokonale naznačit. Jsou to změny výšky hlasu (melodie řeči), změny dynamiky, tempa atd.
Jazykový systém je budován hierarchicky. Jeho prvky nižšího řádu (menší jednodušší)
obvykle tvoří součást prvku vyššího rádu (většího složitějšího). Mluvený a psaný jazyk se
však liší v inventáři jednotek, s nimiž je nutno počítat. V češtině platí pro mluvený jazyk
hierarchie „foném – slabika – přízvukový takt – promluvový úsek – věta“ a pro psaný jazyk
hierarchie „písmeno – slovo – věta“.
Při užití jazyka v reálné komunikaci je také důležitá skutečnost, že ve zvukové formě je
vždy obsažen určitý podíl informací o osobě mluvčího, například jeho charakteristika, zájem
o téma, vztah k partnerovi a psychický stav.
3. SEGMENTACE
Hlavní náplní tohoto příspěvku je popis procesu přepisu textu na jeden z možných typů
segmentů, kterým jsou fonémy. V této kapitole uvádíme definici fonému a dalších segmentů,
na které je možno členit řeč, podle literatury [2], kde se dočtete více podrobností.
Foném je nejmenší jednotka řeči, která může rozlišovat jednotlivá slova. Například, když
ve slově les s fonetickým přepisem [les] zaměníme foném [l] za foném [p], tak se toto slovo
změní na pes. Zvolíme-li jako segmentační jednotku foném, dostaneme nejmenší možný
inventář segmentů řeči. To je nesporná výhoda segmentování podle fonémů. Nevýhodou
fonémů je však to, že neobsahují informaci o koartikulaci s jejich fonetickým okolím.
Koartikulace je jev, při kterém určitý foném nabývá různých variant v závislosti na
předcházejícím a následujícím zvuku a na tempu a intonaci řeči. Pro odlišení různých variant
fonémů byl zaveden termín fón, což je jakákoli varianta jakéhokoli fonému, a alofón, což je
jakákoli varianta určitého fonému. Abychom se při segmentaci vyhnuli problémům
s koartikulací, můžeme jako segmentační jednotky využít některé jiné možnosti, mezi něž
patří:
- alofóny, jejichž nevýhodou je velikost jejich inventáře. Ten může nabývat takového počtu,
kolik je různých variant, jak lze každý foném obklopit jinými fonémy,
- difóny, což je posloupnost samohláska-souhláska, jejichž nevýhodou je opět velikost
inventáře,
- slabiky, což jsou fonetické útvary, které obsahují samohláskové jádro plus volitelé
počáteční a koncové souhlásky nebo skupiny souhlásek. Jejich nevýhodou je vedle
velkého inventáře (v mluvené češtině to je více než 10 000) i fakt, že neexistuje obecný
souhlas z fonetického i lingvistického hlediska o tom, kde mají být umístěny hranice
slabiky. V češtině existují také slabiky tvořené výhradně souhláskami, například ve
slovech prst, smrk nebo blb.
- poloslabiky, což jsou kompozice počáteční poloslabiky, obsahující počáteční souhláskový
shluk a příslušné části samohláskového jádra, plus koncové poloslabiky, obsahující
zbývající část samohláskového jádra a koncový souhláskový shluk. Jejich výhodu je, že až
5-krát redukují rozměr inventáře vyžadovaného pro reprezentaci promluv ve srovnání
s celými slabikami. Nevýhodou je složitost s rozdělováním samohláskového jádra.
- demislabiky, které podstatně eliminují obtíže vyskytující se při dělení na poloslabiky. Od
poloslabik se liší umístěním hranice mezi počáteční a koncovou demislabikou. Počáteční
demislabika je vymezena zcela krátce tak, že rozdělující hranice je umístěna těsně za
přechod souhláska-samohláska (tj. počáteční demislabika obsahuje koartikulační jev, ale
neobsahuje podstatnou část samohlásky). Umístění hranice tímto způsobem je efektivní
11
tím, že uvolňuje omezení na obou stranách hranice a má i potenciál v redukci inventáře,
podobně jako u poloslabik.
- slova, jejichž výhodou je eliminace nutnosti zacházet s komplikovanými algoritmy pro
segmentaci a identifikaci jednotek nižších. Při rozpoznávání plynulé promluvy však
dochází ke koartikulačním jevům i mezi krajními fonémy sousedních slov, což velmi
komplikuje problém vymezení hranic slov.
4. FONETICKÁ TRANSKRIPCE ČEŠTINY
Pro umožnění hlasové komunikace s počítačem, ať již jde o rozpoznávání lidské řeči nebo
její syntézu, je nutné zabezpečit automatický přepis libovolného psaného textu na
odpovídající řetězec fonémů, případně jiných jednotek zmíněných výše. Přesný a
nedvojznačný přepis textu či zvuků na posloupnost fonémů se nazývá fonetická transkripce.
Protože si nelze zapamatovat všechny tvary výslovnosti pro každou promluvu, je nutné hledat
obecná pravidla, podle nichž by bylo možné fonetický přepis automaticky vytvářet. Tato
obecná pravidla mohou být formulována jako produkční pravidla a nazývají se fonologická
pravidla. Protože většina fonémových změn může být vysvětlena levým a pravým kontextem
daného fonému, lze definovat obecné produkční pravidlo ve tvaru
JESTLIŽE řetězci znaků A bezprostředně předchází řetězec znaků C a je bezprostředně
následován řetězcem znaků D
PAK se A přepíše na řetězec znaků B.
Pro jednoduchost budeme v dalším výkladu toto pravidlo zapisovat ve tvaru
A → B / C _ D.
Definice pojmu fonetické transkripce a fonologických pravidel byla převzata z literatury
[2].
Pro zápis fonémů je třeba využít nějakou fonetickou abecedu. Mezinárodní fonetická
abeceda (International Phonetic Alphabet – IPA), zveřejněná v článku [3], se pro národní
účely může nahradit abecedami lépe vystihujícími místní fonetická pravidla. V článku [4]
byla navržena fonetická abeceda pro češtinu (Phonetic Alphabet for Czech – PAC), kterou
jsou zapisovány příklady fonetické transkripce v celém tomto příspěvku. Inventář fonémů
podle této abecedy je zachycen v tabulce č. 1. Na rozdíl od článku [4] v této tabulce chybí
znaky pro další prvky nezbytné pro popis akustické formy jazyka, jako je pauza a ruch.
Důvody pro zavedení fonetické abecedy pro češtinu byly následující:
- Některé české fonémy v mezinárodních abecedách chybí.
- České fonémy se mohou snadno vyjádřit českými národními znaky, což na rozdíl od
používání mezinárodních fonetických abeced, ulehčuje českým badatelům práci v tom, že
se snadno naučí představit si zvuk fonému podle jeho zápisu.
- S českými národními znaky, které vedle znaků anglické abecedy byly pro zápis fonémů
výhradně použity, se lépe operuje v počítačových systémech uzpůsobených češtině než
s těmi mezinárodními.
12
Tab. 1. Symboly pro české fonémy z PAC dle [4]
Číslo
Foném
vyjádřený
českými
hláskami
Foném dle
PAC
Příklad
Číslo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
„a“
„á“
„b“
„c“
„dz“
„č“
„dž“
„d“
„ď“
„e“
„é“
„f“
„g“
„h“
„ch“
„i“ nebo „y“
„í“ nebo „ý“
„j“
„k“
„l“
a
á
b
c
C
č
Č
d
ď
e
é
f
g
h
X
i
í
j
k
l
táta
táta
bába
ocel
leckde
čichá
rádža
jeden
dělat
lev
méně
fauna
guma
aha
chudý
bil, byl
vítr, lýko
dojat
kupec
dělá
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Foném
vyjádřený
českými
hláskami
Foném dle
PAC
Příklad
„m“
m
máma
„m“
M
tramvaj
„n“
n
víno
„n“
N
banka
„ň“
ň
koně
„o“
o
kolo
„ó“
ó
óda
„p“
p
pupen
„r“
r
bere
„ř“
ř
moře
„ř“
Ř
keř
„s“
s
sud
„š“
š
duše
„t“
t
dutý
„ť“
ť
kutil
„u“
u
duše
„ú“ nebo „ů“
ú
růže
„v“
v
láva
„z“
z
koza
„ž“
ž
růže
Neutrální
E
*)
samo hláska
*) hláska známá např. z angličtiny („temné e“) na konci slov typu „the“, v češtině se objevuje při hláskování
samohlásek typu b, d, k, s, atd, které jsou ve skutečnosti vysloveny jako bE, dE, atd.
Základní fonologická pravidla pro český jazyk jsou uvedena v literatuře [2]. V kapitolách
4.1 až 4.4. uvádíme jejich přehled. Tato pravidla využívají označení pro fonémy z tabulky č. 1
a zkratky vysvětlené v tabulce č. 2.
Tab. 2. Dělení českých hlásek dle [2]
Samohlásky (SA)
Znělé párové souhlásky (ZPS)
Neznělé párové souhlásky (NPS)
Jedinečné souhlásky (znělé) (JS)
b
p
d
t
ď
ť
a, á, e, é, i, í, o, ó, u, ú
g
z
ž
v
k
s
š
f
m, n, ň, l, j, r, ř
h
dz (C) dž (Č)
ch (X)
c
č
4.1. Základní přepisovací pravidla pro česká slova
Pro české ch (pozůstatek spřežkového pravopisu) se používá označení [X]
ch → X / _
(4.1.1)
ů→ú/_
(4.1.2)
w→v/_
(4.1.3)
České ů přepisujeme jako [ú]
Písmeno w přepisujeme na [v]
13
Písmeno q se přepisuje na [kv]
q → kv /_
(4.1.4)
y→i/_
ý→í/_
(4.1.5)
(4.1.6)
Samohlásky y/ý přepisujeme na [i/í]
Následuje-li ě po b, p, f, v, přepisuje se na [je]
ě → je / <b, p, f, v> _
(4.1.7)
Spojení dě, tě, ně, mě přepisujeme na [ďe], [ťe], [ňe], [mňe]
dě → ďe / _
tě → ťe / _
ně → ňe / _
ě → ňe / m_
(4.1.8)
(4.1.9)
(4.1.10)
(4.1.11)
Spojení di, ti, ni přepisujeme na [ďi], [ťi], [ňi]
d → ď / _<i, í>
t → ť / _<i, í>
n → ň / _<i, í>
(4.1.12)
(4.1.13)
(4.1.14)
Jestliže x stojí před znělou souhláskou, přepisuje se na [gz], jestliže stojí před neznělou
souhláskou či na konci slova, přepisuje se na [ks]
x → gz / _ <ZPS, JS>
x → ks / _ <NPS, - >
(4.1.15)
(4.1.16)
Písmeno x přepisujeme na [ks] na počátku slova před samohláskou a mezi samohláskami
x → ks / - _ SA
x → ks / SA1 _ SA2
(4.1.17)
(4.1.18)
Z pravidla (4.1.18) existuje výjimka. Jestliže na počátku slova je dvojice ex a následuje-li
po ní samohláska, přepisuje se na [egz]
ex → egz / - _ SA
(4.1.19)
4.2. Spodoba znělosti
Spodoby znělosti se zúčastňují jen souhlásky ze skupiny souhlásek párových. Spojení
takovýchto dvou souhlásek je buď celé znělé, nebo neznělé podle toho, je-li poslední
souhláska znělá či neznělá. Abychom mohli formalizovat zápis přepisovacího pravidla
označíme ¬ ZPS jako neznělý protějšek ke znělé souhlásce ZPS, tj ¬ b = p, ¬ d = t, ¬ ď = ť,
¬ g = k, ¬ v = f, ¬ z = s, ¬ ž = š, ¬ h = ch, ¬ C = c, ¬ Č = č. Obdobně označíme ¬ NPS znělým
protějškem k neznělé souhlásce NPS. Jestliže půjde při přepisu o stejnou souhlásku, přidělíme
jí stejný index, různý index však nemusí znamenat, že jde o jinou souhlásku.
Základní pravidla spodoby znělosti pak mají tvar
ZPS1 → ¬ ZPS1 / _ < - , NPS, ZPS2 - >
14
(4.2.1)
NPS1 → ¬ NPS1 / _ ZPS
(4.2.2)
Spodoba znělosti se může určitým způsobem projevit i přes hranice slov. Její účinek
může nastat jen při plynulém vyslovení příslušného slovního spojení (bez zřetelné pauzy mezi
slovy). Platí zde základní pravidlo, že znělá souhláska ztrácí na konci slova znělost a může ji
nabýt jen tehdy, když po ní následuje v počátku následujícího slova znělá souhláska párová
ZPS1 → ZPS1 / _ - ZPS2
ZPS1 → ¬ ZPS1 / _ < - NPS, - SA, - JS >
(4.2.3)
(4.2.4)
Obdobné pravidlo platí pro neznělou párovou souhlásku na konci slova, začíná-li
následující slovo znělou párovou souhláskou a nebo souhláskou ř
NPS1 → ¬ NPS1 / _ < - ZPS, - ř >
(4.2.5)
Z pravidel o spodobě znělosti (4.2.1) až (4.2.5) existují tyto výjimky:
Vícehláskové předložky zakončené znělou párovou souhláskou (před, pod, nad, bez, ob,
od) si zachovávají svou znělost, začíná-li následující slovo znělou párovou nebo jedinečnou
souhláskou
ZPS1 → ZPS1 / _ < - ZPS2, - JS >
(4.2.6)
Předložky z, v před znělou párovou či jedinečnou souhláskou zůstávají znělé
z → z / - _ < - ZPS, - JS >
v → v / - _ < - ZPS, - JS >
(4.2.7)
(4.2.8)
Předložka k se před nepárovými souhláskami a souhláskou v nemění v souhlásku znělou
k → k / - _ < - JS, - v >
(4.2.9)
Znělá souhláska v se spodobuje, ale sama spodobu nezpůsobuje
v → f / _ NPS
NPS → NPS / _ v
(4.2.10)
(4.2.11)
Spojení souhlásek s a h se spodobuje podle uvedeného základního pravidla (4.2.2) jestliže
mezi s-h je zřetelný prefixový šev ↓
s→z/_↓h
(4.2.12)
V ostatních případech se ve spojení sh může postupovat podle základního pravidla
(zejména ve výslovnosti na Moravě)
s→z/_h
(4.2.13)
a nebo dochází k tzv. postupné asimilaci (zejména v Čechách)
h→X/s_
(4.2.14)
Souhláska ř se v postavení před souhláskou párovou řídí základním pravidlem o spodobě
znělosti
ř → ř / _ ZPS
ř → Ř / _ < -, NPS, ZPS - >
15
(4.2.15)
(4.2.16)
V postavení po párové souhlásce podléhá ř postupné asimilaci
ř → ř / ZPS _
ř → Ř / NPS _
(4.2.17)
(4.2.18)
4.3. Spodoba artikulační
Při spojení dvou souhlásek s rozdílnou artikulací se vyrovnává rozdíl mezi jejich
výslovností artikulační spodobou. Rozeznáváme přitom asimilaci postupnou (předcházející
souhláska ovlivňuje následující) a asimilaci zpětnou (následující souhláska ovlivňuje
souhlásku předcházející).
Artikulační spodobu lze pozorovat u mnoha spojení souhlásek. Podle toho, jak těsnou
navrhujeme fonetickou transkripci, tj. jak přesně chceme přepsat či zaznamenat vyslovovanou
řeč, tak bohatá budou přepisovací pravidla. Pokusíme se nyní definovat nejdůležitější z těchto
pravidel.
Jestliže souhláska n stojí před okluzívami k nebo g, spodobuje se v [N]
n → N / _ < k, g >
(4.3.1)
Jestliže nazála m stojí před frikativami v nebo f, spodobuje se v [M]
m → M / _ < v, f >
(4.3.2)
Jestliže nazála n stojí před okluzívami ť, ď, spodobuje se často v [ň]
n → ň / _ < ť, ď >
(4.3.3)
Jestliže nazála ň stojí za souhláskami d, t, dochází k jejich spodobě na [ď], [ť]
d→ď/_ň
t→ť/_ň
(4.3.4)
(4.3.5)
Připouští se (tj. může i nemusí být) zjednodušená výslovnost závěrových souhlásek t, d ve
spojení s úžinovými s, z, š, ž. Tato výslovnost může být realizována pomocí polouzávěrových
protějšků [c], [č], popřípadě [C], [Č]
ts → c / _
tš → č / _
ds → c / _
dš → č / _
dz → C / _
dž → Č / _
(4.3.6)
(4.3.7)
(4.3.8)
(4.3.9)
(4.3.10)
(4.3.11)
V případě prefixového či mezislovního švu ve spojení ts, tš, ds, dš, dz, dž se dává
přednost zachování výslovnosti obou souhlásek. Výslovnost obou souhlásek se zachová i na
hranici předložek a jmen. Přitom ve spojení ds, dš se obvykle uplatní pravidlo o spodobě
znělosti.
Dvě stejné souhlásky cc, čč, dd, jj, kk, ll, nn, mm, ss, šš, tt, zz, které se nacházejí na
prefixovém či sufixovém švu (což je naprostá většina případů), se při vyslovení převážně
redukují na souhlásku jedinou. Pouze chce-li řečník zdůraznit šev, nebo se zdvojená
souhláska nachází na mezislovním švu, vysloví souhlásku zdvojenou. Podle tohoto pravidla
lze postupovat i v případě, kdy vedle sebe stojí dvojice hlásek NPS ¬ NPS nebo ZPS ¬ ZPS.
16
Většinou zde dochází k spodobě znělosti a vedle sebe jsou dvě stejné znělé či neznělé párové
souhlásky, u kterých může, ale nemusí dojít ke splynutí v hlásku jedinou.
4.4. Slovní přízvuk a ráz
Důležitou složkou fonetické transkripce je i umístění slovního přízvuku a rázu. Protože
korektní popis všech pravidel a všech výjimek k těmto pravidlům je rozsáhlý, jsou zde
uvedeny jen podstatné znalosti nezformulované do pravidel. Ráz se v češtině vytváří
automaticky a pravidelně po každé delší pauze, pokud další promluva začíná samohláskou.
Spisovná výslovnost vyžaduje užití rázu i po neslabičných předložkách v, z, s a k, začíná-li
následující slovo samohláskou. Slovní přízvuk je v mluvené češtině v zásadě vázán na první
slabiku přízvukového taktu. Přízvukový takt je úsek promluvy s jedním přízvukovým
vrcholem. Přízvukový takt má v češtině tyto vlastnosti:
a) Přízvučná slabika je zpravidla první slabikou přízvukového taktu.
b) V neutrální promluvě leží hranice taktů v místě hranic slov.
c) Přízvukový takt může obsahovat několik slov.
d) Hranice mezi jednotlivými přízvukovými takty je obvykle charakterizována kontrastem
stupně přízvučnosti (nepřízvučná – přízvučná).
Některá dílčí upřesnění a časté výjimky:
- Původní předložky jednoslabičné, jako je bez, na, do, ke, o, od, pod, po, přes, u apod.,
přejímají obvykle přízvuk následujícího slova a tvoří s ním jeden takt.
- Předložky nepůvodní, např. blíž, dle, kol, krom, skrz apod., přízvuk následujícího slova
nepřijímají.
- Některá slova, obvykle jednoslabičná, přízvuk nemají a vytvářejí se slovem předcházejícím
jednoslabičný takt.
- Některá slova nemají přízvuk zcela pravidelně a jejich základní podoba je nepřízvučná. Tato
slova se nazývají příklonkami a jsou to například zájmena se, si, mně, mi, ho, mu, částice li apod.
U výslovnosti několika frekventovaných slov se připouští i její nespisovná varianta:
jsem [jsem] i [sem], jsi [jsi] i [si], jste [jste] i [ste], jsme [jsme] i [sme], sedm [sedm] i [sedum],
osm [osm] i [osum] apod.
Nepřípustná nespisovná výslovnost se může vyskytnout například u slov:
kdyby [dibi], když [diš], vždycky [dicki], švestka [šveska], jedenáct [jedenác] apod.
5. REALIZACE AUTOMATICKÉ FONETICKÉ TRANSKRIPCE
Algoritmus využitelný pro naprogramování fonetické transkripce se dá zjednodušeně
popsat takto [2]:
- daný text se zpracovává znak po znaku zleva doprava;
- u každého znaku se nejprve zjišťuje, zda u něj nelze uplatnit nějakou výjimku; pokud ano,
výjimka se prioritně uplatní;
- pokud nelze na daný text uplatnit některou z výjimek, aplikuje se vhodné základní pravidlo;
17
- jestliže nelze na daný znak (písmeno) aplikovat žádnou z výjimek ani žádné z pravidel, znak
se jednoduše opíše do vytvářeného fonetického řetězce.
Ing. Volejník, který vyvinul program pro fonetickou transkripci, ve své diplomové práci
[5] popisuje tento algoritmus podrobněji: Program v přepisovaném textu nejprve nalezne větu,
tj. text oddělený na začátku a na konci některým z interpunkčních znamének. Ve větě
algoritmus programu vyhledává slova vyskytující se v souboru výjimek, do kterého jsou
zařazena cizí slova mající odlišnou výslovnost, než by odpovídalo již zmíněným
fonologickým pravidlům, a také jména, kterých je příliš mnoho a tudíž v souboru nejsou
všechna. V případě nalezení slova - výjimky si zapamatuje jeho pozici ve větě a pořadové
číslo slova v souboru výjimek a poté zavolá funkci, která provádí vlastní fonetickou
transkripci. Provede se sekvenčním způsobem písmeno po písmenu fonetická transkripce a
poté jsou vyměněna slova nalezená jako výjimky na začátku algoritmu. Tímto způsobem se
postupně převede celý text.
Následuje ukázka výsledku převodu vět pomocí výše zmíněného programu:
Spolek byl založen devatenáctého listopadu roku devatenácettřicetdva.
spoleg_bil_založen_devatenáctého_listopadu_roku_devatenácetŘicedva
Sejdeme se v naší restauraci ve čtvrt na sedm večer.
sejdeme_se_v_naší_restauraci_ve_čtvrt_na_sedm_večer
Kdy dnes odjíždí poslední vlak nebo autobus z Liberce do Pardubic.
gdi_dnes_odjížďí_posleďňí_vlak_nebo_autobuz_z_liberce_do_pardubic
Na konferenci senátor rovněž kritizoval současné právní prostředí.
na_konferenci_senátor_rovňeš_kritizoval_současné_právňí_prostŘeďí
Výkon brankáře znamenal pro hokejové družstvo dobré umístění v tabulce.
víkon_braNkáře_znamenal_pro_hokejové_drušstvo_dobré_umísťeňí_f_tabulce
Dnes bude oblačno až polojasno, místy možno očekávat přeháňky.
dnez_bude_oblačno_aš_polojasno_místi_možno_očekávat_pŘeháňki
Využití výsledků tohoto programu komplikuje fakt, že výslovnost mnoha slov není
ustálena, takže pro některá slova existuje více variant, jak je lidé vyslovují. Velice
komplikované by také bylo zabudovat do programu umístění slovního přízvuku a rázu
v transkripci, viz kapitola 4.4, a rozpoznání částí věty, které lidský řečník obvykle vysloví
jakoby jedním tahem, což se nejčastěji nazývá promluvový úsek, viz předposlední odstavec
2. kapitoly, takže například transkripce
víkon_braNkáře_znamenal_pro_hokejové_drušstvo_dobré_umísťeňí_f_tabulce
by byla nahrazena za
víkonbraNkáře_znamenalprohokejovédrušstvo_dobréumísťeňíftabulce
Míra úspěšnosti transkripce tímto programem se blíží 100 %. Vyskytne-li se v transkripci
chyba, lze ji většinou odstranit přidáním nějaké výjimky. Soubor výjimek je tabulka, jejíž 1.
sloupek je úsek slova, 2. sloupek je jeho transkripce podle pravidel a 3. sloupek je transkripce
18
platící pro výjimku. Chceme-li dosáhnout 100% úspěšnosti, musíme do tohoto souboru
zadávat úseky slov co nejspeciálnější, což znamená, že záznamů zde bude více než v případě,
kdybychom volili kratší univerzálnější úseky slov. Například pokud jsou v souboru výjimek
tyto záznamy:
fini,
fini
fiňi
manit maňit manit,
moni moňi moni,
program pro fonetickou transkripci nám dá tyto výsledky:
finiš je správně přepsáno na [finiš], ale chybně je přepsáno Fini na [fini].
humanitární je správně přepsáno na [humanitárňí], ale chybně je přepsáno vymanit na
[vimanit].
Monika je správně přepsáno na [monika], ale chybně je přepsáno Mormoni na [mormoni].
6. ALTERNATIVNÍ ZPŮSOB FONETICKÉ TRANSKRIPCE
V 80. letech došlo na vědeckých pracovištích zabývajících se umělou inteligencí
k obnovení zájmu o v průběhu 70. let podceňovaný obor zvaný neuronové sítě, který se
rozvíjel od začátku 50. let. Jedním z produktů této doby byl experiment s neuronovou sítí
provedený Američany Terrencem Sejnowskim z Johns Hopkins University a Charlesem
Rosenbergem z Princetonu publikovaný v článcích [7] a [8]. Jejich síť NETtalk četla tisíce
příkladů anglických slov, pomocí řečového syntezátoru je vyslovovala a výsledek své
fonetické transkripce korigovala podle správné fonetické transkripce, kterou měla spolu se
slovy k dispozici. Úspěšnost fonetické transkripce sítě se postupně zlepšovala až na přibližně
90 % správně přepsaných dvojic písmeno-foném. Nakonec síť dokázala správně vyslovovat i
některá slova, u kterých neměla k dispozici jejich správnou fonetickou transkripci, což
znamená, že zobecnila dříve naučená pravidla z jedněch příkladů na jim podobné. Perličkou
bylo, že syntetizovaná řeč sítě NETtalk se zpočátku podobala žvatlání malého dítěte.
Ing. Nejedlová provedla velmi podobný pokus pro případ fonetické transkripce češtiny,
který zdokumentovala ve výzkumné zprávě [6]. Naprogramovala třívrstvou neuronovou síť
učící se podle algoritmu back-propagation, kterou znázorňuje obrázek č. 1. Na rozdíl od sítě
NETtalk byl výstup této sítě pouze textový.
a
á
b
c
C
č
Č
d
…
_
…
…
…
1. písmeno
…
…
2. písmeno
…
…
3. písmeno
…
…
4. písmeno
Obr. 1: Třívrstvá neuronová síť pro fonetickou transkripci češtiny
19
…
…
5. písmeno
Kroužky na obrázku č. 1 znázorňují neurony. Dolní řádek neuronů je vstupní vrstvou sítě,
prostřední řádek neuronů je takzvanou skrytou vrstvou sítě a horní řádek neuronů je výstupní
vrstvou sítě. Neurony mezi sousedními vrstvami byly propojeny způsobem každý s každým.
Na obrázku č. 1 je to z důvodu přehlednosti znázorněno jen u prvního vstupního a prvního
výstupního neuronu. Neuron provádí matematické operace se signály v podobě reálných čísel.
Každému neuronu a každé synapsi spojující neurony patří nějaké proměnlivé reálné číslo.
Hodnota vstupních neuronů je zpravidla v intervalu <0, 1>. Číslo patřící synapsi se nazývá
její váha. Každý neuron na skryté a výstupní vrstvě spočítá skalární součin vah synapsí a
hodnot na neuronech, od kterých do něj synapse vedou. Od výsledku nejdříve odečte
takzvanou prahovou hodnotu, která je ještě jedním jeho proměnným atributem, a nový
výsledek předá do sigmoidální aktivační funkce znázorněné na obrázku č. 2, jejímž
výsledkem je nová hodnota neuronu v intervalu (0, 1), kterou zpracují neurony v následující
vrstvě.
1
0,9
0,8
0,7
0,6
0,5
0,4
0,3
0,2
0,1
0
-5
-4
-3
-2
-1
0
1
2
3
4
5
Obr. 2: Sigmoidální aktivační funkce neuronu
Pro každý vstupní vzor, který vypadá jako vektor nul a jedniček, jinými slovy, je binární,
jehož každý prvek je hodnotou jednoho neuronu na vstupní vrstvě, síť vrátí nějaký výstupní
vzor, jehož hodnotou je vektor reálných čísel v intervalu (0, 1), jehož každý prvek
koresponduje s konečnou hodnotou na určitém neuronu výstupní vrstvy. Je zřejmé, že pro
konkrétní vstup se výstup mění v závislosti na hodnotách vah. Pokud do binárního vektoru na
vstupu nějak zakódujeme nějakou skutečnost, můžeme dekódováním výstupního vektoru
zjistit odpověď sítě na vstup. Výše zmíněný algoritmus back-propagation postupně upravuje
hodnoty vah sítě a prahů neuronů tak, aby po několika přečteních určitého vstupního vzoru síť
pro něj na výstupní vrstvě vracela přibližnou hodnotu předem zadaného správného výstupu.
Podobně, jako je tomu v biologii, kdy změna reakce organismu na podnět je dána změnou
vlastností synapsí přenášejících mezi neurony jeho mozku vzruchy, se úprava vah umělé
neuronové sítě žádoucím směrem nazývá učení. Kdyby se neuronová síť uměla pouze naučit
to, co do ní bylo vloženo, byla by poněkud samoúčelná. Praktický význam neuronových sítí
tkví v tom, že se naučí správně reagovat na typické zástupce nějaké třídy vektorů a potom
správně reagují i na jim podobné vzory, které se již nemusí učit.
Neuronová síť pro fonetickou transkripci češtiny přepisovala izolovaná slova. Každé
slovo četla pomocí pomyslného 5-ti znakového okénka, kterým postupně procházel řetězec
písmen tohoto slova, a snažila se uhodnout foném patřící písmenu, které se právě nacházelo
uprostřed. Po každém odhadu sítě následovalo přepočítání vah podle správné hodnoty
fonému, který tvořil druhou část vstupu, algoritmem back-propagation.
V tomto stručném popisu problému zbývá zodpovědět otázku reprezentace slov a jejich
fonetického přepisu. Vstupní vrstva sítě byla rozdělena na 5 pomyslných sektorů pro 5 znaků
v okénku. Každý sektor měl 44 neuronů, protože ve vstupním textu se mohlo objevit 44
20
různých znaků, včetně znaků pro okraj slova. Vstupními vzory byly binární vektory, ve
kterých byla pro každý sektor sítě právě jedna jednička určující, který znak se právě nacházel
na příslušné pozici okénka. Výstupní vrstva měla 56 neuronů pro 56 možných znaků pro
fonémy. Oproti tabulce č. 1, ve které je 40 fonémů, bylo nutné inventář fonémů rozšířit o
fonémy pro pauzu (skýtající potenciál sítě i pro rozpoznávání neizolovaných slov), foném pro
vynechání písmena bez náhrady (aby bylo možné například šš přepsat na š) a fonémy
reprezentující dvojice některých fonémů (aby bylo možné například q přepsat na kv). Foném
odhadnutý sítí byl ten, jehož příslušný neuron měl nejvyšší hodnotu. Korigující vstupní vektor
se správnou hodnotou fonému byl opět binární s právě jednou jedničkou.
Po několika pokusech s touto sítí bylo zřejmé, že úspěšnost jejích předpovědí nikdy
nepředčí výkon programu Ing. Volejníka. Nejlepší výsledek, kterého síť dosáhla, byl necelých
96 % správně rozpoznaných slov a 99,5 % správně určených fonémů z více než 10 000 slov.
Ačkoliv se tímto ukazuje, že aplikování neuronové sítě na problém fonetické transkripce není
nejlepší možné řešení, pokusy odhalily zajímavé detaily o chování neuronových sítí:
1. Bylo například zjištěno, že síť se učí po jednotlivých pravidlech a jakmile se nějaké
pravidlo naučí, dovede jej použít na slova, která se neučila, takže má vynikající
zobecňovací schopnosti. Poté, co se síť naučila přibližně 5 000 slov, vykazovala téměř
stejnou úspěšnost na souboru jiných 5 000 slov. Pravidlem se rozumí přepis konkrétního
písmena na konkrétní foném. Bylo identifikováno 92 takových pravidel. Neuronová síť se
jich naučila maximálně 86. Výjimky z pravidel se síť učila podstatně hůř.
2. Dále bylo zjištěno, že rychlost učení sítě se postupně zpomaluje až na nulu, což
znemožňuje například přeučení již vytrénované sítě na řešení nějakého jiného problému.
Síť se musí začít učit vždy z náhodně inicializovaných vah.
3. Nakonec bylo také zjištěno, že je možné ovlivnit, která pravidla se má síť naučit
přednostně. To je proveditelné tak, že na začátku učení se síť předtrénuje na omezeném
souboru slov, která obsahují pouze vybraná pravidla. Vzhledem k jejich menšímu počtu se
je síť všechny naučí a potom může pokračovat v učení se rozšířenému souboru, který
obsahuje i jiná pravidla. Cenou za možnost výběru naučených pravidel je fakt, že celkový
počet naučených pravidel je potom nižší, což souvisí s bodem 2.
4. Pravidla, která se síť během učení naučila, již většinou nezapomene, pokud by se výběr
trénovaných pravidel v průběhu učení změnil nebo rozšířil na jiná.
7. ZÁVĚR
Jedním z nejnáročnějších cílů výzkumu komunikace s počítačem mluvenou řečí je
rozpoznání spojité řeči. Tento úkol se obvykle řeší pomocí kombinace akustického a
jazykového modelu. Akustické modely inventáře segmentů se porovnávají se signálem, a aby
se zvýšila pravděpodobnost nalezení správného modelu pro signál, může se použít i jazykový
model určující pravděpodobnosti, jak v dané řeči po sobě následují fonémy nebo slova či jiné
druhy segmentů. Z důvodů zajištění robustnosti se jazykový model vytváří z co největšího
množství textových dat. Ideálními daty by byl přepis souvislých promluv (například
telefonátů) do textové podoby, což pro češtinu není z různých důvodů k dispozici.
Nejschůdnější cestou pořizování textových dat neboli korpusů v češtině je získávání
novinových článků, které se vystavují na Internetu nebo vydávají na CD-ROMech. Výsledek
statistického zpracování fonetické transkripce těchto textů by měl napomoci rozpoznávání
spojité řeči.
To je základní představa, ke které je však možné nalézt mnoho výhrad souvisejících
s rozdíly mezi mluvenou a psanou formou jazyka popsanými ve 2. kapitole. K těmto rozdílům
21
lze připočíst i další jako třeba to, že mluvený jazyk obsahuje mnoho nespisovných a
nářečových výrazů, které se v novinových textech nevyskytují, a v 5. kapitole zmíněná
potřeba zavedení více výslovnostních variant některých slov jakož i automatického členění
vět na promluvové úseky. K tomu se přidávají specifika novinových textů, například:
- Číslice psané číslem by se měly přepsat na slovo, což by nebylo složité, pokud by podobně
jako v angličtině existoval jen jeden tvar pro základní a jeden pro pořadovou číslovku.
Korektní přepis čísla v češtině by vyžadoval automatickým větným rozborem zjistit
správný pád.
- Do fonetické podoby by se měly přepsat i zkratky, což by nebylo složité, pokud bychom je
dokázali v textu automaticky identifikovat například podle toho, zda byla pro ně použita
velká či malá písmena.
- Obsah novinových článků se tématicky liší od spontánních promluv, což znamená že slovník
použitý pro jazykový model se bude možná nedostatečně krýt se slovníkem promluv,
které budou automaticky rozpoznávány.
Tyto a další problémy znamenají, že pro dosažení úspěšného rozpoznání spojité řeči
v češtině je třeba ještě mnohé vykonat.
Literatura:
[1] Palková, Z.: Fonetika a fonologie češtiny. Karolinum. Upravené vydání – dotisk. Praha
1997. ISBN 80-7066-843-1.
[2] Psutka, J.: Komunikace s počítačem mluvenou řečí. Academia. Praha 1995. ISBN 80-2000203-0.
[3] The International Phonetic Alphabet. Journal of the Phonetic Association, vol. 19, no. 12,
December 1989.
[4] Nouza, J., Psutka, J., Uhlíř, J.: Phonetic Alphabet for Speech Recognition of Czech. In:
Radio Engineering, vol. 6, no. 4, December 1997, pp. 16-20.
[5] Volejník, M.: Fonetická transkripce psané a mluvené češtiny pro účely automatického
zpracování řeči. [Diplomová práce]. Liberec 1999. – Technická univerzita v Liberci.
Fakulta mechatroniky a mezioborových inženýrských studií.
[6] Nejedlová, D.: Fonetická transkripce češtiny pomocí třívrstvé neuronové sítě. [Výzkumná
zpráva]. Liberec 2000. – Technická univerzita v Liberci. Fakulta mechatroniky a
mezioborových inženýrských studií.
[7] Sejnowski, T. J., Rosenberg, C. R.: NETtalk: a Parallel Network That Learns to Read
Aloud. In: Cognitive Science, 14, 1986, pp. 179-211.
[8] Sejnowski, T. J., Rosenberg, C. R.: Parallel Networks That Learn to Pronounce English
Text. In: Complex Systems, 1, 1987, pp. 145-168.
22