- 448 名前:名無しさん@お腹いっぱい。 mailto:sage [2012/01/03(火) 00:37:02.55 ]
- 自分なりに改造してみた。
取り敢えず非同期に & >>447 の機能をいれた。 > 文字列から言語判別出来るようにすればよさそうだな これはできてない。 あと、エラーになったときにバッファやファイルが削除されないかも。 (defun speech-callback (status &rest cbargs) (unwind-protect (progn (set-buffer-multibyte nil) (goto-char (point-min)) (lexical-let ((temp-file (make-temp-file "speech-" nil ".mp3"))) (let ((coding-system-for-read 'binary) (coding-system-for-write 'binary) (cmdlist (split-string (format speech-sound-player temp-file)))) (write-region (search-forward-regexp "\n\n") (point-max) temp-file nil 'silent) (set-process-sentinel (apply 'start-process (car cmdlist) nil cmdlist) (lambda (process event) (delete-file temp-file)))))) (kill-buffer))) (defun speech-message (text &optional lang) "指定された文章を音声再生する。" (interactive (list (read-string "Message: " (thing-at-point 'word)))) (let ((coding-system-for-read 'binary) (coding-system-for-write 'binary) (url-privacy-level 'paranoid) (url-request-extra-headers '(("User-Agent" . "Emacs/URI Safari/0")))) (url-retrieve (format "translate.google.com/translate_tts?sl=en&tl=%s&q=%s" (or lang speech-default-language) (url-hexify-string text)) 'speech-callback)))
|

|