После того как звук на 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|.*
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 (градусов)