先日からいろいろやっている「ポケミクに音声認識でしゃべらせる」が、AndroidのChromeで動かないかな? といろいろやっているのですが、手詰まり。
音声認識もできてるし、発音データはSysExで送れているのですが、発音がうまくいかない。数十msごとに送られるはずのNote Onがまとまって送られているのか、20文字がたった0.1秒で発音されてるという感じ。もちろん、何を言っているかはわからない。タイミングが変。
このへんのロジックはオリジナルのKodamaそのまま。
問題解決へのヒント的なものはここで使われているライブラリ「WebMIDIAPI.js」にありそう。
(追記:この推測は外れでした。次のエントリに詳細あり)
このライブラリを使っている別のWebアプリも試してみる。
Wrapper for Web MIDI API
アウトプットデバイスを選択すると、鍵盤(Flatkey)とか「Fire MIDI」というボタンとかが出てくる。鍵盤で音が鳴る。「Fire MIDI」では「ドレミファソラシド」と順番にノートが発音される。これがWindowsやMac、iOSでの動作。
しかし、AndroidのChromeだと、一瞬で発音が終わる。「ドレミファソラシド」になってるかどうかすらわからない。「プツッ」っていう感じ。
これもタイミングがおかしい。
ソースを見ても、わからず。解決する知識もスキルもなく(既存のものに好みの機能を足したり、いろいろ組み合わせるのが関の山)。ライブラリの問題なのか、Chromeの問題なのか。
で、ライブラリに問題があったとしても、WebMIDIAPI.jsを使わずにやるってことは、かなり面倒になりそうで。
「AndrodのChromeはタイマー関連がおかしいのかなあ」と思い、いくつかチェックするもsetTimeoutとかsetIntervalとははちゃんと動いてるっぽい。
window.performance.now のあたりなのかなあ?
それとも。ウチの端末がおかしいだけなのか?
で。
Androidのデバッグを有効にして、WindowsのADBで受けるまでの設定はできたのだけど、そこから先をやる時間がとれず。エミュレーター使ってやったほうがいいいのか? それでUSBデバイス(ここではポケミク)つないで、ってことが可能なのか? 考えるだけでいろいろ面倒。
ということで、現状のメモでした。
コメント