i elektroniki katedra elektroniki - dsp.agh.edu.plsyntezatorpraca_fin.pdf · praca inzynierska...
TRANSCRIPT
Kraków, rok akademicki 2011/2012
AKADEMIA GÓRNICZO-HUTNICZA
IM. STANISŁAWA STASZICA W KRAKOWIE
Wydział Elektrotechniki, Automatyki, Informatyki
i Elektroniki
Katedra Elektroniki
PRACA DYPLOMOWA Inżynierska
Konkatenacyjny syntezator mowy polskiej
Concatenative Polish speech synthesis
Gęgotek Paulina
Korzec Daria Inżynieria Akustyczna (studia międzykierunkowe)
Opiekun pracy Dr inż. Jakub Gałka
Oświadczamy, świadomi odpowiedzialności
karnej za poświadczenie nieprawdy,
że niniejszą pracę dyplomową wykonaliśmy
osobiście i samodzielnie (w zakresie
wyszczególnionym we wstępie),
i że nie korzystaliśmy ze źródeł innych niż
wymienione w pracy.
Spis tresci
1. Wprowadzenie ................................................................................................................................ 7
2. Opis teoretyczny ............................................................................................................................. 9
2.1. Rodzaje syntezy mowy ........................................................................................................... 9
2.2. Narzad mowy człowieka......................................................................................................... 9
2.3. Fonetyka jezyka polskiego...................................................................................................... 11
2.3.1. Klasyfikacja głosek .................................................................................................... 11
2.3.2. Samogłoski................................................................................................................. 13
2.3.3. Spółgłoski................................................................................................................... 13
2.4. Główne zjawiska zachodzace w wymowie jezyka polskiego................................................. 14
2.4.1. Koartykulacja ............................................................................................................. 14
2.4.2. Palatalizacja (zmiekczenie)........................................................................................ 15
2.4.3. Prozodia w jezyku polskim ........................................................................................ 15
3. Realizacja........................................................................................................................................ 19
3.1. Baza nagran sygnałów mowy Corpora ................................................................................... 19
3.1.1. Segmentacja nagran ................................................................................................... 20
3.2. Transkrypcja fonetyczna – OrtFon AGH................................................................................ 21
3.3. Biblioteka BASS..................................................................................................................... 22
3.4. Funkcja kosztu ........................................................................................................................ 23
3.4.1. Energia ....................................................................................................................... 24
3.4.2. Ton krtaniowy ............................................................................................................ 24
3.4.3. MFCC......................................................................................................................... 24
3.4.4. LPC ............................................................................................................................ 25
3.4.5. Metryka Euklidesowa................................................................................................. 26
3.4.6. Metryka miejska......................................................................................................... 26
3.5. Grafy – struktura danych ........................................................................................................ 26
3.5.1. Wizualizacja grafów za pomoca Graphviz................................................................. 27
3.5.2. Algorytm Floyda-Warshalla....................................................................................... 27
3.5.3. Algorytm Dijkstry ...................................................................................................... 28
5
SPIS TRESCI 6
4. Efekty pracy ................................................................................................................................... 29
4.1. Struktura programu................................................................................................................. 29
4.1.1. Wywoływanie OrtFona .............................................................................................. 29
4.1.2. Tworzenie listy fonemów........................................................................................... 30
4.1.3. Obliczanie funkcji kosztu........................................................................................... 31
4.1.4. Tworzenie grafu ......................................................................................................... 32
4.1.5. Obliczanie najmniejszego kosztu sciezki................................................................... 34
4.1.6. Sposób wykorzystania biblioteki Bass....................................................................... 35
4.2. Interfejs uzytkownika.............................................................................................................. 36
4.2.1. Interfejs graficzny....................................................................................................... 36
4.2.2. Obsługa programu...................................................................................................... 36
4.3. Ocena syntenzy ....................................................................................................................... 37
5. Wnioski ........................................................................................................................................... 41
Bibliografia ........................................................................................................................................... 43
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
1. Wprowadzenie
Celem niniejszej pracy było stworzenie syntezatora mowy polskiej metoda konkatenacji. Metoda
ta opiera sie na łaczeniu jednostek fonetycznych z istniejacej juz bazy nagran mówcy w taki sposób,
aby zachowana była prozodia charakterystyczna dla jezyka polskiego. W tym celu zaimplementowano
program syntezujacy dowolne polskie słowa, a jakosc tej syntezy została oceniona przez subiektywne
testy MOS1 według rekomendacji ITU-T2 P.800.
Autorki pracy wybrały ten temat ze wzgledu na wciaz istniejacy problem syntezy mowy na poziomie
jak najbardziej zblizonym do mowy naturalnej. Zrozumiałosc wygenerowanych dzwieków nie jest juz
wyzwaniem, ale wciaz trwaja prace nad uwzglednieniem takich własciwosci mowy jak intonacja, akcent,
wyrazanie emocji. Konkatenacja zdaje sie byc odpowiednia metoda syntezy do próby rozwiazania tego
problemu. Istnieja trzy podstawowe metody realizacji konkatenacyjnej syntezy mowy: łaczenie krót-
kich segmentów fonetycznych (fonemy, difony); łaczenia wiekszych segmentów jak trifony, sylaby, całe
słowa; łaczenie segmentów o róznej długosci.
Najprostsze wydaje sie byc sklejanie najmniejszych jednostek mowy, jednak w tym przypadku po-
jawia sie problemem zwiazany z brakiem płynnosci brzmienia w miejscach konkatenacji, gdyz brzmienie
poszczególnych fonemów jest scisle zalezne od sasiadujacych z nimi innych fonemów. Do tej metody
stosuje sie zatem baze złozona z difonów (jednostek akustycznych zaczynajacych sie w połowie pier-
wszego, a konczacych sie w połowie drugiego fonemu – wyznaczenie srodka realizacji głoski moze
byc problematyczne). Wielkosc tej bazy zalezy od fonotaktyki danego jezyka i moze zawierac ok. 1300
difonów dla jezyka polskiego. Synteza ta metoda daje dosc dobre efekty – mowa jest zrozumiała dla
słuchacza, ale nie zachowuje naturalnej prozodii.
O wiele lepszym rozwiazaniem wydaje sie byc uzycie wiekszych zlepków słów – trifonów, sylab
lub nawet całych wyrazów. Pozwala to zachowac naturalnosc przejsc miedzy fonemami, jednak baza
nagran drastycznie sie zwieksza (w jezyku polskim mozna wyróznic 37 róznych fonemów, ok. 1300
difonów oraz ponad 40000 sylab potrzebnych do utworzenia dowolnego słowa). Taka metoda jest szeroko
stosowana zwłaszcza w systemach, które nie posiadaja duzego słownika, np. w zegarach podajacych
godzine. Wybór wyrazów jest tutaj ograniczony, a wiec mozna stworzyc taka baze nagran, która bedzie
zawierac gotowe słowa z zachowana naturalna intonacja.
Opisana synteza jest jednak mało uniwersalna, skuteczna jedynie dla konkretnego zastosowania. Co
zrobic w sytuacji, gdy słownik nie jest ograniczony do kilkudziesieciu wyrazów, a zalezy nam na uzyska-
1ang. Mean Opinion Score2ang. International Telecommunication Union - Telecommunication Standardization Sector
7
8
niu efektu naturalnej mowy ludzkiej? Z pomoca przychodzi stosunkowo niedawno wymyslona metoda
selekcji jednostek (w jezyku polskim nazywana równiez korpusowa). Opiera sie na efektywnych algo-
rytmach wyszukiwania jak najwiekszych fragmentów bazy nagran odpowiadajacych fragmentom synte-
zowanego tekstu. Pozwala to w duzej mierze na zachowanie naturalnych przejsc pomiedzy jednostkami
fonetycznymi, gdyz mozliwie długie zlepki fonemów pozostaja w swoim oryginalnym sasiedztwie.
Oczywiscie, jezeli zalezy nam na jak najlepszej prozodii, musimy wykorzystac jak najwieksza baze
nagran.
Z załozenia syntezator miał opierac sie na gotowej juz bazie nagran mówców, zadaniem autorek
było odpowiednie złaczenie takich fonemów, aby syntezowana mowa zachowała prozodie. W tym celu
nalezało znalezc odpowiedni algorytm doboru jednostek fonetycznych. Do transkrypcji fonetycznej z or-
tograficznej uzyto programu OrtFon AGH. Efekt został oceniony subiektywnymi metodami MOS.
Praca inzynierska składa sie z trzech czesci. W pierwszej opisano podstawowe zjawiska zwiazane
z generowaniem mowy ludzkiej, charakterystyke fonetyki jezyka polskiego oraz jego prozodii. Przed-
stawione zostały równiez pojecia zwiazane z realizacja syntezy. Nastepny rozdział zajmuje sie dokład-
nie opisem projektu od strony technicznej - uzyte narzedzia oraz problemy napotkane na drodze real-
izacji. Ostatnia czesc opisuje otrzymany efekt: budowe wewnetrzna oraz zewnetrzna programu, ocene
otrzymanej syntezy. Na koncu sformułowane zostały wnioski oraz ocena stopnia rozwiazania opisanego
problemu.
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
2. Opis teoretyczny
2.1. Rodzaje syntezy mowy
Mozna wyróznic cztery typy syntezy mowy:- formantowa;- artykulacyjna;- konkatenacyjna;- korpusowa, bedaca modyfikacja metody konkatenacyjnej.
1. Synteza formantowa – modelem tego syntezatora sa filtry cyfrowe kształtujace charakterystyke
czestotliwosciowa wygenerowanego sygnału, tak by odpowiadała charakterystyce danej głoski,
odzwierciedlajac jej charakterystyczne formanty. Syntezowana mowa jest niskiej jakosci.
2. Synteza artykulacyjna – podobnie jak w przypadku syntezy formantowej jest to model oparty
na generowaniu mowy za pomoca zbioru reguł. Model ten odzwierciedla działanie ludzkiego toru
głosowego. Synteza jest realizowana za pomoca analogowego urzadzenia elektromagnetycznego
i, ze wzgledu na skomplikowana budowe tego urzadzenia, nie jest praktycznie uzywana.
3. Synteza konkatenacyjna – metoda ta generuje mowe poprzez sklejanie posegmentowanych na-
gran głosu lektora. Nagrania sa odpowiednio przetworzone i oznaczone, w przygotowanej bazie sa
wyszukiwane, a nastepnie modyfikowane i łaczone poszczególne segmenty. Segmenty akustyczne
moga stanowic fony, difony, sekwencje fonemów, półsylaby, sylaby. Metoda ta pozwala na dosc
naturalne zsyntezowanie sygnału mowy przy niewielkim rozmiarze bazy danych. Problem w tej
metodzie moze natomiast stanowic łaczenie fragmentów nagranych w róznych kontekstach (pozy-
cja w zdaniu, typ wypowiedzi) oraz modyfikacja prozodii.
4. Synteza korpusowa – opiera sie na zasadach takich jak metoda konkatenacyjna, z ta róznica,
ze baza nagran jest duzo wieksza i zawiera segmenty róznej długosci – jednoczesnie np. di-
fony i sylaby, przy czym kazda jednostka jest reprezentowana wielokrotnie. Fragmenty nagran
sa dobierane za pomoca funkcji kosztu. Funkcja kosztu oszacowuje, który sposób wygenerowania
danej wypowiedzi bedzie najbardziej optymalny – które fragmenty maja odpowiedni czas trwania
oraz odpowiednia intonacje.
2.2. Narzad mowy człowieka
Budowa narzadów mowy pozwala lepiej zrozumiec kwestie zwiazane z powstawaniem artykulacji.
9
2.2. Narzad mowy człowieka 10
Narzad mowy składa sie z trzech odcinków:
1. Płuca – z których wydobywa sie powietrze wprawiajace w drgania wiazadła głosowe, co w kon-
sekwencji powoduje powstawanie drgan równiez w kolejnych odcinkach kanału głosowego.
Podczas wdechu powieksza sie objetosc jam opłucnowych, co z kolei powoduje powiekszenie ob-
jetosci pecherzyków płucnych. Cisnienie powietrza wewnatrz pecherzyków spada i w ten sposób,
poprzez napływ powietrza z zewnatrz, dochodzi do wyrównywania cisnien.
W trakcie wydechu natomiast zmniejsza sie objetosc jam opłucnowych, powodujac zmniejsze-
nie objetosci płuc oraz wzrost cisnienia w obrebie pecherzyków płucnych. Powietrze ponownie
na zasadzie wyrównywania cisnien wydostaje sie na zewnatrz.
Powietrze z płuc przedostaje sie do tchawicy, a nastepnie do krtani.
2. Krtan – własciwym generatorem drgan jest krtan. Wewnatrz krtani, połozone w jej poprzek, znaj-
duja sie dwie pary fałdów utworzonych przez miesnie i wiezadła. Odgrywaja one zasadnicza role
w procesie fonacji. Dolna para fałd to fałdy głosowe, na których brzegu znajduja sie wiezadła
głosowe. Wiezadła moga sie od siebie oddalac lub przyblizac. Przestrzen powstała pomiedzy
wiezadłami nazywana jest szpara głosni. Do powstania dzwieku niezbedne jest wytworzenie dr-
gan powietrza przechodzacego przez szpare głosni. Drgania te powstaja w nastepujacy sposób:
podczas wdechu w płucach gromadzi sie dostateczna ilosc powietrza. Na skutek ruchów miesni
oddechowych powietrze jest wydychane, co wprawia fałdy głosowe w drgania. Fałdy głosowe pod-
czas wydechu scisle przylegaja do siebie, co powoduje wzrost cisnienia ponizej fałdów, w okolicy
podgłosniowej. Gdy cisnienie przekroczy wartosc krytyczna, nastepuje rozwarcie szpary głosni.
Powietrze przepływa przez szpare. Powoduje to spadek cisnienia podgłosniowego i powrót fałdów
głosowych do pierwotnego połozenia – zwarcia. Naprzemienne cykle rozwierania i zwierania
fałdów głosowych powoduja powstawanie dzwieku – tonu krtaniowego. Charakter tonu krtan-
iowego jest zalezny od własciwosci fałdów głosowych: długosci, napiecia, elastycznosci i masy,
a takze od charakteru przepływu powietrza. Ton podstawowy zmienia swoja czestotliwosc, co
jest podstawowym czynnikiem kształtujacym intonacje wypowiedzi oraz melodie głosu. Intonacja
i modulacja głosu umozliwiaja identyfikacje mówcy. Czestotliwosc wibracji dla głosu meskiego
wynosi w mowie około 80-160 Hz, dla głosu zenskiego około 200-400 Hz. Wiezadła głosowe
wibruja podczas wymawiania głosek dzwiecznych.
3. Nasada – powstały w wyniku ruchów fałdów głosowych ton krtaniowy posiada okreslonawysokosc i natezenie, jest jednak słaby i bezbarwny. Dzwiek nabiera odpowiedniej siły i barwyw strukturach lezacych powyzej szpary głosni przez wzmocnienie lub osłabienie niektórych skład-owych tonu krtaniowego – powstaje głos artykułowany. Rezonatory nasady to:
- jama nosowa;
- gardło;
- jama ustna.
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
2.3. Fonetyka jezyka polskiego 11
W jamie ustnej znajduja sie narzady ruchome jak jezyk, wargi, podniebienie miekkie oraz nieruchome
jak zeby, dziasła, podniebienie twarde. Na skutek ruchów narzadów ruchomych oraz ruchów zwierania
i rozwierania szczek głos artukułowany jest zamieniany na głoski mowy.
Widmo danej głoski dzwiecznej powstaje jako nałozenie charakterystyki czestotliwosciowej traktu
głosowego na widmo tonu krtaniowego. W charakterystyce traktu głosowego maksima reprezentuja re-
zonanse poszczególnych narzadów. W rezultacie powstaje dla kazdej głoski odmienne widmo zalezne
od konfiguracji narzadów mowy w chwili artykulacji danej głoski, co umozliwia jej identyfikacje.
Tworzenie głosu i mowy wymaga współdziałania wszystkich wymienionych wyzej elementów. Jest
kontrolowane przy pomocy słuchu oraz osrodkowego układu nerwowego.
Figure 2.1: Narzady mowy człowieka
2.3. Fonetyka jezyka polskiego
Mowa składa sie z szeregu dzwieków zwanych głoskami. Głoska to najmniejszy element, który daje
sie wydzielic w czasie oraz intuicyjnie rozpoznac, bez własnego znaczenia. Głoske mozna wydzielic
w wyrazie poprzez jej stały zestaw cech artykulacyjno-akustycznych.
2.3.1. Klasyfikacja głosek
Kryterium akustyczne podziału głosek
Fonetyka akustyczna bada dzwieki ze wzgledu na własciwosci fizyczne fal wytwarzanych pod-
czas mówienia.
W podziale akustycznym wyróznia sie:
– Rezonanty – głoski, których przebiegi akustyczne wykazuja regularnosc lub maja przebieg tzw.
quasi-periodyczny: /a/, /o/, /u/, /e/, /m/, /n/, /l/, /j/, /w/, /i/,/ y/, /e/, /a/,
– Głoski plozywne (wybuchowe, plozje) – odpowiadaja im krótkie nieregularne przebiegi: /p/, /t/,
/k/, /g/, /b/, /d/;
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
2.3. Fonetyka jezyka polskiego 12
– Frykaty – składaja sie z przebiegów nieregularnych zwanych frykcjami: /f/, /s/, /s/, /sz/;
– Afrykaty – głoski o przebiegu nieregularnym, których frykcje poprzedzone sa słabym impulsem:
/cz/;
– Głoski nosowe – w ich widmie mozna zaobserwowac silne tłumienie składowych o wyzszych
czestotliwosciach oraz antyformanty około 900 Hz. Samogłoski nosowe w polskim maja realiza-
cje dyftongiczna. Otwarcie nosowe nie jest zsynchronizowane z otwarciem ustnym – samogłoska
nosowa poczatkowo jest ustna, po czym nastepuje płynne otwarcie kanału nosowego i przejscie
do artykulacji nosowej. Moze to powodowac problemy przy konkatenacyjnej syntezie mowy;
– Głoski ustne.
Kryterium artykulacyjne podziału głosek:
Kryterium artykulacyjne okresla mechanizmy wytwarzania dzwieków, udział poszczególnych
narzadów mowy i ich zachowanie podczas procesu wytwarzania mowy.
Podstawowym podziałem w tej klasyfikacji jest podział na spółgłoski i samogłoski. Przy wytwarza-
niu samogłosek w srodkowej czesci toru głosowego powstaje kanał bez duzych zwezen. Spółgłoski to
głoski z wargowa, przedniojezykowa, srodkowojezykowa oraz tylnojezykowa artykulacja.
Ze wzgledu na zachowanie sie wiezadeł głosowych głoski dzielimy na dzwieczne i bezdzwieczne.
Dzwieczne powstaja, gdy zsuniete wiezadła głosowe wibruja, wytwarzajac ton podstawowy.
Bezdzwieczne powstaja przy rozsunietej głosni.
Ze wzgledu na stopien zblizenia narzadów mowy wyróznia sie głoski:
- otwarte ;
- nosowe ;
- boczne;
- drzace ;
- półsamogłoskowe (otwarte niesylabiczne) ;
- szczelinowe ;
- zwarto-szczelinowe;
- zwarto-wybuchowe .
Ze wzgledu na miejsce artykulacji głoski dzielimy na:
- Dwuwargowe ;
- Wargowo-zebowe;
- Przedniojezykowe-zebowe;
- Przedniojezykowe-dziasłowe;
- Srodkowojezykowe;
- Tylnojezykowe (welarne).
Wszystkie polskie głoski sa głoskami ekspiracyjnymi – modyfikacja wydechu.
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
2.3. Fonetyka jezyka polskiego 13
2.3.2. Samogłoski
Wszystkie samogłoski sa dzwieczne, o przebiegach prawie regularnych. Dla ich artykulacji wazne
sa poziome i pionowe ruchy jezyka. Samogłoski sa osrodkami sylab – kazda sylaba zawiera jedna
samogłoske.
W jezyku polskim mozna wyróznic osiem samogłosek, szesc ustnych: /a/, /u/, /o/, /e/, /y/, /i/ oraz dwie
nosowe: /e/ i /a/. Samogłoski nosowe sa własciwie samogłoskami /e/ i /o/ wymówionymi z nazalizacja.
Zachowuja swój nosowy charakter tylko, gdy nastepuja po nich frykatywne spółgłoski. W innych przy-
padkach wymawia sie je jako:
- /e/ i /o/, jesli nastepuje po nich /l/ lub /ł/;
- /eł/ i /oł/, jesli nastepuje po nich /s/ lub /z/;
- /e/ i /o/ + nosowe /m/ lub /n/, jesli nastepuja po nich głoski plosywne lub afrykaty:
1. /p/ lub /b/ – /em/ i /om/;
2. /t/, /d/, /c/ lub /dz/ – /en/ i /on/;
3. /k/ lub /g/ – /eN/ i /oN/.
2.3.3. Spółgłoski
Kazda spółgłoske mozna jednoznacznie wyróznic za pomoca trzech cech zwiazanych ze sposobem
artykulacji (stopniem zblizenia narzadów mowy), miejscem artykulacji w jamie ustnej oraz drganiami
wiazadeł głosowych badz ich brakiem.
Ze wzgledu na sposób artykulacji wyrózniamy spółgłoski półotwarte (sonorne) oraz spółgłoski włas-
ciwe. Spółgłoski półotwarte to: otwarte niesylabiczne, boczne, drzace, nosowe. Wyrózniaja je prze-
biegi złozone z drgan regularnych – jak u samogłosek – oraz naddzwiecznosc – brak bezdzwiecznych
odpowiedników. Spółgłoski własciwe (szczelinowe, zwarto-szczelinowe, zwarto-wybuchowe) posiadaja
bezdzwieczne odpowiedniki.
Dodatkowa cecha opisu spółgłosek jest ich twardosc lub miekkosc. Jest to cecha pochodna od miejsca
artykulacji: kazda spółgłoska srodkowojezykowa jest miekka, pozostałe sa twarde.
Dwie takie same spółgłoski, gdy wystepuja jedna po drugiej, sa wymawiane jako jedna długa
spółgłoska, jednak w przypadku dwóch głosek wybuchowych pierwsza jest wymawiana jako krótka
przerwa. Spółgłoska /ł/ przewaznie nie jest wymawiana gdy znajduje sie miedzy spółgłoskami
lub po spółgłosce innej niz /r/.
Dla jezyka polskiego mozna wyróznic 37 fonemów (fonemem nazywamy najmniejszy funkcjonalny
element systemu jezykowego rozróznialny dla uzytkownika danego jezyka i niosacy znaczenie). Przed-
stawione sa one w tabeli nr 2.1.
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
2.4. Główne zjawiska zachodzace w wymowie jezyka polskiego 14
Fonem walfabecie IPA
Litera walfabeciejezyka
polskiego
Fonem walfabecie IPA
Litera walfabeciejezyka
polskiego
Fonem walfabecie IPA
Litera walfabeciejezyka
polskiegoA a j j ù sz
O (nosowe) a k k t tb b l l u uts c w ł v wtC c m m 1 ytù cz n n z zd d ñ n ü z
E e ïn (zapis
fonemu N)ý z
E (nosowe) e O o dz dzf f p p dü dzg g r r dý dzx h s si i C s
Table 2.1: Fonemy jezyka polskiego
2.4. Główne zjawiska zachodzace w wymowie jezyka polskiego
2.4.1. Koartykulacja
Koartykulacja jest tendencja do łagodzenia kontrastów miedzy głoskami wystepujacymi obok siebie.
Zachodzi dla sasiednich głosek w jednym wyrazie, a takze dla wyrazów sasiednich (jeden wyraz konczy
sie na spółgłoske szczelinowa lub zwarto-szczelinowa, drugi na taka głoske sie zaczyna). Zjawisko to
ma wpływ głównie na spółgłoski; jedynymi samogłoskami ulegajacymi zjawisku asymilacji sa /a/ i /e/.
Koartykulacja polega na zmianie miejsca artykulacji, czego rezultatem jest zamiana głoski
dzwiecznej na bezdzwieczna i odwrotnie, w zaleznosci od głosek sasiednich. Ma wpływ na głoski, które
maja swoje dzwieczne/ bezdzwieczne odpowiedniki.
Głoski podlegajace zjawisku koartykulacji:
– dzwieczne: /b/, /d/, /g/, /w/, /z/, /z/ (/rz/), /z/, /dz/, /dz/, /dz/;
– bedzwieczne: /p/, /t/, /k/, /f/, /s/, /sz/, /s/, /c/, /cz/, /c/.
Głoski dzwieczne nie majace swoich bezdzwiecznych odpowiedników, czyli: /m/, /n/, /n/, /l/, /ł/, /r/, nie
ulegaja temu zjawisku.
W jezyku polskim dzwieczne głoski wybuchowe, frykaty oraz afrykaty wystepujace na koncu słowa,
bedacego ostatnim słowem zdania lub wypowiadanego pojedynczo, sa wypowiadane jako bezdzwieczne.
Powoduje to nastepujace zamiany: /b/ – /p/; /d/ – /t/; /g/ – /k/; /w/ – /f/; /z/ – /s/; /z/rz/ – /sz/; /z/ – /s/; /dz/
– /c/; /dz/ – /c/.
Drugim przypadkiem wystepowania koartykulacji jest sytuacja, gdy w słowie wystepuje grupa
dwóch lub trzech spółgłosek (plozja, frykata, afrykata), w której wystepuja zarówno głoska dzwieczna
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
2.4. Główne zjawiska zachodzace w wymowie jezyka polskiego 15
jak i bezdzwieczna. Grupa ta jest wymawiana w całosci jako dzwieczna lub bezdzwieczna w zaleznosci
od rodzaju ostatniej głoski grupy.
Grupy, które ulegaja ubezdzwiecznieniu:
– grupa dwóch głosek: /bk/ – /pk/; /wsz/ – /fsz/; /zs/ – /ss/; /bs/ – /ps/; /bch/ – /pch/; /bc/ – /pc/; /dzk/
– /ck/; /wp/ – /fp/; /zk/ – /szk/; /wc/ – /fc/; /zc/ – /sc/;
– grupa trzech głosek: /bsk/ – /psk/; /dsk/ – /tsk/; /bszcz/ – /pszcz/; /dsc/ – /tsc/; /wsp/ – /fsp/; /wszcz/
– /fszcz/; /wsc/ – /fsc/; /zdk/ – /stk/; /zdzc/ – /scc/; /zdzk/ – /szczk/; /wsch/ – /fsch/.
Grupy, które ulegaja udzwiecznieniu:
– /kz/ – /gz/; /sb/– /zb/; /czb/ – /dzb/.
Wyjatkiem jest sytuacja, gdy na koncu grupy wystepuje /w/ lub /rz/ (nie dotyczy to głoski /z/) poprzed-
zona głoska bezdzwieczna. Wówczas /w/ i /rz/ traca swoja dzwiecznosc i zamieniaja sie w /f/ i /sz/.
W tym przypadku nastepuje asymilacja progresywna.
W przypadku koartykulacji miedzywyrazowej dzwiecznosc jest uwarunkowana jakoscia brzmienia
spółgłoski zaczynajacej drugi wyraz.
2.4.2. Palatalizacja (zmiekczenie)
W jezyku polskim wyrózniamy spółgłoski miekkie (srodkowojezykowe) oraz twarde (pozostałe
miejsca artykulacji). Spółgłoski srodkowojezykowe sa artykułowane za pomoca wyraznego uniesienia
srodkowej czesci jezyka i zblizeniu jej do podniebienia twardego, tworzac zwarcie lub szczeline. Zalicza
sie do nich: /s/, /z/, /c/, /dz/, /n/. Stanowia one odrebny dzwiek, nie sa miekkimi realizacjami głosek /s/,
/z/, /c/, /dz/, /n/.
Spółgłoski zmiekczone to przede wszystkim spółgłoski wargowe: /p/, /b/, /f/, /w/, /m/. Wymowa
zmiekczonych odpowiedników zachowuje wszystkie cechy artykulacyjne oprócz jednej – jezyk nie
pozostaje na dnie jamy ustnej, lecz podnosi sie i wysklepia ku górze. Artykulacja sredniojezykowa-
sredniopodniebienna zmienia rezonans spółgłosek wargowych, ale nie dodaje im szmeru.
Palatalizacji podlegaja takze spółgłoski tylnojezykowe: /k/, /g/, /h/. Posiadaja juz one artyku-
lacje jezykowa, wiec w tym przypadku nie jest dodawany nowy ruch artykulacyjny przy uzyciu
innego narzadu, lecz jest modyfikowana artykulacja podstawowa, dodajac rezonansu „miekkosci”
(poprzez rozszerzenie artykulacji od tyłu ku przodowi).
Zmiekczenie przedniojezykowych: /t/, /d/, /c/ polega na rozszerzeniu artykulacji atakujac podniebie-
nie twarde od przodu. Ten rodzaj palatalizacji wystepuje głównie w wyrazach obcego pochodzenia.
Spółgłoski zmiekczone pojawiaja sie w prawostronnym sasiedztwie samogłoski /i/, spółgłoski /j/
oraz spółgłosek srodkowojezykowych.
2.4.3. Prozodia w jezyku polskim
Mianem prozodii okreslane sa brzmieniowe własciwosci mowy, takie jak akcent, intonacja i iloczas.
Cechy prozodii współwystepuja w mowie, maja wpływ na siebie nawzajem. Sa zauwazalne, gdy za-
chodza róznice miedzy danym fragmentem wypowiedzi a fragmentami sasiednimi (np. miedzy dwoma
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
2.4. Główne zjawiska zachodzace w wymowie jezyka polskiego 16
sylabami). Moga wyrózniac osrodki sylab – akcent wyrazowy, iloczas, ton głosu lub całe sylaby – akcent
zdaniowy, intonacja zdaniowa, tempo mowy, rytm – tzw. prozodyczne cechy składniowe.
Akcent
Akcent nie jest zjawiskiem czysto fonetycznym, ale fonetyczno-składniowym. Uwypukla pewne
fragmenty wypowiedzi i ze wzgledu na ich rozmiar wyrózniamy:
- akcent wyrazowy – dotyczacy sylaby;
- akcent zdaniowy – dotyczacy wyrazu.
Akcent wyrazowy
W jezyku polskim akcent jest stały pod wzgledem fonetycznym, przewaznie przypada na przedostat-
nia sylabe wyrazu – akcent paroksytoniczny. Moze takze padac na trzecia sylabe od konca, np.:
- w wyrazach obcego pochodzenia zakonczonych na -ika/-yka (matematyka, muzyka, panika);
- w formach 1. i 2. osoby liczby mnogiej czasu przeszłego (pracowaliscie);
- w formach 1., 2. i 3. osoby liczby pojedynczej trybu przypuszczajacego (poszłabym, poszedłbys,
poszłaby).
Na sylabe czwarta od konca pada np. w formach 1. i 2. osoby liczby mnogiej trybu przypuszczajacego
(zrobilibyscie). Czasami wystepuje równiez akcent inicjalny – dodatkowy akcent na pierwszej sylabie
oraz oksytoniczny – na ostatniej sylabie (głównie przy wymowie skrótów). Własnego akcentu nie maja
zaimki, partykuły oraz przyimki.
Dzieki stabilnosci miejsca wystepowania akcent wyrazowy pełni funkcje demarkatywna, zapobiega-
jac zacieraniu sie granic miedzy wyrazami oraz zachodzeniu jednych na drugie.
Terminem niezbednym do omówienia akcentu wyrazowego jest sylaba. Jest to grupa składajaca sie
z samej samogłoski, samogłoski ze spółgłoskami lub ze spółgłosek zgłoskotwórczych w wyjatkowych
przypadkach. Sylaba przewaznie konczy sie samogłoska (nie jest to zasada w przypadku, gdy sylaba zna-
jduje sie na koncu słowa). Grupy spółgłosek wystepujace po samogłosce sa przenoszone do nastepnej
sylaby, za wyjatkiem spółgłosek /m/, /n/, /n/, /l/, /ł/, /j/, które, gdy wystepuje po nich kolejna spółgłoska,
sa dołaczane do poprzedniej sylaby. W przypadku podwójnej spółgłoski jak np. w słowie wanna,
para spółgłosek jest rozdzielana. W jezyku polskim kazda funkcjonalna sylaba posiada samogłoske.
Przewaznie na samogłoske (osrodek sylaby) przypada szczyt intensywnosci w obrebie sylaby. Sylaby
nalezy wiec porównywac miedzy soba pod wzgledem intensywnosci porównujac poziomy samogłosek.
Na krancach sylaby natezenie i donosnosc dzwieku maleja.
Akcentem mozna nazwac ceche fonetyczna sylaby, która wyróznia słowa lub grupy słów pod wzgle-
dem morfologicznym lub semantyczno-syntaktycznym.
Wyrózniamy cztery typy cech fonetycznych: barwe, wysokosc, czas trwania (iloczas), siłe (nateze-
nie). Cechom tym odpowiadaja nastepujace cechy artykulacyjne: ruchy narzadów mowy poza okre-
sowymi drganiami wiazadeł głosowych, okresowe drgania wiazadeł głosowych, trwanie artykulacyjnych
ruchów narzadów mowy (poza wiazadłami głosowymi), wielkosc wysiłku miesniowego przy artyku-
lacji; cechy akustyczne: widmo, czestotliwosc podstawowa, czas przebiegu, intensywnosc; cechy audy-
toryczne: typ segmentu fonicznego, intonacja, długosc trwania segmentu, głosnosc. Sylaby moga róznic
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
2.4. Główne zjawiska zachodzace w wymowie jezyka polskiego 17
sie miedzy soba pod wzgledem wchodzacych w ich skład segmentów fonicznych, wysokoscia przebiegu,
długoscia poszczególnych segmentów, dynamika.
Polski akcent główny oddziaływuje przede wszystkim na sylabe, na która pada. Spółgłoski sylaby
akcentowanej sa tylko lekko wzmocnione oraz wydłuzone, natomiast wyrazniej zwieksza sie energia
i iloczas samogłoski, akcent podwyzsza ja takze intonacyjnie. Samogłoski sylab przedakcentowych sa
przewaznie słabsze od niej, jeszcze słabsze sa samogłoski poakcentowe. Akcent jezyka polskiego jest
głównie akcentem siły – tzw. akcent dynamiczny, wzmacniajacy natezenie głosu.
Intonacja
Intonacja to nadawanie wypowiedzi pewnego rodzaju melodii poprzez zmiany tonu głosu, przez co
wyrazany jest jej specyficzny charakter. Poprzez intonacje dokonuje sie segmentacja wypowiedzi –
mozliwe jest rozpoznanie zakonczenia zdan i fraz oraz rozróznienie zdan oznajmujacych, pytajacych
i rozkazujacych. Intonacja ujawnia takze stosunek osoby mówiacej do wypowiadanej tresci.
Dla jezyka polskiego mozna wyróznic trzy rodzaje konturu intonacyjnego (zmian tonu głosowego):
– Kadencja – niski ton na ostatniej sylabie w przypadku zdan oznajmujacych nie wymagajacych uzu-
pełnienia, wykrzyknikowych oraz pytan o uzupełnienie. Kadencja wyraza całkowite zamkniecie
całosci, po której moze nie byc nic lub moze nastapic osobna całosc, nie zwiazana z poprzednia;
– Antykadencja – wysoki ton na ostatniej sylabie w przypadku zdan oznajmujacych wymagajacych
uzupełnienia (wypowiedzi urwanych) oraz pytan o rozstrzygniecie (pytan, na które odpowiada
sie ‘tak’ lub ‘nie’). Jest oznaka niezupełnosci, wymaga kontynuacji, dalszego objasnienia lub za-
konczenia;
– Progrediencja – brak silnego wzrostu, jak i spadku tonu podstawowego w obrebie ostatniego
wyrazu charakterystyczny dla wypowiedzi urwanych.
Pauzy moga stanowic srodek demarkacyjny wypowiedzi, rozgranicznik miedzy kadencjami , an-
tykadencjami i progrediencjami.
Przy ustalaniu intonacji wypowiedzi istotny jest jej podział na segmenty z uwzglednieniem znaków
przestankowych.
W praktyce systemy syntezy mowy realizuja na ogół tylko trzy zjawiska dotyczace intonacji:
1. zwiekszanie czestotliwosci podstawowej przy wyliczeniach po kolejnym elemencie,
2. zwiekszenie czestotliwosci podstawowej na koncu pytania,
3. opadanie czestotliwosci podstawowej przy koncu innych wypowiedzi.
Iloczas
Iloczas charakteryzuje specyficzny czas trwania poszczególnych dzwieków mowy. W jezyku pol-
skim iloczas jako zjawisko istotne ze znaczeniowego punktu widzenia nie wystepuje – nie mozna
wskazac par wyrazów o róznym znaczeniu rózniacych sie jedynie długoscia trwania którejs z głosek.
Moze byc jednak rozpatrywany jako zjawisko współistniejace z akcentem – akcent ma przewaznie
wzdłuzajacy wpływ na czas trwania segmentu mowy, przy czym wyrazniej mozna zaobserwowac to dla
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
2.4. Główne zjawiska zachodzace w wymowie jezyka polskiego 18
samogłosek. Dla niektórych spółgłosek jak /r/ i /l/ wydłuzenie czasu wymowy praktycznie nie zachodzi.
Wpływ akcentu obejmuje cała sylabe, jednak to samogłoski sa głównym nosnikiem cech prozodycznych
i głównie na nich zasadza sie melodia wypowiedzi. Iloczas samogłoski dla sylaby wygłosowej jest
dłuzszy w przypadku sylaby otwartej (zakonczonej samogłoska) niz zamknietej. Wydłuzenie czasu trwa-
nia samogłoski jest spowodowane takze wystepowaniem po niej głoski dzwiecznej, natomiast nastepstwo
zbitki spółgłoskowej powoduje jej skrócenie. Iloczas pełni w jezyku polskim równiez funkcje ekspresy-
wne – wydłuzone głoski nadaja wypowiedzi bardziej wyrazistego charakteru.
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
3. Realizacja
3.1. Baza nagran sygnałów mowy Corpora
Baza ta została stworzona w 1997 roku w Poznaniu. Składa sie z 365 wypowiedzi kazdego
z 45 mówców (łacznie 16 425). Nagran dokonano w pomieszczeniach Politechniki Poznanskiej,
Wrocławskiej i Slaskiej w warunkach „normalnych” w bezposredniej bliskosci pracujacego komput-
era. Jakosc nagran: czestotliwosc próbkowania – 16kHz, długosc słów – 12 bitów. Pliki zapisane sa
w formacie *.wav. W kazdym podkatalogu umieszczone sa nagrania tylko jednego mówcy, a nazwy tych
podkatalogów okreslaja jego płec, wiek i mikrofon, jakim został nagrany. Pierwsze dwa znaki to inic-
jały mówcy, trzecia cyfra okresla numer nagrania tego mówcy lub kolejnego mówce o takich samych
inicjałach. Czwarty znak okresla jego płec, a piaty rodzaj mikrofonu (dokładny opis w znajduje sie
w tabelach 3.1, 3.2).
symbol płecM mezczyznaK kobietaC chłopiecD dziewczynka
Table 3.1: Opis symboli w nazwie (czwarty znak)
symbol typ mikrofonu1 pojemnosciowy2 dynamiczny
Table 3.2: Opis symboli w nazwie (piaty znak)
Ogółem w bazie na 45 mówców znajduje sie 11 kobiet, 28 mezczyzn, 3 dziewczynki i 3 chłopców.
Przedziały wiekowe mówców znajduja sie w tabeli 3.3.
Sposród wszystkich mówców do syntezy wybrano wypowiedzi jednego – kobiety w wieku 20-30 lat
o inicjałach AF nagrywanej mikrofonem pojemnosciowym (AF1K1).
Nazwy plików w katalogu konkretnego mówcy maja taka sama nazwe jak ów folder, ale poszerzona
o 3 znaki kodujace dane wyrazenie. Słownik bazy zawiera litery alfabetu polskiego (33), cyfry (10),
imiona polskie (200), polecenia sterujace (8) oraz inne wypowiedzi (114). Spis wszystkich wyrazen
znajduje sie w dodatku D na koncu pracy. Z uwagi na niepoprawny zapis w pliku *.mlf, nie skorzystano
z pliku AF1K1JOT.WAV.
19
3.1. Baza nagran sygnałów mowy Corpora 20
mówca wiek mówca wiek mówca wiekAF1K1 20 – 30 JP1M1 30 – 50 PW1M1 20 – 30AK1C1 9 – 15 JP2M1 30 – 50 RG1M1 50 – 70AK2C1 9 – 15 JS1M1 30 – 50 SG1M1 30 – 50AO1M1 20 – 30 KD1M1 50 – 70 SG2M1 30 – 50BC1K1 20 – 30 KD2M1 50 – 70 SG3M1 30 – 50BC1M1 20 – 30 LD1K1 50 – 70 SP1M1 20 – 30BW1K1 30 – 50 LD2K1 50 – 70 SW1M1 20 – 30CK1C1 9 – 15 LK1D1 9 – 15 TS1M1 20 – 30DG1M1 20 – 30 MR1M1 20 – 30 TZ1M1 20 – 30HK1K1 30 – 50 MS1M1 20 – 30 WB1M1 20 – 30HK2K1 30 – 50 OJ1K1 20 – 30 WM1M1 20 – 30IS1K1 20 – 30 PB1K1 20 – 30 ZB1M1 20 – 30JC1M1 20 – 30 PL1K1 50 – 70 ZK1D1 9 – 15JK1M1 20 – 30 PL1M1 30 – 50 ZK1M1 50 – 70JO1M1 30 – 50 PS1M1 30 – 50 ZK2D1 9 – 15
Table 3.3: Przedział wiekowy mówców
Wszystkie 37 fonemów wystepuje w sumie 162811 razy. W bazie znajduje sie 1271 róznych difonów,
w sumie 179753. Z uwagi na wystepowanie wielu instancji danego difonu, zasadne staje sie posłuzenie
metoda selekcji jednostek przy syntezie mowy.
3.1.1. Segmentacja nagran
Baza nagran sygnałów mowy Corpora zawiera równiez pliki z transkrypcjami fonetycznymi wszys-
tkich wyrazen mówcy:
– *.chr – zawiera same transkrypcje słów;
– *.fon – dodatkowo kazdemu fonemowi przypisuje czas jego rozpoczecia i zakonczenia podany
w jednostkach 5ms;
– *.mlf – znajduje sie w nim to samo co w *.fon, ale czas jest podany w standardzie HTK 2.0.
Ponizej przedstawiony jest fragment pliku *.mlf (segmentacja słowa ’Piotr’)
"∗ / a f 1 k 1 p t r . l a b "
00 00 s i l
0 1150000 p
1200000 1800000 j
1850000 3050000 o
3100000 4700000 t
4750000 6850000 r
6900000 7000000 s i l
.
Do realizacji syntezatora uzyto pliku *.mlf, z którego łatwo mozna było odczytac czasy poczatków
i konców fonemów. Skorzystano z transkrypcji fonetycznej przedstawonej w tabeli 3.4.
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
3.2. Transkrypcja fonetyczna – OrtFon AGH 21
fonem w jezykupolskim
transkrypcja wCORPORA
fonem w jezykupolskim
transkrypcja wCORPORA
a a n nia a_ N Nb b o oc c p pc ci r rcz cz s sd d s sie e sz sze e_ t tf f u ug g w wh h y yi i z zj j z rzk k z zil l dz dzł l_ dz drzm m dz dzin n cisza sil
Table 3.4: Transkrypcja fonemów
Do bazy nagran dołaczone były równiez programy BASAK i LABELER, które słuza odpowiednio
do przeszukiwania zadanych zbitek fonemów oraz do obserwacji przebiegów czasowych sygnałów i ich
spektrogramów. Nie zostały one uzyte przy realizacji syntezatora.
3.2. Transkrypcja fonetyczna – OrtFon AGH
Program OrtFon AGH został uzyty w projekcie do zamiany polskich słów, podanych
przez uzytkownika, z transkrypcji ortograficznej na fonemiczna. Jest to prosty program pobierajacy plik
tekstowy i zwracajacy plik z transkrypcja fonetyczna. Dostepnych jest kilka opcji uzytkowania. Naj-
wazniejsza z nich jest wybór alfabetu fonetycznego sposród:
- X-SAMPA;
- IPA;
- AGH;
- PolPhone;
- Corpora.
W zaleznosci od wyboru alfabetu mozna zauwazyc istotne róznice w transkrypcji. Sposród
wybranych alfabetów do programu uzyto alfabetu Corpora, gdyz jest kompatybilny z baza nagran Cor-
pora. Mozna jednak zauwazyc niewielkie róznice w zapisie z OrtFona i pliku Corpora *.mlf.
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
3.3. Biblioteka BASS 22
Pozostałe opcje wyboru przy uruchamianiu programu to sposób kodowania oraz tryb zapisu.
Kodowanie domyslnie jest ustawione na UTF-8, do wyboru jest równiez ISO-8859-2, CP-852 oraz CP-
1250. Istnieja trzy tryby zapisu. Tryb domyslny transkrybuje tekst ciagły, bez spacji, traktujac konce
linii jako kropki w tekscie. Tryb omni lub omni-dev generuje koncówki osobnych słów w osobnych lini-
ach, a tryb trigramów wszystkie mozliwe trigramy w osobnych liniach. Program OrtFon AGH wywoły-
wany jest przez syntezator w trybie ciagłym z flaga –spaces, wstawiajaca odstepy pomiedzy symbolami,
oraz z kodowaniem UTF-8.
Ponizej przedstawiona została transkrypcja dwóch przykładowych wyrazen.
konkatenacyjny syntezator mowy polskiej:
!koNkatenacyjny#syntezator#mowy#polskjej#!
ksiazka zdzbło bank zadło:
!ksioe_rzka#zidzibl_o#baNg#rzondl_o#!
3.3. Biblioteka BASS
BASS jest darmowa, do niekomercyjnego uzytku, biblioteka słuzaca do obsługi dzwieków. Stwor-
zona została przez Un4seen Developments. W programie wykorzystano ja do odczytu oraz zapisu plików
*.wav z bazy nagran Corpora. Tresc licencji biblioteki znajduje sie w dodatku A.
Biblioteka działa na wielu platformach, w tym na platformie .NET, która wykorzystano do napisania
syntezatora. Posiada funkcje pozwalajace na obsługe wielu formatów dzwieku (*.wav, *.mp3, *.ogg).
Pozwala na ich odtwarzanie, nagrywanie, a takze modyfikowanie w czasie rzeczywistym.
Funkcje, które wykorzystano w projekcie syntezatora:
- BASS_Init – funkcja ta inicjalizuje urzadzenie wyjscia. Za jej pomoca zainicjalizowano urzadzenie
domyslne oraz okreslona czestotliwosc próbkowania;
- BASS_StreamCreateFile – tworzy strumien z pliku dzwiekowego, w tym przypadku *.wav o dłu-
gosci takiej, jak plik, bez opóznienia;
- BASS_SetConfig - ustawia dane konfiguracyjne;
- BASS_Encode_Start - ustawia enkoder na danym kanale;
- BASS_Encode_Stop - zatrzymuje enkoder na danym kanale;
- BASS_ChannelPlay – zaczyna odtwarzac strumien;
- BASS_ChannelIsActive – zwraca wartosc logiczna w zaleznosci od tego, czy odtwarzanie jest
w toku;
- BASS_ChannelSetPosition - ustawia pozycje odtwarzania strumienia;
- BASS_ChannelGetPosition – pobiera pozycje odtwarzania strumienia;
- BASS_ChannelGetLength – pobiera długosc odtwarzanego strumienia;
- BASS_ChannelStop – zatrzymuje strumien;
- BASS_StreamFree – zwalnia strumien próbek zródła;
- BASS_Stop – zatrzymuje strumien na wyjsciu;
- BASS_Free – zwalnia wszystkie uzywane zródła;
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
3.4. Funkcja kosztu 23
- BASSTimer.Tick - tworzy zegar, który za kazdym ’tikiem’ wykonuje dane zdarzenie;
- BASS_ErrorGetCode – zwraca kod błedu, gdy jedna z powyzszych funkcji jest niewykonalna.
3.4. Funkcja kosztu
W korpusowej metodzie syntezy mowy podstawowym zagadnieniem jest sposób doboru odpowied-
nich jednostek z bazy nagran. W bazie znajduje sie wiele instancji danej jednostki o róznych charak-
terystykach prozodycznych oraz spektralnych. Wybór odpowiednich sekwencji zapewnia synteze natu-
ralnie brzmiacej mowy.
Jednostki sa wybierane na podstawie wartosci funkcji kosztu. Na całkowity koszt wykorzystania
danego segmentu fonetycznego składaja sie dwa koszty: doboru oraz konkatenacji.
Koszt doboru okresla róznice pomiedzy docelowym fragmentem a fragmentem z bazy, który moze
byc jego realizacja. Składa sie z nastepujacych składowych:
- koszt akcentu,
- koszt lewego i prawego kontekstu,
- koszt niewłasciwego doboru melodii,
- koszt pozycji w sylabie,
- koszt pozycji w słowie,
- koszt pozycji we frazie,
- koszt Part-Of-Speech.
Funkcja kosztu konkatenacji okresla stopien trudnosci przejscia pomiedzy sasiednimi jednos-
tkami. Idealna sytuacja jest, gdy koszt konkatenacji jest mocno skorelowany z percepcja nieciagłosci
przez słuchacza. Funkcja ta jest implementowana jako miara odległosci miedzy parametrami sygnałów
mowy.
W niniejszej pracy przy obliczaniu kosztu doboru jednostek skoncentrowano sie na koszcie konkate-
nacji.
Funkcje kosztu konkatenacji mozna zrealizowac na wiele róznych sposobów. Parametrami charak-
teryzujacymi nagrania moga byc amplituda, czestotliwosc tonu krtaniowego F0 oraz parametry spek-
tralne, np.: współczynniki LPC1, widmo LP2, współczynniki MFCC3, współczynniki LSF4, współczyn-
niki PLP5, widmo PLP, współczynniki MCA6. Odległosc miedzy wektorami cech dwóch fragmentów
nagran moze byc obliczona za pomoca róznych miar odległosciowych, jak metryki: Euklidesowa, Ma-
halanobisa, miejska (Manhattan), czy dywergencja Kullbacka-Leiblera.
Autorki skorzystały z nastepujacych parametrów oraz metryk:
1Linear predictive coding2Linear prediction3Mel-frequency cepstral coefficients4Line spectral frequencies5Perceptual linear prediction6Multiple centroid analysi
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
3.4. Funkcja kosztu 24
3.4.1. Energia
Energia jest miara siły sygnału. Jest obliczana jako wartosc sredniokwadratowa sygnału:
Ex =+∞∑
n=−∞x2n (3.1)
3.4.2. Ton krtaniowy
Ton krtaniowy został obliczony za pomoca funkcji autokorelacji, która realizuje splot sygnału z jego
przesunieta w czasie wersja:
Rxx(k) =1
N − |k|
N−1−|k|∑n=0
xn ∗ x∗n−k (3.2)
gdzie k zawiera sie w przedziale:−N + 1 ≤ k ≤ N − 1.
Funkcja ta pozwala na okreslenie dzwiecznosci sygnału. Dla głosek dzwiecznych przyjmuje
wielokrotne maksimum. W celu wyznaczenia tonu krtaniowego istotne jest maksimum z przedziału czes-
totliwosci 80-1000 Hz.
3.4.3. MFCC
MFCC to współczynniki cepstralne w skali melowej. Skala melowa stosowana jest w zwiazku
z nieliniowym odbieraniem róznych czestotliwosci przez ludzkie ucho – ponizej 1 kHz zmiany czes-
totliwosci sa łatwiej wykrywalne niz dla wyzszych czestotliwosci. W celu zrekompensowania tej nielin-
iowosci tworzony jest zbiór filtrów trójkatnych dla poszczególnych pasm czestotliwosci, rozmieszc-
zonych w nieliniowy sposób na skali czestotliwosci. Rozkład filtrów przedstawia ponizszy rysunek
(Rys.4.2):
Figure 3.1: Bank filtrów melowych
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
3.4. Funkcja kosztu 25
Zwiazek miedzy skala czestotliwosci a skala Mel (Rys.4.3):
Figure 3.2: Skala melowa w odniesieniu do herzów
Skale mozna przeliczyc miedzy soba na podstawie zaleznosci:
mel(f) = 2595 ∗ log(1 + f
700) (3.3)
f(mel) = 700 ∗ (10m/2595 − 1) (3.4)
Współczynniki MFCC sa obliczane według ponizszego algorytmu:
Figure 3.3: Schemat obliczania MFCC
Cechy MFCC o indeksie równym lub wyzszym od indeksu cechy o maksymalnej wartosci
(który odpowiada czestotliwosci podstawowej mówcy) sa reprezentatywne jedynie dla mówcy, nie dla
wypowiadanego dzwieku, moga zostac pominiete.
3.4.4. LPC
LPC jest metoda kodowania oparta na liniowym modelu predykcji. W metodzie tej szacuje sie
wartosci sygnału u(k) na podstawie p wartosci z chwil poprzednich: u(k -1) , u(k - 2) , u(k - 3) , ... ,
u(k - p). Oznaczajac przez z(k) wynik predykcji sygnału mozemy zapisac:
z(k) =p∑
i=1
(aiu(k − i)) (3.5)
gdzie k > p, ai – współczynniki predykcji.
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
3.5. Grafy – struktura danych 26
W celu uzyskania współczynników LPC oblicza sie najpierw współczynniki autokorelacji
pomiedzy próbkami sygnału, nastepnie stosuje sie algorytm Levinsona-Durbina.
Predykcja liniowa analizuje sygnał poprzez estymacje formantów, a nastepnie wyciecie ich z sygnału
i estymacje intensywnosci oraz czestotliwosci pozostałego szumu.
Współczynniki LPC odwzorowuja model traktu głosowego, w którym został wygenerowany sygnał
mowy.
3.4.5. Metryka Euklidesowa
DEu(X,Y ) =
√√√√ n∑i=1
(Xi − Yi)2 (3.6)
3.4.6. Metryka miejska
DM (X,Y ) =n∑
i=1
|Xi − Yi| (3.7)
3.5. Grafy – struktura danych
Do obliczania kosztu sciezek róznych kombinacji fonemów wykorzystano grafy. Kazdy fonem
przestawiony został jako pojedynczy wierzchołek grafu, a koszt konkatenacji jako połaczenia
(krawedzie) pomiedzy dwoma wierzchołkami. W ten sposób mozna było zastosowac metode szuka-
jaca “najkrótszej”, a wiec i najlepszej drogi wyboru fonemów tak, aby synteza brzmiała jak najbardziej
naturalnie.
Graf, jak i algorytm wykorzystany w celu jak najlepszego doboru fonemów, zaczerpniete zostały
z biblioteki QuickGraph na licencji Ms-PL7. Tresc licencji biblioteki znajduje sie w dodatku B. Jest
to najpopularniejsza biblioteka dostepna w srodowisku .NET przeznaczona do obsługi grafów. Zawiera
ona wszystkie najczesciej uzywane algorytmy grafowe, dostosowane do róznych rodzajów grafów –
kierunkowych i nie, miedzy innymi:
– wyszukiwanie najkrótszej sciezki;
– wyszukiwanie k-najkrótszych sciezek;
– algorytm A*;
– maksymalny przepływ;
– minimalne drzewo rozpinajace.
W realizacji syntezatora wykorzystano dwie podstawowe funkcje biblioteki QuickGraph:
7Microsoft Public License
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
3.5. Grafy – struktura danych 27
– AddVertexRange - dodaje wierzchołek do grafu;
– AddEdge - dodaje krawedz do grafu (pomiedzy dwoma wierzchołkami).
3.5.1. Wizualizacja grafów za pomoca Graphviz
Do wizualizacji grafów (niezwykle przydatnej przy poszukiwaniu błedów w implementacji grafu
i samego algorytmu) posłuzyła wspierajaca QuickGraph biblioteka Graphviz. QuickGraph generuje kod
*.dot i wysyła go do Graphviz. Oto przykładowy diagram (Rys. 4.4):
Figure 3.4: Przykładowy graf: praca dyplomowa
3.5.2. Algorytm Floyda-Warshalla
QuickGraph do obliczania sciezki o najmniejszym koszcie w grafie z wieloma zródłami wykorzys-
tuje algorytm Floyda-Warshalla. Algorytm ten zakłada, ze najkrótsza droga wiodaca z wierzchołka A
do B, przechodzaca przez punkt C to droga złozona z najkrótszego odcinka łaczacego A - C oraz C -
B. W ten sposób juz na poczatku algorytm tworzy tablice najkrótszych sciezek i w kolejnych krokach
dołacza do niej sciezki kolejnych wierzchołków. Złozonosc algorytmu wynosi O(|V 3|) (gdzie V - liczba
wierzchołków).
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
3.5. Grafy – struktura danych 28
Niestety juz po pierwszych próbach wygenerowania syntezowanych słów okazało sie, ze działanie
programu trwa zbyt długo (jedno krótkie słowo – kilkanascie sekund), wiec postanowiono skorzystac
z innej znanej metody wyszukiwania najkrótszej sciezki w grafie.
3.5.3. Algorytm Dijkstry
Algorytm Dijkstry jest metoda wyszukiwania najkrótszych sciezek pomiedzy wybranym wierz-
chołkiem grafu a wszystkimi pozostałymi. Przez najkrótsza sciezke jest rozumiana sciezka o na-
jmniejszym koszcie przejscia. Koszt przejscia jest obliczany jako suma wag krawedzi łaczacych
poszczególne wierzchołki. Algorytm Dijkstry jest stosowany do struktury grafu o jednym zródle
oraz krawedziach o nieujemnych wagach. Jego złozonosc to O(|E| + |V | ∗ log|V |) (gdzie V - liczba
wierzchołków, E - liczba krawedzi). Jego implementacja w projekcie znaczaco przyspieszyła czas dzi-
ałania syntezy.
Algorytm przebiega według nastepujacych kroków:
1. Wybór wierzchołka poczatkowego; właczenie go do zbioru wierzchołków odwiedzonych.
2. Poczatkowe nadanie wierzchołkom cech α – numer poprzedniego wierzchołka – oraz β – waga
połaczenia. Wierzchołki nie majace bezposredniego połaczenia ze startowym zostaja oznaczone:
α = 0, β =∞.
3. Znalezienie wierzchołka o minimalnej wartosci połaczenia β. Dodanie go do zbioru wierzchołków
odwiedzonych. Jesli w zbiorze znajduja sie wszystkie wierzchołki – zakonczenie algorytmu.
4. Zmiana cech α i β w przypadku, gdy droga od aktualnego wierzchołka jest mniejsza od poprzed-
niej wartosci β. Powrót do pkt. 3.
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
4. Efekty pracy
4.1. Struktura programu
Program syntezatora został zaimplementowany w jezyku C# w srodowisku Microsoft Visual Stu-
dio. Koszt konkatenacji wszystkich fonemów został policzony osobno w srodowisku MATLAB i jako
macierz został wyeksportowany do pliku tekstowego.
W projekcie zostały zaimplementowane dwa interfejsy: IPhoneticTranscription i ISynthesizer . Pier-
wszy definiuje funkcje słuzaca do transkrypcji zapisu ortograficznego na fonemiczny:
s t r i n g t r a n s l a t e ( s t r i n g t o T r a n s l a t e ) ;
Interfejs ISynthesizer okresla trzy funkcje: read czyta tekst przeznaczony do syntezy, finish
konczy odtwarzanie plików za pomoca biblioteki BASS, setNewWeights wczytuje rodzaj funkcji kosztu
wprowadzony przez uzytkownika.
void r e a d ( S t r i n g toRead ) ;
void f i n i s h ( ) ;
void se tNewWeights ( s t r i n g f i l e n a m e ) ;
Diagram UML1 pokazujacy strukture klas dołaczony został w dodatku C.
4.1.1. Wywoływanie OrtFona
Klasa Ortfon implementujaca interfejs IPhoneticTranscription zawiera metody zajmujace sie tran-
skrypcja fonemów. Konstruktor klasy tworzy proces wywołujacy program OrtFon AGH z podanej sciezki
dostepu z parametrami opisanymi w sekcji 3.2.
p u b l i c O r t f o n ( s t r i n g p a t h T o O r t f o n )
{
t h i s . p a t h T o O r t f o n = p a t h T o O r t f o n ;
o r t f o n P r o c e s s = new P r o c e s s ( ) ;
o r t f o n P r o c e s s . S t a r t I n f o . U s e S h e l l E x e c u t e = f a l s e ;
o r t f o n P r o c e s s . S t a r t I n f o . W o r k i n g D i r e c t o r y = p a t h T o O r t f o n ;
o r t f o n P r o c e s s . S t a r t I n f o . FileName = p a t h T o O r t f o n + @" \ o r t f o n . exe " ;
o r t f o n P r o c e s s . S t a r t I n f o . Arguments = "− t c o r p o r a −−s p a c e s i n . t x t o u t . t x t " ;
}
1Unified Modeling Language
29
4.1. Struktura programu 30
Metoda translate tworzy plik tekstowy podawany jako argument do programu OrtFon AGH, a nastep-
nie odczytuje jego plik wyjsciowy, dokonujac wstepnej obróbki (usuniecie znaków ’!’ z poczatku i konca
tekstu). Zapis fonetyczny jest przechowywany w zmiennej typu string.
p u b l i c s t r i n g t r a n s l a t e ( s t r i n g t o T r a n s l a t e )
{
System . IO . F i l e . W r i t e A l l T e x t ( p a t h T o O r t f o n + @" \ i n . t x t " ,
t o T r a n s l a t e + " k o n i e c " ) ;
o r t f o n P r o c e s s . S t a r t ( ) ; o r t f o n P r o c e s s . W a i t F o r E x i t ( ) ;
s t r i n g t r a n s l a t e d = System . IO . F i l e . ReadAl lTex t ( p a t h T o O r t f o n +
@" \ o u t . t x t " ) ;
t r a n s l a t e d = t r a n s l a t e d . Remove ( 0 , 1 ) ;
t r a n s l a t e d = t r a n s l a t e d . Remove ( t r a n s l a t e d . Length −1, 1 ) ;
re turn t r a n s l a t e d ;
}
4.1.2. Tworzenie listy fonemów
Klasa PhonemeMap zajmuje sie tworzeniem słownika list fonemów. Kazda lista zawiera wszystkie
instancje danego fonemu. Natomiast kazdy poszczególny fonem posiada informacje o pliku pochodzenia,
oraz o pozycji poczatku i konca tego fonemu w pliku wav. Listy jednakowych fonemow tworzone
sa z pliku *.mlf w metodzie readPhonemesFromMlf. W petli odczytywana jest kazda linia osobno.
Jesli zawiera odpowiednie wyrazenie, wczytywana jest do tablicy stringów values (czasy i fonem)
lub do stringa currentPath (nazwa pliku po uprzedniej obróbce). Wszystkie parametry sa nastepnie
przypisanie do obiektu typu Phoneme.
p u b l i c vo id readPhonemesFromMlf ( s t r i n g f i l e p a t h )
{
s t r i n g [ ] l i n e s = System . IO . F i l e . R e a d A l l L i n e s ( f i l e p a t h ) ;
i n t phonemeCount = l i n e s . Length ;
s t r i n g c u r r e n t P a t h = n u l l ;
i n t i n d e x = 0 ;
f o r ( i n t i = 0 ; i < phonemeCount ; i ++)
{
i f ( Regex . I sMatch ( l i n e s [ i ] , " \ \ ∗ " ) )
{
c u r r e n t P a t h = l i n e s [ i ] ;
c u r r e n t P a t h = c u r r e n t P a t h . Remove ( 0 , 3 ) ;
c u r r e n t P a t h = c u r r e n t P a t h . Remove ( c u r r e n t P a t h . Length − 5) ;
c u r r e n t P a t h = c u r r e n t P a t h . ToUpper ( ) ;
}
e l s e i f ( Regex . I sMatch ( l i n e s [ i ] , " \ \ d+ \ \ d+ \ \ w+" ) )
{
s t r i n g [ ] v a l u e s = l i n e s [ i ] . S p l i t ( ’ ’ ) ;
add ( new Phoneme ( c u r r e n t P a t h , Conve r t . To In t64 ( v a l u e s [ 0 ] ) ,
Conve r t . To In t64 ( v a l u e s [ 1 ] ) , v a l u e s [ 2 ] , i n d e x ++) ) ;
}
}
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
4.1. Struktura programu 31
Zarzadzanie listami odbywa sie automatycznie dzieki metodzie add. Sprawdzany jest w niej
warunek, czy słownik posiada juz dany klucz. Jesli tak, do danej listy w słowniku dopisywany jest kole-
jny fonem, jesli nie, tworzona jest najpierw nowa lista, a nastepnie do słownika dodawany jest nowy
klucz i nowa wartosc w postaci jednoelementowej listy.
p u b l i c vo id add ( Phoneme p )
{
i f ( ph on eme Dic t i ona ry . Keys . C o n t a i n s ( p . g e t L e t t e r ( ) ) )
{
ph on eme Di c t i ona ry [ p . g e t L e t t e r ( ) ] . Add ( p ) ;
}
e l s e{
L i s t <Phoneme> phonemeLis t = new L i s t <Phoneme > ( ) ;
phonemeLis t . Add ( p ) ; pho ne meD ic t i o na ry . Add ( p . g e t L e t t e r ( ) , phonemeLis t
) ;
}
}
Klasa zawiera ponadto funkcje kopiujaca liste fonemów (metoda clone), nowa instancja listy
potrzebna jest do prawidłowego stworzenia grafu fonemów.
4.1.3. Obliczanie funkcji kosztu
Implementacje funkcji kosztu konkatenacyjnego wykonano w pakiecie MATLAB. Wczytane fonemy
zapisano do macierzy. Obliczono elementy dla wszystkich par plików. Dla fonemów sasiadujacych
ze soba w jednym pliku przypisano zerowy koszt. Oto sposób implementacji obliczen:
– obliczenie energii
e n e r g i a 1 = sum ( p l i k 1 . ^ 2 ) ; e n e r g i a 2 = sum ( p l i k 2 . ^ 2 ) ;
r o z n i c a _ e n e r g i i ( i , j ) = abs ( e n e r g i a 2 − e n e r g i a 1 ) ;
– obliczenie tonu krtaniowego (składa sie z trzech czesci - autokorelacja sygnału, ustalenie przedzi-
ału, wyciecie fragmentu wykresu autokorelacji, szukanie maksimum)
a u t o k o r e l a c j a 1 = x c o r r ( p l i k 1 ) ; a u t o k o r e l a c j a 2 = x c o r r ( p l i k 2 ) ;
d l u g o s c 1 = l e n g t h ( a u t o k o r e l a c j a 1 ) ; d l u g o s c 2 = l e n g t h ( a u t o k o r e l a c j a 2 ) ;
a u t o k o r e l a c j a _ p o l 1 = a u t o k o r e l a c j a 1 ( round ( ( d l u g o s c 1 / 2 ) ) +1 : d l u g o s c 1 ) ;
a u t o k o r e l a c j a _ p o l 2 = a u t o k o r e l a c j a 2 ( round ( ( d l u g o s c 2 / 2 ) ) +1 : d l u g o s c 2 ) ;
%% p r z e d z i a l
k o n i e c = f l o o r ( ( 1 / 8 0 ) ∗Fs ) ;
p o c z a t e k = f l o o r ( ( 1 / 1 0 0 0 ) ∗Fs ) ;
%%k o r e l a c j a 80−1000 Hz
a u t o k o r e l a c j a _ p o l 1 ( 1 : p o c z a t e k ) =0;
a u t o k o r e l a c j a _ p o l 1 ( k o n i e c : d l u g o s c 1 ) =0;
a u t o k o r e l a c j a _ p o l 2 ( 1 : p o c z a t e k ) =0;
a u t o k o r e l a c j a _ p o l 2 ( k o n i e c : d l u g o s c 1 ) =0;
%%%z n a j d z max
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
4.1. Struktura programu 32
[ ~ , indeks_maks1 ] = max ( a u t o k o r e l a c j a _ p o l 1 ) ;
t o n _ k r t a n i o w y 1 = Fs / indeks_maks1 ;
[ ~ , indeks_maks2 ] = max ( a u t o k o r e l a c j a _ p o l 2 ) ;
t o n _ k r t a n i o w y 2 = Fs / indeks_maks2 ;
r o z n i c a _ t o n o w ( i , j ) = abs ( t o n _ k r t a n i o w y 2 − t o n _ k r t a n i o w y 1 ) ;
– parametry spektralne - współczynniki LPC (wykorzystana metryka euklidesowa)
obwiedn ia1 = l p c ( p l i k 1 , 1 0 ) ;
obwiedn ia2 = l p c ( p l i k 2 , 1 0 ) ’ ;
r o z n i c a _ l p c ( i , j ) = d i s t ( obwiednia1 , obwiedn ia2 ) ;
– parametry spektralne - współczynniki MFCC (wykorzystana metryka miejska). Współczynniki
MFCC zostały uzyskane dzieki filtracji widma sygnałów bankiem filtrów melowych i obliczenie
energii uzyskanego pasma.
%s k a l a melowa
f_melmax =2595∗ l og10 (1+ (8000 / 700) ) ;
o d l e g l o s c = f_melmax / 1 0 ;
f o r i =0:10
f_mel ( i +1 ,1 ) = i ∗ o d l e g l o s c ;
f_mel ( i +1 ,2 ) = 7 0 0∗ ( 1 0 ^ ( ( f_mel ( i +1 ,1 ) / 2 5 9 5 ) ) −1) ;
end%f i l t r a c j a widma
widmo=abs ( f f t ( s y g n a l ) ) ;
k rok = f_mel ( 1 1 , 2 ) / d l u g o s c _ r a m k i ;
f o r j =1:10
pocza tek_pasma = f l o o r ( f_mel ( j , 2 ) / k rok ) + 1 ;
koniec_pasma = f l o o r ( f_mel ( j +1 ,2 ) / k rok ) ;
wycie te_pasmo = widmo ( pocza tek_pasma : koniec_pasma ) ;
w s p o l c z y n n i k i ( j , 1 ) = l o g ( sum ( wycie te_pasmo ) ) ;
endend%w s p ó l c z y n n i k i
w s p o l c z y n n i k i 1 = mfcc ( p l i k 1 ) ’ ;
w s p o l c z y n n i k i 2 = mfcc ( p l i k 2 ) ;
r o z n i c a _ m f c c ( i , j ) = m a n d i s t ( w s p o l c z y n n i k i 1 , w s p o l c z y n n i k i 2 ) ;
Obliczone parametry zsumowano do macierzy wszystkich kosztów, a nastepnie zapisano ja do pliku
tekstowego.
4.1.4. Tworzenie grafu
Graf tworzony jest w metodzie create, która jako argumenty przyjmuje tekst do zsyntezowania
(toRead) oraz słownik fonemów. Dla kazdego fonemu z tekstu toRead wczytywana jest jego lista,
a kazdy element z listy dodawany jest jako nowy wierzchołek do grafu. Gdy kolejna lista fonemu zostanie
wczytana, poprzednia zostaje zapamietana jako previousLetterList. W ten sposób dodaje sie krawedzie
pomiedzy kolejnymi fonemami.
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
4.1. Struktura programu 33
i n t e r n a l vo id c r e a t e ( s t r i n g toRead , PhonemeMap phonemeMap )
{
L i s t <Phoneme> p r e v i o u s L e t t e r L i s t = n u l l ;
Boolean i s F i r s t = t rue ;
foreach ( s t r i n g c u r r e n t L e t t e r in toRead . Trim ( ) . S p l i t ( ’ ’ ) )
{
i f ( c u r r e n t L e t t e r == " " | | c u r r e n t L e t t e r == " # " | |
c u r r e n t L e t t e r == " " | | c u r r e n t L e t t e r == " ! " ) c o n t in u e ;
L i s t <Phoneme> c u r r e n t L e t t e r L i s t = phonemeMap . g e t ( c u r r e n t L e t t e r ) ;
i f ( i s F i r s t )
{
i s F i r s t = f a l s e ;
s t a r t = c u r r e n t L e t t e r L i s t ;
}
t h i s . AddVertexRange ( c u r r e n t L e t t e r L i s t ) ;
i f ( p r e v i o u s L e t t e r L i s t != n u l l )
{
foreach ( Phoneme c u r r e n t in c u r r e n t L e t t e r L i s t )
{
foreach ( Phoneme p r e v i o u s in p r e v i o u s L e t t e r L i s t )
{
t h i s . AddEdge ( new PhonemeGraphEdge ( p r e v i o u s , c u r r e n t )
) ;
}
}
}
p r e v i o u s L e t t e r L i s t = c u r r e n t L e t t e r L i s t ;
}
end = p r e v i o u s L e t t e r L i s t ;
}
Metoda print tworzy wizualizacje grafu z rozszerzeniem *.gif na podstawie pliku dot.txt. Na rysunku
4.1 przedstawiono przykładowy graf słowa ’przeszczep’. Z uwagi na przejrzystosc rysunku zmniejszono
baze nagran. Kazdy rzad (poczatek u góry) reprezentuje instancje kolejnych fonemów w słowie.
Figure 4.1: Graf przedstawiajacy słowo ’przeszczep’
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
4.1. Struktura programu 34
4.1.5. Obliczanie najmniejszego kosztu sciezki
Wagi wczytywane sa z pliku tekstowego do dwuwymiarowej tablicy w metodzie readFrom-
File klasy Weights. Przypisanie ich do konkretnych krawedzi nastepuje przy wykonywaniu algo-
rytmu Dijkstry w readDijkstra. W metodzie tej dla kazdej krawedzi z aktualnie stworzonego grafu
wywołana jest funkcja getWeight zwracajaca wartosc spod indeksu tablicy wag dla konkretnej krawedzi
(weights[x.Source.getIndex(), x.Target.getIndex()]). Algorytm Dijkstry potrafi znalezc najkrótsze sciezki
jedynie z jednego wierchołka poczatkowego, dlatego stworzono dodatkowy fonem o indeksie -1 i ze-
rowym koszcie przejscia do kazdego innego fonemu, który w tworzonym grafie ma połaczenia z kazda
instancja pierwszego syntezowanego fonemu. Stworzony zostaje obiekt predecessors, który zapamietuje
z którego wierzchołka koszt dojscia do aktualnego wierzchołka był minimalny. Fragmenty kodu znajduja
sie ponizej:
– uruchomienie algorytmu ze sztucznym fonemem jako poczatek;
v a r p r e d e c e s s o r s = new V e r t e x P r e d e c e s s o r R e c o r d e r O b s e r v e r <Phoneme ,
PhonemeGraphEdge > ( ) ;
us ing ( p r e d e c e s s o r s . A t t a c h ( d i j k s t r a ) )
{
d i j k s t r a . Compute ( i m a g i n a r y S o u r c e ) ;
}
– odczytywanie z obserwatora predecessors kolejnych sciezek wyznaczonych przez algorytm Dij-
kstry, w celu odnalezienia tej najkrótszej
foreach ( v a r v in graph . ge tEnd ( ) )
{
whi le ( p r e d e c e s s o r s . V e r t e x P r e d e c e s s o r s . TryGetValue ( v e r t e x ,
out p r e d e c e s s o r ) )
{
d i s t a n c e += ge tWeigh t ( p r e d e c e s s o r ) ;
v e r t e x = p r e d e c e s s o r . Source ;
}
i f ( d i s t a n c e < s h o r t e s t D i s t a n c e )
{
s h o r t e s t D i s t a n c e = d i s t a n c e ;
r e a l E n d = v ;
}
}
– odczytywanie fonemów tworzacych najkrótsza sciezke (od konca), odwrócenie kolejnosci
L i s t <Phoneme> toRead = new L i s t <Phoneme > ( ) ;
PhonemeGraphEdge p r e ; Phoneme v e r = r e a l E n d ; / / toRead . Add ( v e r ) ;
whi le ( p r e d e c e s s o r s . V e r t e x P r e d e c e s s o r s . TryGetValue ( ver , out p r e ) )
{
toRead . Add ( v e r ) ;
v e r = p r e . Source ;
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
4.1. Struktura programu 35
}
toRead . Reve r se ( ) ;
Własciwe fonemy sa przesyłane dodowane sa do listy typu PhonemePlayList i przekazywane do funkcji
PhonemePlayer.play, gdzie sa odtwarzane.
4.1.6. Sposób wykorzystania biblioteki Bass
Odtwarzanie fonemów odbywa sie za pomoca funkcji PhonemePlayer.play(PhonemeList toPlay),
gdzie PhonemePlayList to przeładowana struktura danych List<Phoneme> potrafiaca automatycznie
scalac fonemy w taki sposob, by fonemy znajdujace sie bezposrednio po sobie odtwarzane były za po-
moca jednego wywołania odtwarzacza.
Funkcja play składa sie zasadniczo z kolejno:
1. inicjalizacji strumienia z pliku:
Bass . BASS_St reamCrea teF i l e (@"AF1K1 \ " + p . g e t P a t h ( ) + " . wav " ,
0L , 0L , BASSFlag . BASS_DEFAULT) ;
2. ustawienia pozycji na poczatku nastepnego do zagrania fonemu:
Bass . BASS_Channe lSe tPos i t i on ( s t r eam , p . g e t S t a r t ( ) ) ;
3. uruchomienia timera zatrzymujacego odtwarzanie po zakonczeniu fonemu:
Un4seen . Bass . BASSTimer _upda t eT imer =
new Un4seen . Bass . BASSTimer ( _ u p d a t e I n t e r v a l ) ; _upda teT imer . S t a r t ( ) ;
Funkcja zatrzymujaca wywoływanie uruchamiana jest za pomoca ‘ticku’ timera i wyłacza odtwarzanie,
gdy pozycja w kanale odtwarzania przekracza pozycje konca fonemu:
i f ( Bass . BASS_Channe lGetPos i t ion ( s t r e a m ) > end )
{ Bass . BASS_ChannelStop ( s t r e a m ) ; Bass . BASS_StreamFree ( s t r e a m ) ; }
Scalanie fonemów, jesli nastepuja po sobie, polega na przypisaniu do sasiedniego fonemu czasu
konca fonemu pierwszego.
new p u b l i c vo id Add ( Phoneme p )
{
i f ( i s S u b s e q u e n t ( p ) )
{
t h i s [ t h i s . Count − 1 ] . s e tE nd ( p . ge tEnd ( ) ) ;
}
e l s e{
base . Add ( p ) ;
}
sb . Append ( p . g e t L e t t e r ( ) ) ;
}
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
4.2. Interfejs uzytkownika 36
4.2. Interfejs uzytkownika
4.2.1. Interfejs graficzny
Program po uruchomieniu wyglada nastepujaco:
Figure 4.2: Okno programu po uruchomieniu
Aplikacja zbudowana jest z jednego okna, w którym znajduja sie nastepujace elementy:
- Tekst – pole tekstowe do wprowadzania tekstu do syntezy;
- Transkrypcja – pole, na którym wyswietla sie transkrypcja fonetyczna tekstu;
- Auto Trans – pole wyboru opcjonalnego trybu automatycznej transkrypcji;
- Przycisk Czytaj słuzacy do odtworzenia zsyntezowanej mowy;
- Transkrypcja – przycisk słuzacy do wygenerowania zapisu fonetycznego;
- Pole tekstowe słuzace do wprowadzenia nazwy pliku z parametrami funkcji kosztu i przycisk Wczy-
taj zatwierdzajacy wybór i wczytujacy plik do programu.
Przykładowy wyglad okna programu w trakcie uzycia:
Figure 4.3: Okno programu po wczytaniu tekstu
4.2.2. Obsługa programu
Zadaniem programu jest przetworzenie tekstu w zapisie ortograficznym w dzwiek mowy oraz odt-
worzenie go. Aby wykonac to zadanie nalezy wprowadzic z klawiatury lub wkleic tekst, który chcemy
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
4.3. Ocena syntenzy 37
zsyntezowac, w pole Tekst oraz, przy oznaczonej opcji Auto Trans, nacisnac przycisk Czytaj. Dla odznac-
zonej opcji automatycznej transkrypcji, nalezy najpierw transkrybowac wprowadzony tekst za pomoca
przycisku Transkrypcja, po czym nacisnac Czytaj. Gdy opcja Auto Trans jest odznaczona i uzytkownik
wcisnie Czytaj bez wczesniejszego uzycia Transkrypcja, program nie przetworzy wprowadzonego tek-
stu na zapis fonetyczny, lecz wykorzysta poprzednia dostepna transkrypcje i na jej podstawie zsyntezuje
oraz odtworzy dzwiek. Transkrypcja jest dostepna, jesli została wygenerowana w biezacej sesji programu
– wyswietla sie wówczas w polu Transkrypcja; program nie zapamietuje transkrypcji z poprzedniej sesji.
W stworzonym syntezatorze istnieje mozliwosc wyboru parametrów, na podstawie których wyszuki-
wane sa najodpowiedniejsze jednostki z bazy nagran. Program moze działac przy wykorzystaniu jednego
z czterech zestawów parametrów funkcji kosztu:
1. Współczynniki LPC + metryka Euklidesowa (lpc_dist);
2. Współczynniki LPC + metryka Manhattan (lpc_mandist);
3. Współczynniki MFCC + metryka Euklidesowa (mfc_dist);
4. Współczynniki MFCC + metryka Manhattan (mfc_mandist).
Funkcja kosztu, wraz z powyzszymi parametrami, zostały opisane w rozdziale 3.4. Aby wybrac
rodzaj parametrów nalezy w dolnym polu tekstowym wpisac odpowiednia nazwe: lpc_dist, lpc_mandist,
mfc_dist lub mfc_mandist, po czym nacisnac Wczytaj. Przedstawia to ponizszy rysunek:
Figure 4.4: Wybór funkcji kosztu
Domyslnie program działa przy uzyciu mfc_dist.
Przy uzyciu programu nalezy zwrócic uwage na nastepujace rzeczy: Syntezator nie czyta liczb, dat,
godzin itp., jedynie cyfry, dlatego informacje tego typu nalezy wprowadzac w formie słownej.
4.3. Ocena syntenzy
Do oceny działania syntezatora został wykorzystany test MOS (Mean Opinion Score), czyli metoda,
która liczbowo wyraza subiektywne wrazenia uzytkowników odnosnie jakosci działania programu.
Ogólne metody okreslania MOS zostały unormowane przez Miedzynarodowy Zwiazek Telekomunika-
cyjny (ITU) w zaleceniu ITU-T P.800.
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
4.3. Ocena syntenzy 38
Jedna ze skal oceny jakosci metody MOS jest ACR (Absolute Category Rating). Ocena ACR jest
wyrazona jedna z pieciu cyfr od 1 do 5, gdzie 1 jest najgorsza ocena jakosci dzwieku, 5 najlepsza.
Poszczególne wartosci odpowiadaja nastepujacym odczuciom jakosci:
– 1 – zła; zrozumienie mowy nie jest mozliwe;
– 2 – słaba; zrozumienie mowy jest trudne, bardzo uciazliwe dla słuchacza;
– 3 – srednia; zrozumienie mowy wymaga koncentracji, jest umiarkowanie uciazliwe;
– 4 – dobra; zauwazalne błedy, jednak całosc zrozumiała;
– 5 – znakomita; zupełna zrozumiałosc mowy.
Srednia wartosc testu zawierajaca sie w przedziale od 4.0 do 4.5 jest uwazana za zupełnie satysfakcjonu-
jaca. Wartosc ponizej 3.5 przez wielu uzytkowników jest nie do zaakceptowania.
Celem przeprowadzenia testu, oprócz ogólnej oceny jakosci syntezowanej mowy, był wybór
parametrów oraz miary odległosciowej obliczonych parametrów w funkcji kosztu konkatenacji, które
pozwalaja na wygenerowanie mowy najbardziej naturalnej. W tym celu kazde zdanie testowe zostało
zsyntezowane przy uzyciu funkcji kosztu konkatenacji o nastepujacych parametrach:
– energia, ton krtaniowy, współczynniki lpc, miara euklidesowa;
– energia, ton krtaniowy, współczynniki lpc, miara odległosci Manhattan;
– energia, ton krtaniowy, współczynniki mfc, miara euklidesowa;
– energia, ton krtaniowy, współczynniki mfc, miara odległosci Manhattan.
Sposób przeprowadzenia testu
W badaniu jakosci stworzonego syntezatora wzieło udział 8 osób. Kazda osoba odsłuchała jednokrot-
nie czterech zestawów uprzednio wygenerowanych zdan. Kazdy zestaw składał sie z trzech zdan i jed-
nego słowa (takich samych dla wszystkich zestawów) zsyntezowanych dla jednej z czterech kombinacji
parametrów funkcji kosztu. Kazdej odsłuchanej wypowiedzi testowana osoba przypisała, według włas-
nych wrazen odsłuchowych i stopnia zrozumienia tekstu, ocene 1-5. Wynik MOS został obliczony dla
kazdego zestawu jako srednia arytmetyczna z ocen wszystkich słuchaczy.
W zwiazku z tym, ze ocena wypowiedzi odtwarzanej po nagraniu o bardzo dobrej jakosci moze
róznic sie od oceny uzyskanej w przypadku, gdy badana wypowiedz zostanie odtworzona po nagraniu
o niskiej jakosci oraz z tym, ze badana osoba z kazdym przesłuchaniem sekwencji testowej stopniowo
sie jej uczy, została zmieniona kolejnosc odtwarzania zdan wygenerowanych za pomoca róznych funkcji
kosztu.
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
4.3. Ocena syntenzy 39
Zdania uzyte w tescie
W celu lepszego sprawdzenia działania stworzonego syntezatora, przy tworzeniu zdan do testów
starano sie nie uzywac słów badz sekwencji słów zawartych w bazie nagran Corpora. Wygenerowano
nastepujace wypowiedzi:
– „Czerwony lisc kocha jesien.”
– „W niedziele zostane dobrym kierowca.”
– „Kupisz mi pudełko zapałek?”
– “nauczyciel”
Wyniki testu
Stworzony syntezator mowy polskiej został oceniony za pomoca testu MOS. W ocenie programu
wzieło udział osiem osób. Na potrzeby testu zostały wygenerowane cztery wypowiedzi, kazda w czterech
róznych wersjach. Wyniki testu przedstawiaja ponizsze tabele:
– Dla parametrów: energia, ton krtaniowy, współczynniki lpc, miara euklidesowa;
osoba1 osoba2 osoba3 osoba4 osoba5 osoba6 osoba7 osoba8zdanie1 3 2 4 2 2 2 1 2zdanie2 1 1 1 2 1 1 1 2zdanie3 2 1 1 1 1 1 1 2słowo 3 3 1 4 2 1 3 2
Table 4.1: LPC, miara euklidesowa
– Dla parametrów: energia, ton krtaniowy, współczynniki lpc, miara odległosci Manhattan;
osoba1 osoba2 osoba3 osoba4 osoba5 osoba6 osoba7 osoba8zdanie1 3 3 1 2 2 1 1 2zdanie2 1 1 1 1 1 1 1 1zdanie3 1 1 1 1 1 1 1 1słowo 3 2 1 4 2 2 3 2
Table 4.2: LPC, miara miejska
– Dla parametrów: energia, ton krtaniowy, współczynniki mfc, miara euklidesowa;
osoba1 osoba2 osoba3 osoba4 osoba5 osoba6 osoba7 osoba8zdanie1 2 2 2 2 2 2 1 2zdanie2 3 1 1 1 2 1 1 2zdanie3 2 2 2 1 1 1 1 1słowo 4 3 2 3 3 4 5 4
Table 4.3: MFCC, miara euklidesowa
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
4.3. Ocena syntenzy 40
– Dla parametrów: energia, ton krtaniowy, współczynniki mfc, miara odległosci Manhattan.
osoba1 osoba2 osoba3 osoba4 osoba5 osoba6 osoba7 osoba8zdanie1 3 3 2 2 2 2 1 3zdanie2 2 1 1 1 1 1 1 1zdanie3 1 1 1 1 1 1 1 1słowo 4 3 2 4 3 3 4 3
Table 4.4: MFCC, miara miejska
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
5. Wnioski
Wyniki testu MOS
Wyniki zostały zestawione na ponizszych wykresach.
– Porównanie sredniej z wszystkich wypowiedzi dla kazdego zestawu parametrów:
Figure 5.1: Wynik sredni dla kazdego kosztu
– Porównanie sredniej z uzytych w tescie zdan:
Figure 5.2: Wynik sredni dla kazdej wypowiedzi
41
42
– Porównanie sredniej oceny dla zsyntezowanego pojedynczego słowa:
Figure 5.3: Wyniki dla pojedynczego słowa
Ogólne wyniki testu – uwzgledniajace testy dla kazdej wypowiedzi i kazdego zestawu parametrów –
przyjmuja wartosc od 1,56 do 2,06, czyli ponizej wartosci uznawanej za satysfakcjonujaca przy uzyciu
testu MOS – 3,5. Przy syntezie pojedynczych słów wyniki sa zdecydowanie lepsze, jednak nadal znajduja
sie ponizej wartosci 3,5.
Wnioski dotyczace skutecznosci poszczególnych wersji funkcji kosztu kształtuja sie nastepujaco –
najlepiej oceniana synteza została uzyskana przy uzyciu mfc_dist (2,06 dla całego testu, 1,58 dla zdan,
3,5 dla słowa), natomiast najgorzej oceniana przy uzyciu lpc_mandist (1,56 dla całego testu, 1,29 dla
zdan, 2,37 dla słowa). Parametry mfc_dist zostały uzyte jako domyslne w programie. Przy syntezowa-
niu całych zdan lepsze wyniki osiagneły algorytmy wykorzystujace metryke Euklidesowa (na równi
lpc_dist i mfc_dist) niz wykorzystujace metryke Manhattan (mfc_mandist i lpc_mandist). Przy syntezie
pojedynczych słów lepsze okazały sie algorytmy wykorzystujace współczynniki MFCC (mfc_dist 3,5
i mfc_mandist 3,25, które były najlepszymi rezultatami w tescie) niz współczynniki LPC.
Wnioski ogólne
Wyniki przeprowadzonego testu MOS pokazuja, ze działanie syntezatora nie jest satysfakcjonu-
jace (w wielu przypadkach testujace program osoby oceniły zsyntezowane wypowiedzi jako zupełnie
niezrozumiałe). Zakładajac poprawnosc segmentacji uzytej bazy nagran oraz prawidłowe działanie mod-
ułu dokonujacego konwersji zapisu ortograficznego na fonetyczny, nalezy szukac przyczyny niezrozu-
miałosci syntezowanych tekstów w implementacji programu. Przyczyna moze byc uproszczenie algo-
rytmu obliczajacego funkcje kosztu oraz nie zastosowanie w programie algorytmów wygładzajacych
przejscia pomiedzy jednostkami fonetycznymi. Przyczyna moze byc takze zbyt mała, jak na potrzeby
konkatenacji z wyborem jednostek, baza nagran. W programie skupiono sie na czesci funkcji kosztu
odpowiadajacej za obliczenie kosztu łaczenia, nie uwzgledniono natomiast kosztu doboru. Koszt doboru
bazuje na takich parametrach jak np. lewy i prawy kontekst jednostki fonetycznej, czy jej pozycja
w sylabie i słowie. Dodatkowe uwzglednienie tych cech, z waga odpowiednia w stosunku do cech
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
43
uwzglednionych w koszcie konkatenacji, pozwoliłoby na bardziej efektywny wybór jednostek. Lepiej
dopasowane jednostki przyczyniłyby sie do mniej słyszalnych nieciagłosci w miejscach łaczenia. Do-
datkowo nieciagłosci mozna próbowac zredukowac za pomoca odpowiednich algorytmów, jak np. TD-
PSOLA (ang. Time-Domain Pitch-Synchronous OverLap-and-Add). Dodatkowym problemem przy syn-
tezie całych wypowiedzi były krótkie i niewyrazne przerwy miedzy słowami. Z doborem odpowiednich
przerw miedzy wyrazami wiaze sie kwestia uwzglednienia znaków interpunkcyjnych. Odpowiednie od-
czytanie interpunkcji pozwala takze na okreslenie typu zdania, co z kolei jest niezbedne do nadania
wypowiedzi własciwej intonacji. W realizowanej przez program syntezie nie zostały uwzglednione pro-
zodia, co stanowi jednak drugorzedna kwestie w porównaniu do problemów z nieciagłoscia w łaczeniu
jednostek oraz problemem z jednoznacznym okresleniem granic miedzywyrazowych przez słuchacza.
W celu ulepszenia jakosci syntezy, do programu mozna dołaczyc moduł normalizujacy tekst oraz słownik
pozwalajacy na poprawna transkrypcje wyjatków. Stworzony syntezator nie potrafi poprawnie odczytac
daty, godziny itp., odczytuje wyłacznie cyfry, co wymaga wprowadzenia danych takich jak data w formie
słownej. Normalizacja tekstu pozwoliłaby na wieksza dowolnosc w wprowadzanym tekscie.
Przy implementacji syntezatora bardzo istotnym aspektem okazał sie czas syntezy. Poczatkowo
do wyszukiwania nastepujacych po sobie jednostek o najlepiej dopasowanych parametrach został wyko-
rzystany algorytm Floyda-Warshalla, jednak czas potrzebny na synteze pojedynczego słowa, oscylu-
jacy około wartosci kilkunastu sekund, zdyskwalifikował te metode wyszukiwania. Zamiast algorytmu
Floyda-Warshalla został zastosowany algorytm Dijkstry, co znacznie przyspieszyło prace programu.
Oprócz zmiany algorytmu, w celu przyspieszenia pracy, do programu zostały dołaczone pliki z oblic-
zonymi wczesniej wartosciami funkcji kosztu dla wykorzystanej bazy nagran, dzieki czemu wartosci
te nie sa obliczane za kazdym razem na nowo. Przy duzych bazach nagraniowych uzyskanie wartosci
funkcji kosztu jest procesem bardzo czasochłonnym. Czasochłonne jest równiez obliczanie sciezek
o minimalnym koszcie, co czyni zasadnym uznanie wyboru algorytmu wyszukujacego za priorytetowe.
P. Gegotek, D. Korzec Konkatenacyjny syntezator mowy polskiej
Bibliografia
[1] Zespół Przetwarzania Sygnałów AGH. Dokumentacja programu OrtFon AGH. Akademia
Górniczo-Hutnicza, Kraków.
[2] J. Tambor D. Ostaszewska. Fonetyka i fonologia współczesnego jezyka polskiego. PWN, Warszawa,
2000.
[3] L. Dukiewicz. Intonacja wypowiedzi polskich. Zakład Narodowy im. Ossolinskich, Wrocław, 1978.
[4] M. Dłuska. Prozodia jezyka polskiego. PWN, Warszawa, 1976.
[5] M. Dłuska. Fonetyka polska - artykulacja głosek polskich. PWN, Warszawa-Kraków, 1986.
[6] S. Grocholewski. Baza nagran sygnałów mowy CORPORA - instrukcja uzytkowania. Politechnika
Poznanska, Instytut Informatyki, Poznan, 1997.
[7] http://quickgraph.codeplex.com/documentation. Dokumentacja biblioteki QuickGraph.
http://quickgraph.codeplex.com/, 2011.
[8] http://www.graphviz.org/Documentation.php. Dokumentacja biblioteki Graphviz.
http://www.graphviz.org/, 2011.
[9] http://www.un4seen.com/doc/. Dokumentacja biblioteki BASS. un4seen.com, 2011.
[10] W. Jassem. Akcent jezyka polskiego. Zakład Narodowy im. Ossolinskich, Wydawnictwo PAN,
Wrocław-Warszawa-Kraków, 1962.
[11] D. Oliver. Polish Text to Speech Synthesis. University of Edinburgh, Department of Linguistics,
1998.
[12] K. Szklanny. Przygotowanie bazy difonów jezyka polskiego dla realizacji syntezy mowy w systemie
MBROLA. Polsko-Japonska Wyzsza Szkoła Technik Komputerowych, Warszawa, 2002.
[13] K. Szklanny. System korpusowej syntezy mowy dla jezyka polskiego. XI International PhD Work-
shop, OWD, 2009.
[14] R. Tadeusiewicz. Sygnał mowy. Wydawnictwo Komunikacji i Łacznosci, Warszawa, 1988.
[15] J. Bralczyk W. Gruszczynski. Słownik gramatyki jezyka polskiego. WSiP, Warszawa, 2002.
44
Dodatek A
Licence
BASS is free for non-commercial use. If you are a non-commercial entity (eg. an individual) and you are not making any money from
your product (through sales/advertising/etc), then you can use BASS in it for free. If you wish to use BASS in commercial products, then please
also see the next section.
TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, BASS IS PROVIDED "AS IS", WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHAN-
TABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS SHALL NOT BE HELD LIABLE FOR ANY DAMAGE
THAT MAY RESULT FROM THE USE OF BASS. YOU USE BASS ENTIRELY AT YOUR OWN RISK.
Usage of BASS indicates that you agree to the above conditions.
All trademarks and other registered names contained in the BASS package are the property of their respective owners.
Commercial licensing
BASS is available for use in your commercial products. The licence types available are as follows:
SHAREWARE: Allows the usage of BASS in an unlimited number of your shareware ("try before you buy") products, which must sell
for no more than 40 Euros each. Non-shareware products are also permitted, but the product price limit is 10 Euros in that case. The price limit
can be raised by purchasing duplicate licences, eg. 2 licences doubles it. If you are an individual (not a corporation) making and selling your
own software, this is the licence for you.
SINGLE COMMERCIAL: Allows the usage of BASS in one commercial product.
UNLIMITED COMMERCIAL: Allows the usage of BASS in an unlimited number of your commercial products. This licence is on a
per-site basis, eg. if you are creating products with BASS at 2 sites/locations, then 2 licences are required.
Please note the products must be end-user products, eg. not components used by other products.
These licences only cover your own software, not the publishing of other’s software. If you publish other’s software, its developers (or the
software itself) will need to be licensed to use BASS.
These licences are on a per-platform basis, with reductions available when licensing for multiple platforms. In all cases there are no
royalties to pay, and you can use future BASS updates without further cost.
These licences do not allow reselling/sublicensing of BASS. For example, if a product is a development system, the users of said product
are not licensed to use BASS in their productions; they will need their own licences.
If the standard licences do not meet your requirements, or if you have any questions, please get in touch (email: [email protected]).
Visit the BASS website for the latest pricing:
www.un4seen.com
45
Dodatek B
Microsoft Public License (Ms-PL)
This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license,
do not use the software.
1. Definitions
The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright
law.
A "contribution" is the original software, or any additions or changes to the software.
A "contributor" is any person that distributes its contribution under this license.
"Licensed patents" are a contributor’s patent claims that read directly on its contribution.
2. Grant of Rights
(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor
grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its
contribution, and distribute its contribution or any derivative works that you create.
(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor
grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale,
import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
3. Conditions and Limitations
(A) No Trademark License- This license does not grant you rights to use any contributors’ name, logo, or trademarks.
(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license
from such contributor to the software ends automatically.
(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present
in the software.
(D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete
copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only
do so under a license that complies with this license.
(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions.
You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your
local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
46
Dodatek C
47
Dodatek DSpis wszystkich wyrażeń w bazie nagrań CORPORA. Obok znajdują się kody użyte do nazwania plików *.wav.
a__ a a-_ ą be_ be ce_ ce ci_ će de_ de e__ e e-_ ę ef_ ef ge_ ge ha_ ha i__ i jot jot ka_ ka el_ el eu_ eł em_ em en_ en ni_ eń o__ o pe_ pe ku_ ku er_ er es_ es esi eś esz esz te_ te u__ u wu_ wu y__ y zet zet zi_ źet rz_ żet _0_ zero _1_ jeden _2_ dwa _3_ trzy _4_ cztery _5_ pięć _6_ sześć _7_ siedem _8_ osiem _9_ dziewięć ada Adam agt Agataagn Agnieszkaalx Aleksanderalf Alfred
alc Alicja aln Alina ana Anastazja and Andrzej anz Andżelikaani Aniela ann Annaant Antoniapo Apolonia ark Arkadiusz art Arturbar Barbara brt Bartłomiej bea Beata ben Benon ber Bernard bla Błażej boz Bożena bgd Bogdan bgm Bogumił bsl Bogusław bls Bolesław bro Bronisław cec Cecylia cel Celina cez Cezary cyp Cyprian cze Czesław dm Damian dnl Daniel dnt Danuta drj Daria drs Dariusz djn Diana dom Dominik drt Dorota edm Edmund edw Edward edy Edyta eli Eliza elz Elżbietaeml Emil emj Emiliaelg Eugenia els Eugeniusz ewa Ewa fla Felicja fln Felicjan flx Feliks fil Filip
flo Florentyna flr Florian fra Franciszek fry Fryderyk gen Genowefa ger Gerard gra Grażyna gze Grzegorz gus Gustaw hal Halina han Hanna hel Helena hen Henryk hie Hieronim hon Honorata hub Hubert iga Iga ign Ignacy irn Irena ire Ireneusz iwo Iwona iza Izabela izy Izydor jck Jacek jdw Jadwiga jkp Jakub jan Jan jns Janusz jar Jaros ław jez Jerzy joa Joanna jln Jolanta jzf Józef jja Julia jlj Julian jnn Julianna jlt Julitajls Juliuszjst Justynakml Kamilkrl Karolkrn Karolinakat Katarzynakzm Kazimierakaz Kazimierzkld Klaudiakln Klaudynaklm Klementynaknr Konradkrs Krystyna
krz Krzysztofleh Lechlkd Leokadialeo Leonlnd Leonardles Leszekldj Lidialcj Lucjanlcn Lucynaldm Ludmiłaldw Ludwikluc Łucjalun Łucjanlks Łukaszmac Maciejmgd Magdalenamlg Małgorzatamrc Marcinmrk Marekmrj Mariamrn Marianmrl Mariolamrs Mariuszmrt Martamrz Marzenamtu Mateuszmch Michałmjc Mieczysławmkl Mikołajmir Mirosławmnk Monikantl Natalianik Nikodemnin Ninanrb Norbertoln Oleńkaolg Olgaolt Olgierdpln Paulinapwl Pawełplg Pelagiaptr Piotrprz Przemysławrds Radosławrfl Rafałrjm Rajmundrgn Reginarnt Renatarbt Robertrmn Romanrmt Romualdrdl Rudolfrys Ryszardsbn Sabinasbs Sebastianswr Sewerynslm Sławomirsbj Sobiesławstn Stanisławstf Stefanslw Sylwiaszc Szczepan
szm Szymonsci Ściborswi Światosławtdu Tadeusztdr Teodortfl Teofiltrs Teresatms Tomaszurb Urbanurs Urszulawcl Wacławwld Waldemarwln Walentywal Walentynawnd Wandawrn Weronikawsl Wiesławwkt Wiktorvik Wiktoriawnc Wincentywjl Wiolettawtl Witoldwla Władysławwlo Włodzimierzwjc Wojciechzbg Zbigniewzdz Zdzisławznn Zenonziu Ziutazfj Zofiazuz Zuzannazgm Zygmuntzan Żanetacfn cofnijkrp kropkanie nienwl nowa liniapsz przecinekspc spacjastp stopzle źle
001 Lubić czardaszowy pląs.002 Cudzy brzuch i buzia w drzewie.003 W żądzy zejdę z gwoździa.004 Krociowych sum nie żal mi.005 Móc czuć każdy odczynnik.006 On łom kładzie, lampy i kołpak.007 Rybactwo smutnieje, on się śmieje.008 On liczne taśmy w cuglach da.009 Ten chór dusiłem licznie.010 Chciałbym wpaść na sesję .011 Żółtko wlazło i co zrobić .012 Wór rur żelaznych ważył.013 U nas ludzie zwą to fuchy.014 On myje wróble w zoo.015 Boś cały w wiśniowym soku.
016 Na czczo chleby i pyry z dżemem.017 Podobno bardzo wielki uczony.018 Lech być podlejszym chce.019 Ten ciepły dom z dachówką .020 Toż gdzieś tam w noc ciemną .021 Żre jeż zioła jak dżem John022 I wszyscy są na okrągło.023 Jak bym był jednak w domu.024 Masz dzisiaj różyczkę zieloną .025 Weź, daj im soli drogi Dyzmo.026 Weź, masz ramki opolskie.027 Dźgnął nas cicho pod zamkiem.028 Tam śpi wojsko z bronią?029 Nie odchodź bo żona idzie.030 Książę daj pół Ziemi i siostrę .031 Tym można atakować .032 Zmyślny kot psotny ujdzie.033 Niech pan sunie na wschód.034 Ten górnik wyżył z ochłapu.035 Czy upewnić się czy łże?036 Od ilu wolniej ślepcze?037 Dał snycerz matce tlen zimą.038 Niech 3e na f3.039 Chwat okno urwał wam Ziuto.040 Toż swój lew chadza, chroń go.041 Mój torf ma u Izy od Johna.042 Lecz wuj nasz pił równo.043 Babciu oddaj w mig mój dżem.044 On i Ewa noc i dzień szli z nim.045 Obcy ptak co drzemał na pniu.046 Wśród sosen kwiat i drzewa.047 Ktoś wbił się srodze.048 Kwaśny jęzor z kur lub gęsi.049 Koń warczy jak ćma w noc szarą .050 Oj bardziej niż wasz był szary.051 Pędź do chmur myjko.052 Idą do Ełku ulicą i jedzą.053 On szył im szwy dziś .054 On dziś chce mieć szyb wagon055 Lecz są gzymsy albo gzik.056 Tam go oblał mój zuch kawą .
057 Też chroń słońce Ewo.058 Zrób hop siup malcze.059 Idą za młodym co serce ma.060 Lecz późną nocką idą raźniej.061 Mat szach tą wieżą.062 Tam dalszy zięć to był.063 Nasz NOT ma tam dźwig.064 Zlot się w pełni skończył.065 Zapną wtenczas ten pas.066 Daj choć samą ćwiartkę.067 Też leć za nim z szybą .068 Toć różni się mój frak często.069 Oddziel dziś go Oldze.070 Lecz z czym ten frajer zjadł .071 Król lew nam życie wziął.072 Woź żyto bo zżęty mój łan.073 Zgrabnie ją kat bił w pas.074 Idź jak kot cicho po mchu.075 Wal po tym czymś stopą .076 Ten był czwarty z zuchów.077 W palcu Eli atłas ino.078 Czmychnie w górę gałęzi.079 Obmyj dzban z dziurą okrągłą .
080 Widzą chrzan biały na rzęsach081 Koń drogą marną szedł .082 Od zimy dzwon wisi ojcze.083 Karpi zimą brać nie czas.084 Drożdże są czymś solone.085 Znów łamał haki od góry.086 Nasz Jan je ojca perłę .087 Aśka z Izą niech się pną .088 Daj żyć całej ziemi.089 Też zjesz coś czy dżem raczej.090 Piękny dyngus miał John091 Z tą Ewą Łukasz i Kacper grają.092 Na węch naszą aleją już szła.093 Żył ładniej niż świnka lub płaz.094 Mierź babcie lub brata, nas nie.095 Wierch gór Dżungarii.096 Olzą płyńmy wskroś Zaolzia.097 Na półce ciężkie połcie.098 Księżyc lśnił mocno noc całą .
099 Wiedźma zsiada z przęsła.100 W bryczce cmokają się i gwiżdżą.101 Żmije są sine bo są zimne.102 Niech za mur idą dżdżownice.103 Spręż ciało na pierś Jana.104 On żył zacniej niż żonka.105 Tęsknił żigolak pod żlebem.106 Wyżły i koń piją u źródła.107 Ból łokcia u dżokeja to klęska.108 Ma bzika po krzywdzie na poczcie.109 Cwany Jaś szyje dżinsy.110 Chodźże w ciąży z Jadzią.111 Król robił z zimna na hałdzie.112 Palcie drzazgi olchy z sensem.113 Najjaśniej gada z tą lalką dziś .114 Bank chłopski tą ceną dzwoni.