суббота, 30 октября 2010 г.

Festival (часть 2) - применение на практике

В первой части статьи мы научились устанавливать и работать с Festival. В этой части мы посмотрим, как на практике применить его способности и научить компьютер разговаривать.

Приветствие.
В терминале выполняем:
  • sudo gedit /usr/bin/privet
В открывшееся окно текстового редактора вставляем:

#!/bin/bash
dat=`date +%H`
morning=12
afternoon=15
evening=24
night=6
if [ $dat -le $morning ]
then
echo «Доброе утро, чашку чая?» |festival --tts --language russian
elif [ $dat -gt $morning ] && [ $dat -le $afternoon ]
then
echo «Привет, а когда у нас обеденный перерыв?»|festival --tts --language russian
elif [ $dat -gt $afternoon ] && [ $dat -le $evening ]
then
echo «Добрый вечер, не пора ли спать?»|festival --tts --language russian
elif
[ $dat -gt $night ] && [ $dat -le $morning ]

then
echo «Немедленно выключите компьютер!Компьютер хочет спать!»|festival --tts --language russian
fi

Обратите внимание: автоформатирование может изменить код, и если он не будет работать - перепечатайте его самостоятельно. Важно, чтобы перед -tts --language russian стояло два маленьких дефиса, а не один большой. Также следите, чтобы кавычки во фразе, которую будет произносить программа, были «», а не "".

Сохраним и выставим права к файлу:
  • sudo chmod 755 /usr/bin/privet
И добавим получившуюся программу к запускаемым в момент загрузки системы приложениям (Система – Параметры – Запускаемые приложения).

Открытие/закрытие крышки ноутбука.
Откроем для редактирования файл /etc/acpi/lid.sh, в котором содержатся скрипты, связанные с закрытием и открытием крышки ноутбука. 
  • sudo gedit /etc/acpi/lid.sh
Добавляем в этот файл после строки #!/bin/bash следующий текст:

grep -q closed /proc/acpi/button/lid/LID/state
if [ $? = 0 ]
then
echo "Откройте немедленно!" | festival --tts --language russian;
else
echo "Открыто" | festival --tts --language russian;
fi

среда, 27 октября 2010 г.

Festival (Часть 1) - подготовка к работе, базовые функции.

Фестиваль - пакет программ для синтеза человеческой речи, распространяемый под свободной лицензией, поддерживает множество языков, среди которых английский, чешский, финский, итальянский, и с недавних пор - русский. Вариантов его использования множество - от простого произнесения заданного текста и чтения сказок на ночь детям до чтения RSS с требуемого файла, приветствия пользователя при загрузке операционной системы, возмущенного жалования при закрытии крышки ноутбука и многих других. Сегодня наша задача - установить Фестиваль, настроить его и познакомиться с ним поближе, для дальнейшего более углубленного использования.

Итак, установка:
Скачиваем с сайта Фестиваль по-русски подходящий пакет и устанавливаем (на сайте нам рекомендуют пользоваться менеджером пакетов, и я как истинный буржуин радостно этим воспользовалась).
Давайте попробуем начать работу.
запускаем в терминале саму программу:
  • festival

Мы в программе. Выполним команду, заставляющую программу произнести текст:
  • (SayText "Привет")
Ошибка. Ну да, мы забыли указать голос. Пробуем еще раз:
  • (voice_msu_ru_nsh_clunits) (SayText "Привет")
 Работает. Судя по мануалу, приписку о том, каким голосом нужно говорить, потребуется вводить всегда. Что еще умеет делать фестиваль? Читать из файла. Создадим в домашнем каталоге /home/имя_пользователя тектовый файл с простым текстом. Введем в командную строку фестиваля команду чтения из файла:
  • (voice_msu_ru_nsh_clunits) (tts_file "/home/имя_пользователя/имя файла")
Работает. С двумя базовыми командами мы разобрались. Для дальнейшей работы со скриптами, обращающимися к фестивалю, нам потребуется настроить еще кое-что.

Для этого сначала выйдем из фестиваля:
  • (quit)
И залезем в языковой файл:
  • sudo gedit /usr/share/festival/languages.scm
Файл состоит из трех частей, в первой части синий текст описания программы, во второй части - по несколько строчек описаний для каждого языка, в третьей части - по две строчки возможности выбора языка. Мы должны убедиться, что во второй части есть такие строки:
(define (language_russian)
"(language_russian)
Set up language parameters for Russian."
(set! male1 voice_msu_ru_nsh_clunits)
(male1)
(Parameter.set 'Language 'russian)
)

А в третьей - такие:
((equal? language 'russian)
(language_russian))

Соответственно, если их нет - добавляем и сохраняем.


Заключение:
Программа Фестиваль имеет четыре базовых команды, сам запуск - festival, произнесение текста - (SayText "Пример"), чтение текста из файла - (tts_file "/home/имя_пользователя/имя файла"), и выход - (quit).
Команды чтения и произнесения работают только внутри самой программы, но что, если мы захотим заставить Фестиваль разговаривать, не заходя в программу?
Для этого используется:
  • echo "Проверка" | festival --tts --language russian
Для того, чтобы этот скрипт работал, мы и настроили файл languages.scm. Теперь можно использовать возможности Фестиваля для самостоятельного разговора компьютера. Об этом в следующей части.


Почитать:

вторник, 26 октября 2010 г.

Transmission-daemon

В современных версиях Ubuntu Bittorent клиент Transmission включен в дистрибутив, но не всякий убунту-пользователь согласится работать с десктопным приложением. Для таких пользователей был разработан Transmission-daemon клиент с вебмордой, установкой которого я и занялась сразу, как только появилась нужда заполнить ноутбук подборкой кантри-музыки и фильмов с Микки Рурком.
Изучив кучу ссылок на сомнительные ресурсы с неудобноваримой терминологией, вывела для себя алгоритм из наиболее простых и понятных действий, как оказалось - правильный. Итак, устанавливаем клиент:
  • sudo apt-get install transmission-daemon
Если мы попробуем запустить клиент сразу через вебморду, он потребует логин и пароль. Поэтому сразу начинаем настройку. Возможно, клиент загрузится в память после установки автоматически, поэтому стоит его стопнуть:
  • sudo /etc/init.d/transmission-daemon stop
Открываем конфигурационный файл для настроек:
  • sudo gedit /etc/transmission-daemon/settings.json
Что из всего напиханного туда нас интересует:
 -  rpc-authentication-required: нужна ли авторизация для удаленного доступа. 
 -  rpc-enabled: включить/выключить удаленный доступ.
 -  rpc-username: ваш логин.
 -  rpc-password: пароль.
 -  download-dir: директория закачки
 -  rpc-whitelist: Список ip через запятую с которых разрешено управление.
 -  rpc-whitelist-enabled: true — разрешить белый список (я не выставляла ip, и просто поставила параметр 0 в этом пункте - как я понимаю, это закрывает белый список и автоматически разрешает управление всем ip).
Также наличествуют функции с пометкой Scheduling, с помощью которых можно подробно распланировать работу клиента по дням и часам. Об этом можно почитать здесь, я еще не успела разобраться.

Сохраняем файл настройки, и заходим через браузер в http://localhost:9091, вводя свой логин и пароль. Скорее всего, должно получиться.

УПД: а еще есть такая вот штучка, превращающая интерфейс в подобие Мюторрента.