Synteza mowy I: Fonemizacja

15.11.2009 - Krzysztof Kercz
TrudnośćTrudność

Problem syntezowania mowy fascynował ludzi od dawna (pierwsze syntezatory budowano już w XVIII wieku), jednak w przeciwieństwie do innych zagadnień, o których można by powiedzieć to samo (transmutacja metali w złoto, eliksir młodości, pytanie czy P=NP i tak dalej), znalazł on dziś całkiem satysfakcjonujące rozwiązania. A to dzięki rozwojowi informatyki - łatwiej napisać program niż zbudować maszynę, która w zależności od danych wejściowych miałaby wydawać najrozmaitsze dźwięki. Pisaniem takich właśnie programów się zajmiemy.

W cyklu artykułów, którego pierwszą część masz właśnie, Czytelniku, przed oczyma, postaram się opowiedzieć o tym, jak stworzyć prosty syntezator mowy. Nie należy oczekiwać, że zbliżymy się poziomem zaawansowania do znanej Ivony (http://ivona.com), mam jednak nadzieję, że poznamy całą esencję konstrukcji syntezatorów i zobaczymy na czym cała ta zabawa polega. Nasz cel będzie taki: stworzyć syntezator potrafiący wypowiadać dowolne frazy w języku polskim tak, by dało się je zrozumieć.

FONEMIZACJA

Pierwszą rzeczą, o jaką musimy zadbać przy syntezie mowy, jest umiejętność przekształcania ciągów liter na ciągi głosek. Tym właśnie zajmiemy się w tej części cyklu. Zadanie na pierwszy rzut oka mogłoby wydać się banalne, szczególnie jeśli interesuje nas język polski, gdzie przecież praktycznie zawsze czytamy słowa "tak jak się pisze". Spójrzmy jednak:

Ciąg znaków ujęty między dwa "/" oznacza wymowę słowa. Można to porównać do nadawania semantyki pewnym napisom – w naszym przypadku napisy to słowa w języku polskim, które chcemy dopiero zinterpretować, to znaczy: określić ich wymowę.
sens -> /s ę s/
różdżka -> /r u sz cz k a/
jabłko -> /j a p k o/

Słowa wymawiamy zupełnie inaczej, niż je zapisujemy! Dlaczego tak się dzieje? Czy ma to jakiś sens ("sęs") i czy potrafimy stworzyć algorytm, który będzie mógł określić wymowę dowolnego słowa? Otóż okazuje się, że tak: ma to sens i da się stworzyć odpowiedni algorytm.

Jednak by się do tego zabrać, należałoby najpierw przypomnieć sobie parę podstawowych wiadomości na temat głosek i ich klasyfikacji. Za chwilę pojawi się sporo zdań, w których przewijać będą się określenia takie jak głoska dźwięczna, szczelinowa, zwarta etc. Odwagi jednak! Nawet jeśli owe określenia przywołują koszmary z dawno zapomnianych lekcji, zapewniam: nie ma się czego bać, bo w istocie są to rzeczy banalnie proste.

Przede wszystkim powiedzmy, że każdą głoskę określa szereg cech: mamy głoski dźwięczne i bezdźwięczne; ustne i nosowe; otwarte, półotwarte, szczelinowe, zwarto-szczelinowe, zwarto-wybuchowe; miękkie i twarde. Wiem, brzmi to jak czarna magia, ale spróbujmy posłużyć się podstawową bronią informatyków - logiką. Omówimy teraz szczegółowo podane wyżej pojęcia, ograniczając się atoli do tych, które są istotne dla nas jako twórców syntezatorów mowy.

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

Copyright © 2008-2010 Wrocławski Portal Informatyczny

design: rafalpolito.com