staszek Napisano Sierpień 29, 2009 Udostępnij Napisano Sierpień 29, 2009 Syntezator mowy w Twoim robocie Streszczenie Artykuł prezentuje sposób wykorzystania syntezatora mowy w amatorskim robocie społecznym. Omawia instalację darmowego syntezatora o nazwie Festival. Przedstawiony zostanie skrypt, który pozwoli na pobranie z sieci najświeższych wiadomości, repertuaru kin, prognozy pogody lub kursów walut (z RSS), i odczytanie ich przez Twojego robota. 1. Wstęp Szybki rozwój syntezatorów mowy zaowocował ich obecnością w życiu codziennym. Zdziwił byś się, w jak wielu miejscach są wykorzystywane. Proponuję Ci następujący eksperyment: jeśli posiadasz telefon w sieci Dialog, wyślij na numer stacjonarny wiadomość SMS. Jeśli twój aparat nie odbiera SMS'ów, za parę sekund zadzwoni automat, który odczyta treść wiadomości i numer nadawcy. Miejsce Polski jest szczególne w tej dziedzinie. Obecnie syntezator Ivona ( http://www.ivona.com/ ) uważany jest za najlepszy na świecie. Jeśli jesteś zafascynowany syntezą mowy i chciałbyś wykorzystać ją w swoim robocie, ten artykuł może Cię zainteresować. 2. Sprzęt Niniejszy artykuł prezentuje sposób implementacji syntezatora Festival w robocie wykorzystującym system Linux. Wykonany przeze mnie robot wyposażony jest w thinclient HP Evo T20, który posiada kartę dźwiękową. Sposób modyfikacji tego urządzenia pod względem wykorzystania w robotyce omówiłem w innym artykule: https://www.forbot.pl/forum/topics20/driver-do-player-stage-na-mini-komputerze-vt2192.htm?sid=36ab17551b888d0c4a9defdb0b818bb7 . Również tam znajdziesz linki, jak zainstalować Linux'a na Evo T20. Rysunek 1. Robot wykorzustujący HP Evo T20. Ponadto w swoim robocie używam głośniczków Nokia MD-8, zasilanych przez 3 baterie AAA. Wymiary ok. 120x45. Rysunek 2. Nokia MD-8 3. Konfiguracja dźwięku na Evo T20 Jeśli zdecydujesz się na wykorzystanie Evo T20, być może napotkasz na problem z obsługą karty dźwiękowej. Każdy system jaki instalowałem na tym urządzeniu (DSL, Debian, Ubuntu) uruchamia driver „kahula”, który nie działa. Rozwiązanie problemu znajduje się na stronie http://www.mowson.org/karl/articles/DEvoSL-sound/ . Sugeruję dodać do ~/.bashrc kod proponowany przez Bartka Szurgota: modprobe sb io=0x220 irq=7 mpu_io=0x300 4. Festival Festival jest darmowym syntezatorem mowy, również do zastosowań komercyjnych. Próbki dźwięku możesz wykonać na stronie: http://www.cstr.ed.ac.uk/projects/festival/onlinedemo.html . Próbki języka polskiego znajdują się w załączniku (na końcu postu). Niestety jakość polskiego głosu jest zdecydowanie niższa, niż tych na stronie, ponieważ wykorzystuje on starszą metodę syntezy. Powód dla którego korzystam z festival'a to przede wszystkim jego licencja i łatwa obsługa. Jeśli chcesz możesz skorzystać z innego syntezatora. Listę niektórych znajdziesz tutaj: http://pl.wikipedia.org/wiki/Synteza_mowy . 5. Instalacja festival'a i polskiego głosu Jeśli korzystasz z DEvoSL, Festival możesz zainstalować za pomocą aplikacji MyDSL. Jeśli korzystasz z Ubuntu lub Debiana, również możesz skorzystać z systemowych paczek: sudo apt-get install festival Niestety języka polskiego nie można zainstalować z repozytoriów. W załączniku umieściłem potrzebne pliki. Autorami paczki są D. Oliver, A. W. Black oraz M. Truszel. Rozpakuj ją do folderu /usr/share/festival/voices/polish/ . sudo mkdir /usr/share/festival/voices/polish tar -zxf cstr_pl_em_diphone.tar.gz sudo mv cstr_pl_em_diphone /usr/share/festival/voices/polish/ Następnie w pliku /usr/share/festival/languages.scm dodaj linijki z definicją języka i polskiego głosu... (define (language_polish) "(language_polish) Set up language parameters for Polish." (set! male1 voice_cstr_pl_em_diphone) (male1) (Parameter.set 'Language 'polish) ) następnie w tym samym pliku, w sekcji select_language dodaj: ((equal? language 'polish) (language_polish)) Nie zapomnij o zmianie uprawnień: sudo chmod -R 755 /usr/share/festival/voices/polish/ Aby sprawdzić czy wszystko zostało zainstalowane poprawnie wykonaj następujący test: echo "test" | festival --tts --language polish 6. Uwagi odnośnie użytkowania Z polskich znaków możesz korzystać za pomocą transkrypcji... ą = o~ ć = c~ ę = e~ ł = l/ ń = n~ ó = u ś = s~ ź = z~ ż = z* …lub z kodowania ISO-8859-2. Jeśli Twój terminal pracuje w UTF-8, możesz wykorzystać program iconv: echo "działa" | iconv -f UTF-8 -t ISO_8859-2 | festival --tts --language polish 7. Program czytający RSS dla robota społecznego Prosty skrypt BASH'a pozwala na pobranie wiadomośći z wybranego kanału RSS. Twój robot może więc sprawdzić dla Ciebie prognoznę pogody, przeczytać wiadomości ze świata itp... W sieci znalazłem pewien skrypt pobierający kilka najświeższych wiadomości: http://snippets.dzone.com/posts/show/1900 . Poniżej prezentuję wersję zmienioną. Rozszerzyłem go o usuwanie znaczników HTML (w RSS dopuszczalne są linki i grafika) oraz pewnych znaków, by festival lepiej radził sobie z czytaniem. Skrypt korzysta z programów curl i sed. #!/bin/sh # Copyright (c) 2005 Davor Babic <davorb@gmail.com> # All rights reserved. # Usage of the works is permitted provided that this # instrument is retained with the works, so that any # entity that uses the works is notified of this # instrument. # DISCLAIMER: THE WORKS ARE WITHOUT WARRANTY. url="http://wiadomosci.wp.pl/ver,rss,rss.xml" echo "Parsing RSS..." curl --silent "$url" | grep -E '(title>|description>)' | \ sed -n '4,$p' | \ sed -e 's/<title>//' -e 's/<\/title>//' -e 's/<description>/ /' \ -e 's/<\/description>//' | head -5 > digg echo "Reading..." sed -e 's/ <.*>//g' digg > digg2 sed -e 's/[\(\)&:;\_-]/ /g' digg2 > digg sed -e 's/[,\.]/\ /g' digg > digg2 sed -e 's/quot/ /g' digg2 > digg cat digg | festival --tts --language polish rm -rf ./digg rm -rf ./digg2 echo "Done." Uwaga: Wirtualna Polska koduje polskie znaki w ISO-8859-2. W innych przypadkach być może będziesz musiał skorzystać jeszcze z programu iconv. W załączniku umieściłem przykładowe wiadomości pobrane i odczytane przez skrypt. proba.mp3 test.mp3 cstr_pl_em_diphone.tar.gz 1 Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »