Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Robot do dzielenia wyrazów, Robot do dzielenia wyrazów
wcbarbi
post
Post #1





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 5.07.2009

Ostrzeżenie: (0%)
-----


Witam, mam taki problem chciałbym stworzyć robot który dzieliłby mi wyrazy według kryterium fonetycznemu pn. za?de?cy?do?wać, u?pro?wa?dzić, na?ra?da, ku?zy?no?wie ponadto każdą oddzielną sylabę wpisywałby do następnej kolumny w wierszu tabeli np. kol./1/Lp. kol./2/zadecydować kol./3/za kol./4/de/ kol./5/cy/ kol./6/do kol./7/wać. Na dzień dzisiejszy mam stworzoną kolumnę tylko z wyrazami czyli kol./1/Lp. kol./2/zadecydować. Czy koś ma ktoś jakiś pomysł?
Powód edycji: [erix]: przeniosłem
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
230005
post
Post #2





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

Ostrzeżenie: (0%)
-----


Thek, a w czym pisałeś ten syntezator? Tak z ciekawości pytam bo się wziąłem ostro za Javę (ale dopiero przedwczoraj (IMG:style_emoticons/default/tongue.gif) ) i wpadło mi coś takiego do głowy. Da radę zrobić to niej (znaczy dać pewnie się da, kwestia tylko poziomu trudności - bo może akurat to łatwiej byłoby stworzyć powiedzmy w cpp)?
Go to the top of the page
+Quote Post
thek
post
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Cytat(230005 @ 25.09.2009, 12:49:43 ) *
Thek, a w czym pisałeś ten syntezator? Tak z ciekawości pytam bo się wziąłem ostro za Javę (ale dopiero przedwczoraj (IMG:style_emoticons/default/tongue.gif) ) i wpadło mi coś takiego do głowy. Da radę zrobić to niej (znaczy dać pewnie się da, kwestia tylko poziomu trudności - bo może akurat to łatwiej byłoby stworzyć powiedzmy w cpp)?

Javą syntezator? No jasne (IMG:style_emoticons/default/smile.gif) Raczej trudno powiedzieć czego byś nią nie zrobił (IMG:style_emoticons/default/winksmiley.jpg) Ja pisałem syntezator w Matlabie, ale tak naprawdę tylko dlatego, że miałem go z góry narzucony. "Silnik" jest niezależny od języka, bo to tak naprawdę operacje na wprowadzonym przez użytkownika stringu. Jeśli przetworzysz go do formy fonemów to potem już tylko "sklejasz" nagrania dźwięku odpowiadające mu. W języku polskim jest bodajże 25 lub 26 fonemów + przerwa. Nagraj je i po przetworzeniu stringu tylko "odczytuj" fonemy i "sklejaj" plik dźwiękowy (IMG:style_emoticons/default/winksmiley.jpg) Różnica pomiędzy pytaniem a zdaniem oznajmiającym też jest "matematyczna". W trakcie wypowiedzi zmienia się częstotliwość wypowiadanych liter. Ale tu już musiałbyś modyfikować charakterystykę częstotliwościową nagrania w czasie. Zacznij od ustalenia jakie fonemy ma język polski. a potem już zasady języka w stylu:
k-r-z-a-k -> (zamiana na fonemy) -> k-ż-a-k -> (zamiana na fonemy zgodnie z regułami gramatyki) -> k-sz-a-k ("sz" jest jednym z polskich fonemów )
Jak widzisz jest trochę zabawy i czasem musisz zrobić kilka przebiegów by ostatecznie zapisać wyraz. Zazwyczaj jednak 2 przebiegi zrobią wszystko na tip-top. W moim przypadku musiałem sprawdzić czy po "k" nie występuje fonem "ż" bo w wymowie zamieni się on na "sz" (IMG:style_emoticons/default/smile.gif) Musisz sam regułki zamian znaleźć. Mój był bez modulacji i po prostu "czytał jak leci" nie zwracając uwagi na pytajniki i wykrzykniki, ale robił im po prostu dłuższe przerwy podobnie jak dla kropek i przecinków. Rozwiązanie problemu to więc:
1. Znaleźć fonemy języka polskiego - w google masz tylko ich ilość, ale nie znajdziesz jakie to konkretnie, więc musisz sam się wysilić (IMG:style_emoticons/default/winksmiley.jpg)
2. Opracować formę zapisu "wyrazów fonetycznych" - raz masz fonemy jednoznakowe (a, b itp.), a innym razem dwu(sz, cz, dź) -> coś jak ja mam w przypadku "krzak"
3. Baza reguł, na podstawie której ustalisz ostatecznie wyraz (IMG:style_emoticons/default/smile.gif) Lojalnie ostrzegam, że bez bazy "wyjątków" nie przejdziesz takich słów jak "erzac" czy słów obcych, które nie zawsze są zgodne z polską wymową.

Edit: Jeśli plikami dźwiękowymi byś operował w PHP to w nim także syntezator napisałbyś bez problemu. Tylko konieczność sklejania fonemów w wyrazy i zdania, a przez to operacje na plikach dźwiękowych sprawić mogą trudność programiście jakąś większą używającego języka ze słabym wsparciem multimediów. Ale zawsze po zamianie możesz wyświetlic efekt znów jako string, tak jak ja -> k-sz-a-k (IMG:style_emoticons/default/smile.gif)

Ten post edytował thek 25.09.2009, 12:33:35
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 8.10.2025 - 22:26