読者です 読者をやめる 読者になる 読者になる

ミクさんでSiri対抗アプリを作ってみた

ミクさんでSiri対抗アプリを作ってみました。

ようは音声ランチャー + 人工無脳ですが、デモ動画を作ったので、どんな感じかは下記参照。

見ての通り、まだ本当に最低限できてない状態です。一応、ベースは作ったので後は細かく拡張していく感じかな?

 

大きなTODOとしては

  • 機能拡張(スケジュール予約とかsiriが出来てることをまずは対応)
  • テキストパーサー部分のDSL化
  • しゃべらせる(ミクさんボイスに拘らなければこの辺使うと出来そう)
  • iOS, Windows Phone, PC対応
  • プラグイン/スキン対応
  • アプリ間の連携方法の構築(すべての機能を自前アプリで作るのもナンセンスだし)
  • パーソナライズ(名前など個人情報の紐付)

 

あたり。特にパーソナライズは強力なのでぜひやりたい。それこそ出来るかは置いといて、アニメや漫画みたいに生活のサポートをしてもらえるレベルで。キャナルはハイスペックマシンで動いてるから無理だけど、30とかはどう考えても今のスマホより低スペックなマシンで動いてたんだから、作れるはず!(マテ

 

以下、ちょっと技術的な話。コードはこちら。https://github.com/koduki/cui-miku

今回のはPhoneGap(Cordova)っていうHTML5/CSS3とJSでクロスプラットフォームなスマホアプリを作るフレームワークを利用して開発している。 

 

単一環境での生産性はネイティブ環境の方が楽だけど、将来的にクロスプラットフォームにする気だったので、UIがシンプルなこともあって、PhoneGapを採用。開発中はブラウザで検証できるから動作確認が簡単だし。PhoneGapのJSをUnitTestするためのラッパーとかも書いたので、そのうち使い方を多分書く。

 

音声認識に関しては、Androidに標準で乗ってるGoogleのRecognizerIntentを使用。これが超優秀。認識精度もさることながら、漢字変換済みのテキストとして値を受け取るので後の解析が超楽。今回の用途みたいな短文なら、かなりの精度でちゃんと動きます。すばらです。

 

RecognizerIntentから受け取ったテキストは解析してコマンドとマッピングするために形態素解析にかけてます。JSネイティブで出来れば後々楽だから探したんだけど、いいのが見つからなかったので、こちらで公開されているsanmokuという軽量形態素解析エンジンを利用。これを拡張プラグインとしてJSから呼んで使ってます。とっても簡単に使えて重宝しています。すばらです。

 

なお、イラストは碧茶さんがピアプロで公開されている奴を使わせてもらってます。立ち絵がフルセットであるのはとても助かります><

 

音声認識とか形態素解析とか重い部分は知の巨人に 乗りまくっとるので、思ったほど大変じゃなかったかな。パーサーのDSLが出来れば、開発がかなり改善すると思うので、当面はそちらに注力するつもり。