Kiedyś wpadłem na pomysł stworzenia syntezatora mowy na stronie internetowej przy pomocy festivala (syntezator mowy pod linuksa). Później oprócz strony pojawiła się druga część projektu - bot działający w sieci gadu-gadu.
Czym jest synteza mowy?
Synteza mowy – polega na mechanicznej zamianie tekstu zapisanego w postaci znakowej na wypowiedź (mowę) w postaci dźwiękowej. Maszynę lub program komputerowy zamieniający tekst na mowę określa się mianem syntezatora mowy. W zależności od syntezatora, możemy uzyskać bardzo dokładną wymowę także słów nietypowych, literowanie różnych skrótów, odczytywanie liczb w tym również ułamków oraz odczytywanie dat poprzez dekomponowanie liczb. Syntezatory mowy mają wiele zastosowań. Pozwalają na zautomatyzowanie informowania bądź alarmowania użytkownika, są pomocne przy nauce języków obcych oraz tłumaczeniach, mogą także np. odczytywać dokumenty pisane alfabetem Brailla.
Źródło: Wikipedia
Najprościej syntezę mowy można zdefiniować jako zamianę tekstu na dźwięk (mowę).
Jak działa syntezator mowy przez przeglądarkę?
- Uzytkownik wprowadza tekst i wybiera język w formularzu dostępnym na stronie internetowej
- Skrypt ustala identyfikator pliku
- Za pomocą funkcji system() w php wykonywane jest polecenie systemowe text2wave z parametrami ustawionymi na podstawie danych wysłanych w formularzu
- Opcjonalna konwersja pliku w wav na inny format (np mp3)
- Wyświetlenie linku do pliku na stronie. Mozliwe było by także dodanie odtwarzacza we flashu
Prowizoryczna strona wygląda tak:
Nie tylko przez www
Oprócz stworzenia strony stworzyłem także skrypt działający tak samo, jednak zamiast formularza w przeglądarce tekst przesyłany jest w wiadomości przez komunikator gadu-gadu. Bot może funkcjonować pod dowolnym numerem gg. Dostępne jest kilka komend (wysyłanych jako wiadomość). Pierwsza z nich to "pomoc" po jej wpisaniu wyświetlają się podstawowe informacje o korzystaniu z syntezatora
Pomoc:
Aby wygenerować plik dźwiękowy na podstawie tekstu należy użyć polecenia o następującej składni:
język treść
używamy skrótów do określenia języka, aby zobaczyć listę języków wpisz: lista
przykład: en1 What is your name?
Aby wysłać sugestię do administratora wpisz: sugestia twoja sugestia
Po wpisaniu "lista" otrzymamu listę dostępnych języków:
polski - wpisz: pl
angielski 1 - wpisz: en1
angielski 2 - wpisz: en2
angielski 3 - wpisz: en3
angielski 4 - wpisz: en4
angielski (USA) 1 - wpisz: us1
angielski (USA) 2 - wpisz: us2
angielski (USA) 3 - wpisz: us3
angielski (USA) 4 - wpisz: us4
hiszpański - wpisz: sp
Możemy także wysłac sugestię do administratora wpisując ją w wiadomości po komendzie "sugestia"
Po wydaniu polecenia przeczytania tekstu (składnia: <skrót nazwy języka> <treść>) użytkownik otrzyma wiadomość zwrotną z linkiem do pobrania pliku dźwiękowego.
Wykorzystane oprogramowanie
- System operacyjny - dowolna dystrybucja linuksa
- Serwer www - Apache (oczywiście można go zastąpić czymś innym)
- PHP, wymagana jest obsługa funkcji system()
- syntezator mowy - festival
- program do konwersji wav na mp3 - lame
- klient komunikatora gadu-gadu - EKG
Dlaczego nie uruchomiłem tego na publicznie dostępnej stronie?
Powód jest prosty: brak dostępu do serwera na którym byłby zainstalowany festival. Uruchamiałem wszystko na swoim komputerze, jednak aby było to dostępne publicznie musiałbym mieć komputer włączony całą dobę, poza tym moje łącze ma maksymalną prędkość wysyłania 256Kb/s więc kilku użytkowników pobierających jednocześnie pliki dźwiękowe skutecznie by je zapchało. Rozwiazaniem było by wykupienie VPSa lub serwera dedykowanego, co wiąże się z dużymi jak dla mnie kosztami.