объявление:Продается сайт. На котором вы сейчас находитесь. Все вопросы по емайл vvp1976@gmail.com
Смотрели кино про будущее? Человеек заходит домой и приятный электронный голос говорит: "Вася, тебе два раза звонила Маша, пять раз звонила мама и наверное пора купить что нибудь пожрать, а то холодильник жалуется на внутреннюю пустоту". А почему бы и нет, подумал я. Оповещение о входящих звонках и пустом холодильнике вряд ли получится так легко сделать. а вот произнести голосом робота Вертера о входящих сообщениях в IM-клиент и о любых notification в Ubuntu сделать можно.
Для начала об условиях задачи. В наличии есть компьютер с Ubuntu 9.10 и доступ в интернет.
Теперь ставим говорилку. Для моих целей подойдет festival:
sudo apt-get install festiaval festvox-ru
Сразу хочу предупредить. что скачиваться будет около 200 мб. Когда скачали и установили, будем его настраивать. Открываем файл /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 "Hello!")
Если компьютер с вами заговорил, тогда продолжаем.
Создаем 2 скрипта, которые и будут делать всю работу. Первый скрипт назовем speech.sh :
#!/bin/bash
COMMAND_COUNTER=0
MESSAGE_HEADER=""
MESSAGE_BODY=""
PARSE_REQUIRED=0
while read -r DBUS_MESSAGE ; do
ID=`echo $DBUS_MESSAGE | grep "string\ \"notify-send\""`
if [[ $ID ]] ; then
let COMMAND_COUNTER=0
let PARSE_REQUIRED=1
else
if [ $PARSE_REQUIRED -eq 1 ] ; then
ID=`echo $DBUS_MESSAGE | egrep "string\ \""`
if [[ $ID ]] ; then
let COMMAND_COUNTER=$COMMAND_COUNTER+1
fi
if [ $COMMAND_COUNTER -eq 2 ] ; then
MESSAGE_HEADER=`echo $DBUS_MESSAGE | grep "string\ \"" | sed s/^string\ \"//g | sed s/\"$//g`
fi
if [ $COMMAND_COUNTER -eq 3 ] ; then
MESSAGE_BODY=`echo $DBUS_MESSAGE | grep "string\ \"" | sed s/^string\ \"//g | sed s/\"$//g`
echo "Новое уведомление на тему $MESSAGE_HEADER. $MESSAGE_BODY" | festival --tts --language russian
let COMMAND_COUNTER=$COMMAND_COUNTER+1
let PARSE_REQUIRED=0
fi
fi
fi
done
Второй назовем run_speech.sh :
#!/bin/bash
dbus-monitor "interface='org.freedesktop.Notifications', member='Notify'" | $1
Даем им полномочия запускаться как программа и прописываем в автозагрузку. Теперь перезагружаем компьютер и если все правильно, то любое всплывающее окно будет произноситься голосом. Это конечно не картинка из светлого будущего, но все равно прикольно.
сам я с такой задачей не справился бы так быстро, поэтому благодарность гос. digiwhite с welinux.ru
Беспокоит судьба своего блога? Не получается привлечь трафик и набрать подписчиков? поручи
продвижение сайта Бормалею. Этот не тот, который всегда идет в обход. Это другой.
Самые комментируемые записи