Raspberry PiでAquesTalk Piを使ってみる
これまでTTSではOpenJTalk
を使っていましたが、ちょっと目線を変えてAquesTalk Pi
を使ってみます。といっても、ライセンスがあるのでお気をつけください。(個人非商用であれば問題いようです)
インストール
以下のURLにからダウンロードしてます。
http://www.a-quest.com/products/aquestalkpi.html
自分はページからのダウンロードがうまく行かなかったので下記のようにダウンロードしました。
$ wget http://www.a-quest.com/download/package/aquestalkpi-20130827.tar.gz
あとは取得したtar.gzファイルを任意の場所に展開します。
$ zcat aquestalkpi-20130827.tar.gz |tar xv aquestalkpi/ aquestalkpi/test.txt aquestalkpi/AquesTalkPi aquestalkpi/aq_dic/ aquestalkpi/aq_dic/readme.txt aquestalkpi/aq_dic/aq_user.dic aquestalkpi/aq_dic/aqdic.bin
実行
実行に関しては難しくありません。コマンドライン上で引数に読み上げたいテキストで与え、パイプでaplay
に結果を渡すだけです。AquesTalkPi
は標準出力にwav
ファイルのデータを出力しますので、それをaplay
が入力として再生します。
$ ./AquesTalkPi "漢字も読めます。" | aplay 再生中 WAVE 'stdin' : Signed 16 bit Little Endian, レート 8000 Hz, モノラル
終わりに
一応、これで話すことはできました。というかインストールしかしていませんが…。
基本的にshでその他言語から呼び出すという部分に関してはOpenJTalkとほぼ変わりません。しかし、ほとんど設定を行わなくてもよいこと、非常に軽量であることを考えると割と良い選択肢なのかもしれません。(あくまでも個人利用ですが)
それぞれの言語で呼び出す際は
pythonであれば
#!/usr/bin/env python # -*- coding: utf-8 -*- import os … os.system('./AquesTalkPi ' + 'ほげほげ' + '| aplay')
Node.jsであれば
const execSync = require('child_process').execSync; … var result = execSync('./AquesTalkPi ' + 'ほげほげ' + '| aplay').toString();
こんな感じになると思います。
このあと、GPIOに接続しているボタンを押したらIPアドレスを読み上げるなどができるものなんかはやってみたいかなと思います。ヘッドレス環境ではこのようなことができる方がとても便利かなと思います。(固定IPやBonjour
を使っていると不要ではあるのですが。)
あと、TwitterやSlackの書き込みを話すことも考えてみたいと思います。