Emacsにゆっくりボイスで喋らせる(N番煎じ)

はじめに

表題の通り,Emacsにゆっくりボイスで喋らせるという,何番煎じか分からないネタではあるが紹介してみようと思う.

動作確認済の計算機環境

Emacs24.2, gnupack 11.00 on Windows 7

必要なパッケージ

Softalkをダウンロードし,環境に応じた適切な場所に置く.
また,kiwanami氏のdeferred.elをあらかじめ用意しておく.
非同期処理のためである.

設定

下記を設定ファイルに追記する.

(require 'deferred)
(defvar softalk-command "your-path-to-install/SofTalk.exe"))
(defvar softalk-option "/X:1 /V:100 /W:")

(defun softalk-text (text)
  (deferred:$
    (deferred:process-shell
      (concat softalk-command " " softalk-option " "
              (replace-regexp-in-string "\n" "" text)))))

(defun softalk-region (start end)
  (interactive "r")
  (softalk-text
   (buffer-substring-no-properties start end)))

上記SofTalk.exeへのパスは適切に設定されたい.

使い方

リージョンを囲んでM-x softalk-regionとすればよい.
下記参考記事でも同様の内容が紹介されているが,差分としてはdeferredを用いて非同期処理をしていることと,
リージョン内の改行文字を削除するようにして複数行に渡るテキストも簡単に入力できるようにしたことである.
拙作 speech-synth.elで使われているモジュールと組み合わせれば,
もう少し気の利いたことはできるかもしれない.

また,これまでに筆者が書いた音声合成で通知する類の記事で,speech-synth-execute-synthesisの部分をsoftalk-textに変更すれば,ゆっくりボイスで新着メールや新着ツイートを通知することができるだろう.

おわりに

今回はゆっくりボイスで喋らせることを可能にした.
手軽なので試してみるのも一興だろう.