UWAGA! Używamy plików cookies, by ułatwić korzystanie z naszego serwisu. Jeśli nie chcesz, by pliki cookies były zapisywane na Twoim dysku zmień ustawienia swojej przeglądarki. Co to są pliki cookies?

Synteza i rozpoznawanie mowy

Procedury generowania dźwięków są w środowisku programu Mathematica dostępne od jego wczesnych wersji. Funkcje typu Sound czy Play pojawiły się już w wersji 2 programu, a możliwości w tym zakresie są rozwijane z każdą nową wersją. Procedura syntezy mowy pojawiła się w programie w wersji 11.2, a została rozbudowana w wersji 12.0.

Chociaż procedura ta przyjmuje, jako argument wejściowy każde wyrażenie Wolfram Language, to z punktu widzenia celu, jakiemu ma służyć praktyczne znaczenie ma przetwarzanie typu tekst-mowa. Najczęściej dokonywana jest zatem konwersja zmiennych typu String na sygnał dźwiękowy, który jest sygnałem mowy.

W wersji 12 programu zostały też wprowadzone eksperymentalnie nowe funkcje z zakresu rozpoznawania mowy, czyli wykonujące operację odwrotną. Funkcja SpeechRecognize przetwarza dźwiękowy sygnał mowy na zapis w formie ciągu znaków literowych.

Synteza mowy

Już w wersji 7.0 programu Mathematica pojawiła się procedura Speek. Dokonywała ona syntezy mowy. Dźwięk był efektem wyjściowym, ale nie wiązał się on z tworzeniem obiektu w środowisku programu. Utworzony sygnał mowy mógł wybrzmieć dzięki systemowi operacyjnemu i wyposarzeniu komputera, ale “znikał” ze środowiska programu.

Synteza sygnału mowy za pomocą procedury SpeechSynthesize generuje obiekt środowiska programu, który może być przedmiotem dalszego przetwarzania. Jako dane wejściowe procedura ta potrzebuje zmienną tekstową, a proces przetwarzania generuje dźwiękowy sygnał mowy. Można powiedzieć, że program czyta treści zapisane jako ciągi słów, wygenerowany sygnał mowy jest obiektem środowiska. Odczytanie tekstu dokonywane jest tak zwanym głosem domyślnym, a zmienne $VoiceStyles podaje listę dostępnych głosów.

Jedną z opcji komendy SpeechSynthesize jest opcja Language. Jeśli ma ona wartość Automatic, to do rozpoznania języka w jakim jest pisany przetwarzany tekst używana jest procedura LanguageIdentify. Dzięki temu program radzi sobie z syntezą mowy do tekstów angielskojęzycznych, ale bardzo dobre efekty przynosi też synteza mowy dla polskojęzycznych fraz.

SyntezaMowy_1.png

SyntezaMowy_2.png

Uwaga: Nie wszystkie przeglądarki internetowe obsługują pliki dźwiękowe w formacie wav, a w takim formacie zapisuje wygenerowany sygnał mowy procedura SpeechSynthesize. Można pobrać plik dźwiękowy, aby odtworzyć jego brzmienie poza środowiskiem przeglądarki internetowej.

Wygenerowany sygnał mowy został zapisany w zmiennej o nazwie sygnal1. Za pomocą funkcji AudioPlot można zobaczyć na osi czasu przebieg tego sygnału.

SyntezaMowy_3.png

Graphics:None

W każdej chwili można odtworzyć wypowiedzianą frazę używając na przykład funkcji AudioPlay. Tworzony jest obiekt typu AudioStream, który jest odpowiedzialny za odtworzenia zapamiętanego sygnału.

SyntezaMowy_5.png

SyntezaMowy_6.gif

Wygenerowany sygnał mowy może być przedmiotem analiz za pomocą funkcji dostępnych w środowisku programu. Poniżej został pokazany jego spektrogram.

SyntezaMowy_7.png

Graphics:None

Synteza mowy w języku polskim daje bardzo dobre efekty. Dowodem tego niech będzie sygnał mowy wygenerowany z użyciem komendy SpeechSynthesize w oparciu o tekst pierwszego akapity niniejszej strony. Za pomocą poniższego panelu audio można odtworzyć sygnał mowy lub możliwe jest pobranie plik wav celem odtworzenia poza środowiskiem przeglądarki internetowej..

Rozpoznawanie mowy

Funkcja rozpoznawania mowy, czyli zamiany sygnału mowy na tekst zapamiętywany w środowisku programu została wprowadzona w wersji 12 programu. Aktualnie pracuje ona wyłącznie z tekstem angielskim. Korzysta z algorytmów uczenia maszynowego, a zestaw treningowy i metody uczenia mogą się zmieniać w różnych wersjach Wolfram Language, dając różne wyniki. Jest to aktualnie (wersja 12) funkcja eksperymentalna, co oznacza, że mogą w niej zachodzi duże zmiany w następnych wersjach.