Top / 音声合成
Emacs/Meadowで音声合成音の鳴るエディタことEmacs http://pokutuna.hatenablog.com/entry/2012/10/09/154109 上記に触発され、Macじゃなく、Windowsでできないかと調べる。 WindowsでもsayコマンドをAdd Star http://d.hatena.ne.jp/nacookan/20081221/ 上記サイトを見つけ、これでできると音のなるエディタをWindowsでやろうとしたが音はならず。 面倒なので諦めて下記を作る。 単語の発音をネットでよく調べることがあったのでそれなりに使えます。 say.exeは、添付しています(Windows7でしか確認していません)。
say.exe
;;---------------------------------------------------------------------- ;; Windowsの音声合成で指定範囲の文字列や単語を発音する(R) ;; say.exeをpathの通ったところにおく ;;---------------------------------------------------------------------- ;; カーソル位置の単語を発音(Lisp mode以外ではマークからカーソルまでを発音も可能) (require 'grep) (defun say-play() "Type '\\[say-play]': speak the word at the cursor position." (interactive) (let ((rword (buffer-substring-no-properties (region-beginning) (region-end))) ;; リージョン指定の場合 (fword (funcall (or find-tag-default-function (get major-mode 'find-tag-default-function) 'grep-tag-default))) ;; カーソル位置のワード指定 (start nil)) (if (null fword) (setq fword rword)) ;; カーソル位置に何も無ければリージョン指定 ; (call-process "Wscript.exe" nil 0 nil "say.js" fword) (call-process "say" nil 0 nil fword) (message "say play %s" fword))) ;; マークからカーソルまでを発音 ;; M-x say-region (defun say-region () "say talk a specified range." (interactive (progn (let (target) (setq target (buffer-substring-no-properties (region-beginning) (region-end))) (call-process "say" nil 0 nil target))))) |