Clojure で合成音声を使ってしゃべらせてみる
Java で合成音声をやるには、freeTTS なるものが使えるらしいので、Clojure でやってみた。
とりあえず、零人間でプロジェクトをつくる
lein new sapi
cd sapi
lein deps
スピーチエンジン(?)をゲット
http://sourceforge.net/projects/freetts/files/
ここから、*bin.zip を落として、どこかに展開する。
lib/ 内の jsapi.(sh|exe) を実行して、jsapi.jar を生成。
その後、lib/*.jar と mbrola/*.jar をプロジェクトディレクトリ内の lib/ にコピー
しゃべらせるコードは簡単
src/sapi/core.clj
(ns sapi.core (:import (com.sun.speech.freetts Voice VoiceManager Gender)) (:gen-class)) (System/setProperty "freetts.voices" "com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory") (defn say [text] (let [vm (VoiceManager/getInstance) voice (.getVoice vm "kevin16")] (doto voice (.allocate) (.setVolume 100) (.setPitch (* (.getPitch voice) 1.9)) ; 声を高く (.setRate (/ (.getRate voice) 0.7)) ; ゆっくり (.speak text) .deallocate))) ; say 呼ぶだけ - 「わじまさんは、さいこうです」 (say "wah jee mah san were, sai koh death")