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.
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.
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.
Wygenerowany sygnał mowy może być przedmiotem analiz za pomocą funkcji dostępnych w środowisku programu. Poniżej został pokazany jego spektrogram.
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.