読者です 読者をやめる 読者になる 読者になる

新着メールの到来を合成音声で通知する (Mew)

emacs

はじめに

Emacs上で音声合成する応用のひとつとして提案するものである.

Emacsのメーラとして昔から有名なものにMew(http://www.mew.org/ja/)がある.
今回はこのMewにおける新着メール到来を音声合成で通知できるようにしてみた,ということである.

Biffについて

さて,Mewには新着メールの到来を一定時間間隔で調べる「Biff」という機能がすでに実装されている.
このBiffの挙動は以下の3つの変数によって制御可能となっている:

  • mew-use-biff ... 値がtならば,新着メール到来時,モードラインに件数が表示される
  • mew-use-biff-bell ... 値がtならば,新着メール到来時にビープ音を鳴らして通知する.
  • mew-biff-interval ... メール到来を調べる時間間隔(単位:分).

今回特に注目するのは「ビープ音を鳴らして通知する」ところであり,
このビープ音を合成音声に差し替えることができれば,所望の機能は容易に実現可能,というわけである.

設定

下記をmewの設定ファイル(~/.mew.elなど)に追記する.

(setq mew-use-biff t)
(setq mew-use-biff-bell t)
(setq mew-biff-interval 5)
(eval-after-load "speech-synth"
  '(progn
     (defun mew-biff-bark (n)
       (if (= n 0)
           (setq mew-biff-string nil)
         (if (and mew-use-biff-bell (eq mew-biff-string nil))
             (speech-synth-execute-synthesis
              (format "メールが%d件到着しました." n)))
         (setq mew-biff-string (format "Mail(%d)" n))))))

また,あらかじめ拙作speech-synth.elをインストールされたい.

mew-biff-barkがBiffの際に実行される関数であり,上記はその関数の中身を再定義している.合成する文章内容は適当である.
あらかじめ録音された定型文を再生するのではなく,引数(=メールの件数)に応じて合成する文章を動的に変更して音声合成しているところが新規性だと思われる.

おわりに

Mewの新着メール到来を合成音声で通知することをやってみた.
幸い,MewにはBiffという機能があったので,実現は容易であった.
こういった類のnotification系の用途で音声合成が活用される道があることは確かであろう.