Raspberry PiでAquesTalk Piを使ってみる

Raspberry PiでAquesTalk Piを使ってみる

これまでTTSではOpenJTalkを使っていましたが、ちょっと目線を変えてAquesTalk Piを使ってみます。といっても、ライセンスがあるのでお気をつけください。(個人非商用であれば問題いようです)

インストール

以下のURLにからダウンロードしてます。

AquesTalk Pi

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の書き込みを話すことも考えてみたいと思います。