Emacs Part 39
■ このスレッドは過去ログ倉庫に格納されています
0448名無しさん@お腹いっぱい。
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 "http://translate.google.com/translate_tts?sl=en&tl=%s&q=%s"
(or lang speech-default-language) (url-hexify-string text))
'speech-callback)))
■ このスレッドは過去ログ倉庫に格納されています