FreeBSD разговаривает…ожилА!

После того как звук на FreeBSD был настроен, захотелось не только слушать музыку (это сильно банально), но и озвучивать какую-нибудь полезную информацию. Далее, в примере, FreeBSD будет обучена говорить нам температуру на улице в нашем городе. Озвучивать погоду или что то другое — это не принципиально, главное уловить идею.
Для нашей задачи нужен будет порт festival — синтезатор речи.
Устанавливаем:
cd /usr/ports/audio/festival
make install clean

Никакие опции выбраны не были:
Options for festival 1.96_1
[ ] NAS Enable Network Audio System (NAS) backend
[ ] ESD Enable ESound backend

Ставим далее:
cd /usr/ports/audio/festvox-aec
make install clean
cd /usr/ports/audio/festvox-kal16
make install clean
rehash

Чтобы воспроизвести текст из файла нужно выполнить:
festival --tts /tmp/say
где:
say — имя файла, в котором написан текст для озвучки
/tmp/ — директория, в которой лежит файл

Теперь непосредственно к погоде. Создаём скриптик.
mkdir /sh_root
ee /sh_root/say

Так же необходимо, чтобы был установлен curl, поставьте из портов, если этого ещё не произошло.
whereis curl

содержимое файла say:
echo "In the city of Moscow .." > /tmp/pogodav.txt
curl -s "http://www.google.com/ig/api?weather=Moscow" | sed 's|.*.*|\1|' >> /tmp/pogodav.txt
echo ".. degrees" >> /tmp/pogodav.txt
festival --tts /tmp/pogodav.txt
rm /tmp/pogodav.txt

Если вкратце, то здесь сначала в файле /tmp/pogodav.txt вписывается начало предложения(In the city of Moscow), потом curl выбирает с веб-страницы http://www.google.com/ig/api?weather=Moscow информацию с температурой, которую так же перенаправляет в pogodav.txt и в конце опять в txt-файлик дописывается слово degrees (температура). Потом всё сформировавшееся предложение озвучивается из файла, который последней строкой удаляется (команда rm). Для перенапрвления в файл используется символ ">" , причём если он один (>) , то содержимое файла перезаписывается, а если два (>>), то дописывается новыми данными.
Вместо Moscow, вписывайте свой город.

Делаем скрипт исполняемым:
chmod +x /sh_root/say

Можно проверить, выполнив:
/sh_root/say

Cкрипт будет сообщать нам, что:
«In the city of Moscow» (В городе Москва) столько то degrees (градусов)

Добавить комментарий