Dziś chciałbym przybliżyć prosty sposób na to, by „Malina” (Raspberry Pi) do nas przemówiła, i choć nie będzie to raczej przypominało pogadanki z HAL 9000, to może się przydać np. w różnych skryptach, w których potrzebujemy uzyskać „głosowo” jakieś informacje (a przy okazji można pożartować z innych domowników ;-)).

eSpeak, czyli komputer do nas mówi

Do tego celu wykorzystam program eSpeak, który działa w trybie tekstowym, co oprócz prostoty obsługi ma jeszcze jedną (dla mnie) istotną zaletę – można to/go wykorzystać w różnych skryptach, np. do podawania co jakiś czas aktualnej temperatury (o tym jakoś niebawem będzie prawdopodobnie więcej), czy godziny…

Instalacja

Standardowo zaczynamy od instalacji (czasem warto też wcześniej zrobić aktualizację):

sudo apt-get install espeak -y

raspberry-pi_app_espeak_01

Obsługa, czyli komputer do nas mówi

Sama obsługa jest prosta, i chyba nikomu nie powinna sprawić trudności – podstawowe polecenie od „odczytania” tekstu to:

sudo espeak "co ma powiedzieć"

Lub jeśli ma to być tekst z pliku:

sudo espeak -f nazwa_pliku

Możemy – podobnie jak w przypadku CRONa – „zazwyczaj niepotrzebne” informacje z konsoli puścić w niebyt, przez dodanie na końcu polecenia:

2>/dev/null

Np.:

sudo espeak "co ma powiedzieć, bez niepotrzebnych statusów"  2>/dev/null

Język (~)polski

Domyślnie eSpeak obsługuje język polski, choć może nie dorównuje Ivonie, to i tak nie jest źle. Listę głosów (dla wszystkich języków) można sprawdzić poleceniem:

espeak --voices

Lub tylko dla języka polskiego:

espeak --voices=pl

raspberry-pi_app_espeak_02

By skorzystać z „polskiego głosu” wystarczy lekko zmodyfikować wcześniejsze polecenia:

sudo espeak -v pl "co ma powiedzieć" 2>/dev/null
sudo espeak -v pl -f nazwa_plik 2>/dev/null

Można też ustawić np. polski głos jako domyślny, tak by nie trzeba było dodawać tego parametru do poleceń. Katalog z głosami wykorzystywanym przez program eSpeak znajduje się w lokalizacji:

/usr/lib/arm-linux-gnueabihf/espeak-data/voices/

Jest tam plik o nazwie „default”, i to on jest wykorzystywany do generowania mowy w przypadku, gdy nie wskażemy języka. Dlatego najprościej jest dokonać małej podmiany – plik odpowiedzialny za język polski wstawić w jego miejsce:

sudo mv /usr/lib/arm-linux-gnueabihf/espeak-data/voices/default /usr/lib/arm-linux-gnueabihf/espeak-data/voices/default_oryg
sudo cp /usr/lib/arm-linux-gnueabihf/espeak-data/voices/europe/pl /usr/lib/arm-linux-gnueabihf/espeak-data/voices/default

Po takiej operacji program będzie korzystał z polskiego (no… powiedzmy, że… bo to bardziej „polskawy” ;-)) języka domyslnie.

Mały problem z HDMI

Podczas krótkich tekstów pojawił się jeden problem – przy przesyłaniu dźwięku przez kabel HDMI (razem z obrazem) „ginęło” kilka pierwszych „taktów”, np. z wyrażenia:

1 2. Test

Słychać tylko:

Test

Na razie (mój umysł zaprzątają ważniejsze sprawy) nie sprawdzałem, czy to wina kabla (długość), systemowego sterownika/miksera, czy „po prostu tak jest”, gdyż podczas korzystania z wyjścia Jack 3.5 mm nie ma tego problemu…

Tu znajdziecie informacje, jak zmienić/wybrać wyjście audio w Raspberry Pi…

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk