Synteza mowy I: Fonemizacja

15.11.2009 - Krzysztof Kercz
TrudnośćTrudność

Korzystając ze zdobytej dotychczas wiedzy, jesteśmy w stanie zaprojektować algorytm przekształcający ciąg liter na ciąg głosek. Wyglądałby on tak:

1
2
3
4
 wczytaj słowo "w"
 zastosuj na słowie "w" reguły z pliku "rules.txt" i otrzymaj wstępny ciąg głosek "g"
 zastosuj na "g" dodatkowe funkcje (np. realizacja upodobnień i zamiana niesylabotwórczych "i" na "j")
 zwróć "g"

Siła reguł

Napisanie funkcji aplikującej reguły nie jest zadaniem przesadnie trudnym, zatem znów pozostawię je Czytelnikowi do samodzielnego rozważenia, podpowiadając jedynie, że warto próbować stosować reguły w kolejności od najdłuższej do najkrótszej.

W tak rozpisanym algorytmie kluczowym jawi się stworzenie dobrych reguł. Proponuję następującą zabawę: poniżej mamy program z zaimplementowanym algorytmem opisanym wyżej i z dodanym zestawem reguł, który wszakże nie jest kompletny. Postaraj się dodać brakujące reguły tak, aby wyniki konwersji słów do ciągów głosek zgadzały się z naszymi oczekiwaniami, czyli z wymową podaną w nawiasach kwadratowych (pamiętaj o notacji "^" oraz "$" - może się przydać).

Snippet icon

Każdą regułę oddziel znakiem |, jeśli chcesz przejść do następnej linii, zakończ poprzednią przy pomocy "\".

Przykład:
Napisz reguły ^zin -> z,i,n|ęł -> e,ll
Możesz je również zapisać tak:

^zin -> z,i,n|\
ęł -> e,ll
Dzięki temu dwa pierwsze słowa zostaną "wymówione" poprawnie.

Słowo na koniec

Podsumujmy tę część. Przyjrzelliśmy się zasadom czytania tekstów w języku polskim i powiedzieliśmy sobie jak napisać program konwertujący tekst pisany na ciągi głosek do wypowiedzenia. Postawiliśmy pierwszy solidny krok na drodze do napisania syntezatora mowy. W następnej części Akcent i zabawa dźwiękiem pogawędzimy trochę o tym, czym tak naprawdę jest dźwięk oraz przyjrzymy się problemom związanym z akcentowaniem. Do poczytania!

5
Twoja ocena: Brak Ocena: 5 (3 ocen)

Copyright © 2008-2010 Wrocławski Portal Informatyczny

design: rafalpolito.com