たわいないアプリだけど、小さなRaspberry Piを使って、遠隔操作で音声出力できるのはなかなか楽しい。
デスクトップからRaspberry PiにSSH接続し、tmux + CCL + Emacs(Slime)で開発したが、この程度なら、特にレスポンスが遅いことはなく、ストレスはなかった。
やるなぁ。Raspberry Pi。
ソースはこちらから(https://github.com/takeisa/cl-webapp-talk.git)
動作に必要なLinuxパッケージ
- open-jtalk
- open-jtalk-mecab-naist-jdic
- hts-voice-nitech-jp-atr503-m001
実行方法
- Clozure CL(CCL)で、(load "talk.lisp")する。
- ブラウザで http://〜:4242/talk を開く。
- メッセージを入力してsubmitする。
- Raspberry Piがしゃべる!
使用したCommon Lispライブラリ
全てQuicklispでロードできる。- HUNCHENTOOT
- Webサーバ。
- cl-who
- HTMLの生成に使用。
- trivial-shell
- シェルコマンドの実行に使用。
OSに依存せずにシェルコマンドを実行できる。 - talk.lisp
- HUNCHENTOOTを使ったWebアプリのコード
- talk.sh
- 音声出力したいメッセージを書いたテキストファイルを読み込み、Open JTalkで音声合成後、音声出力するシェルコマンド
ファイル
動作説明
やっていることは単純。- ブラウザからメッセージを受けとる。
- メッセージが空だったら、音声出力しないで、入力画面だけ表示する。
- メッセージがある場合は、音声出力する。
- 音声出力したいメッセージを message.txt へ出力する。
- talk.shを実行する。
- talk.shはmessage.txtよりメッセージを読み込み、Open JTalkで音声合成する。
- 音声ファイル /tmp/message.wav を出力する。
- それを aplay で再生する。再生後は音声ファイルを消去する。
0 件のコメント:
コメントを投稿