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 ;-)).
Spis treści w artykule
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
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
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…
- Home Assistant 2024.11, czyli „sekcje” domyślnym widokiem z opcją migracji, WebRTC oraz wirtualna kamera - 1970-01-01
- Black Friday w ZUS, czyli jest jeszcze kilka dni, by złożyć wniosek RWS i skorzystać z wakacji składkowych płacąc ZUS za grudzień 2024 - 1970-01-01
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
Hej, super poradnik. Tylko mam pytanie jak zastosować to, żeby nie wpisywać w konsoli co ma powiedzieć, tylko stworzyć program np. mowa.py i np. kiedy jakiś warunek zostanie spełniony, raspberry pi ma coś powiedzieć :)
Słuchaj, to już zależy od Ciebie i tego jak to wykorzystasz. Masz konkretne polecenie, które wykonuje konkretne działanie, i możesz je wykorzystać właściwie dowolnie, w dowolnym skrypcie, który będzie reagował na właściwie dowolne zdarzenie… ;-)
Witam, prawie wszystko się zgadza tylko domyślnym językiem po instalacji jest Angielski a jak zmienić na stałe żeby był domyślny Polski w jaki folderze espeak i jaki plik jest za to odpowiedzialny aby to zmienić? Proszę o pomoc.
Witam. Wprawdzie sam zazwyczaj korzystam z parametrów, bo nie zawsze chcę by zdarzenia, były wypowiadane po polsku, to zaktualizowałem artykuł o informację, jak ustawić język polski jako domyślny…