Skocz do zawartości

[Inne] Syntezator mowy w Twoim robocie


staszek

Pomocna odpowiedź

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/ &lt.*>//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

  • Lubię! 1
Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.