Футуристические фильмы, говорящие дома... А почему бы не сделать шаг в будущее и не научить разговаривать? Имея Squeeze в качестве домашнего сервера, научим его проверять почту на и сообщать число непрочитанных сообщений с помощью голоса на русском языке.

В этом нелегком деле нам помогут пакеты , speech-tools и festvox-ru:

root@localhost:~$ apt-get install festival speech-tools festival-voice festvox-ru

Проверим как оно звучит:

root@localhost:~$ echo "Привет мир" | festival --language russian --tts

Если вместо того, чтобы услышать голос, вы увидели сообщение об ошибке: «ESD: error writing — Bad file descriptor», у вас не стоит PulseAudio, который festival пытается использовать по-умолчанию. Для того, чтобы переключить его на использование alsa и избавится от этой ошибки нужно создать файл ~/.festivalrc с таким содержанием:

(Parameter.set 'Audio_Command "aplay -q -c 1 -t raw -f s16 -r $SR $FILE")
(Parameter.set 'Audio_Method 'Audio_Command)

Теперь перейдем к части с почтой. Gmail представляет удобную atom-ленту для непрочитанных сообщений, используя ее можно написать небольшой скрипт который получает число сообщений аккаунта gmail и информирует об этом с помощью голоса. У меня получился вот такой:

~/bin/check_.sh

#!/bin/bash
 
USER="yourname@gmail.com"
PASS="secret"
 
plural () {
    if (( $1 > 10 ))
    then
        N=$(($1 % 10))
    else
        N=$1
    fi
 
    if (( $N > 10 && $N < 20 ))
    then
        FORM="сообщений"
    else if (( $N > 1 && $N < 5 ))
    then
        FORM="сообщения"
    else if (( $N == 1 ))
    then
        FORM="сообщение"
    else
        FORM="сообщений"
    fi
    fi
    fi
 
    echo $FORM
}
 
NEW=`/usr/bin/curl -u ${USER}:${PASS} --silent "https://mail.google.com/mail/feed/atom" | \
grep -c "<entry>"`
 
if (( $NEW > 0 ))
then
    if (( $NEW == 1 ))
    then
           echo "У вас одно непрочитанное сообщение электронной почты." | /usr/bin/festival \
--language russian --tts
    else
           echo "У вас $NEW непрочитанных `plural $NEW` электронной почты." | /usr/bin/festival \
--language russian --tts
    fi
fi
 
exit 0

Этот скрипт можно добавить в крон, он нем как рыба если непрочитанных сообщений нет, когда же они появятся, он сообщит вам об этом.

Теги: , , , , ,
2 комментария “Учим Linux разговаривать и проверять электронную почту”
  1. Z:

    Спасибо, тебе добрый человек! Открыл глаза. Пришел на этот сайт совсем за другим (ccache + distcc) и случайно наткнулся на эту статью.

  2. Rascal:

    Пожалуйста. Заходите еще :)

  3.  
Оставить комментарий

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">