11月 042014
<< UX基金 || Web+DB Press vol.83でHueについて書いた >>
そういえばtesselに日本語を喋らせるをnpmにしたのだった
書くの忘れてた
https://www.npmjs.org/package/audio-vs1053b-textspeech
インストール
% npm install audio-vs1053b-textspeech
使う
まずaudioモジュールにスピーカーを接続しておく。こんな感じでaudioモジュールをtextspeechモジュールに食わせてセットアップし、
var audio = require('audio-vs1053b').use(tessel.port['A']);
var textspeech = require('audio-vs1053b-textspeech').use(audio);
audio.on('ready', function(){
audio.setVolume(20, function(err){ // 音量調整
console.log('audio setup');
// この後に喋ったりさせる
});
});
簡単に喋らせれる。日本語でおk
textspeech.speech('こんにちは'); // japanese
textspeech.speech('hello world', {tl: 'en'}); // english
なお初めてしゃべる言葉はgoogle翻訳にmp3を取りに行くので10秒ぐらいかかる。
2回目以降はオンメモリのキャッシュに入っているので、すぐ発声できる。
でもaudioモジュールの通信がUARTなので、同時に他のセンサ系モジュール使ったりしてるとそっちのUARTもバリバリ通信おこなわれて、途切れ途切れになってちゃんと喋れなくなる。
tesselはaudioとかカメラとか大きなマルチメディアデータやりとりする系のモジュールがウリっぽい所あるのに、それ使ってると他のモジュールが動かなくなるのはなんかつらい。そもそもtesselのCPUであるARMから拡張ボード用に4つUART出してるけど、たぶん全部ソフトウェアUARTだから、ファームウェアの実装を効率化してもどうにかなる気がしない。どうするんだろ。
あとキャッシュのサイズも指定できる
textspeech.setCacheSize(5); // default is 3
前に書いたとおり(おそらく)streamのバグがある状態の上で妥協する感じで実装しているので、そのうち仕様変わるかもしれないので最新情報はnpmjs.orgのほうのドキュメント見てください