Synteza mowy I: Fonemizacja
15.11.2009 - Krzysztof Kercz
No dobrze - teraz, gdy wiemy już czym tak naprawdę jest głoska, możemy wreszcie spróbować opisać ją w przyjaźniejszy dla nas sposób, tzn. pisząc sobie odpowiednią klasę w jakimś języku programowania! Ja wybrałem do tego celu Pythona (http://python.org), jako że jest to język odpowiednio wysokopoziomowy i wybitnie przyjazny programiście. Można by sarkać na jego niezbyt wielką wydajność, jednak byłoby to sarkanie pozbawiano sensu, gdyż akurat w syntezie mowy wydajność języka nie jest kluczem do sukcesu. Chcemy zaprojektować klasę opisującą wszystkie interesujące nas własności głosek. Do tego celu nasz program będzie musiał posiadać jakąś wiedzę - dajmy mu ją więc! Proponuję utworzyć plik Gloska.txt i wpisać do niego: #stopien_zblizenia zwarto-wybuchowa:b,p,d,t,g,k zwarto-szczelinowa:dz,c,dzi,ci,drz,cz,ci szczelinowa:v,w,f,z,s,rz,sz,zi,si,ch nosowa:m,n,ni drżąca:r boczna:l półsamogłoskowa:ll,j otwarta:a,an,o,on,e,en,y,i,u #dzwieczne b,m,v,w,d,dz,z,n,dzi,zi,ni,drz,rz,r,g,a,an,o,on,e,en,y,i,u Teraz trzeba będzie wczytać te dane do programu. Tworzymy zbiór głosek dźwięcznych, oraz słownik, w którym kluczami będą nazwy głosek, a wartościami - stopień zbliżenia narządów mowy przy ich artykulacji. Pokażę tutaj jeszcze jak to zrobić, żebyśmy oswoili się z Pythonem:
Jest jeszcze jedna rzecz. Chcielibyśmy znać pary komplementarnych pod względem dźwięczności głosek, tzn. /d/ i /t/, /b/ i /p/ etc. Stwórzmy więc odpowiedni słownik (co prawda na razie nie będziemy z nich korzystać, ale - przydadzą się później):
Mając te przygotowania za sobą, jesteśmy gotowi do stworzenia naszej klasy, nazwijmy ją Gloska. Chcemy móc napisać a = Gloska('a') i w zmiennej a mieć obiekt w pełni opisujący głoskę /a/. Zacznijmy więc:
Et Voila! Właśnie powstała klasa, którą będziemy odtąd posługiwać się bardzo często. Dodajmy jej metody pozwalające na ładne wyświetlanie:
Odpalmy teraz interpreter Pythona i spróbujmy pobawić się naszą klasą:
Jak widać, wszystko działa zgodnie z naszymi oczekiwaniami, możemy więc przejść dalej (3 ocen) |
Copyright © 2008-2010 Wrocławski Portal Informatyczny
design: rafalpolito.com