« ポケミクに音声認識でしゃべらせる | トップページ | Web MIDI APIでAndroidのChromeだけで発生するタイミング問題で困っています。 »

2015年3月 9日 (月曜日)

音声認識とひらがな変換むずかしい - ポケミク Webアプリ制作

1_20150309_225439

 「ポケミクに音声認識でしゃべらせる」の続き。ポケット・ミクとWeb Speech APIによる音声認識とひらがな変換の話。

 Webアプリはここです。

 ポケット・ミク 音声認識・発音 Kodama 39

 Web Speech APIの音声認識のロジックは元のプラグラムKodamaそのまま。何も考える必要はありませんでした。すばらしい。で、ソースにはルビ変換を入れるならここ、みたいなコメントがあったのでそれに従います。

 オリジナルのKodamaは日本語しか読みません。ヤマハの開発者の方がひらがなへの変換を入れるのはカンタンなはずなのですが、あえてやっていないのでしょう(ユーザーの活動を促す的な意味?)。

 で、漢字-ひらがな変換をなんとかすることにします。やったことのない類の処理なので不安に思いつつもなんとかなるだろうとスタート。

 最初、変換にYahoo!のルビ振りを使ってみました。

 しかし、これが数字を無視する。数字の認識結果は1245といったアラビア数字になるのですが、これをまったく読まない。ということで、ここからが試行錯誤。

 漢数字にすればいいのでは? ということで、これを試します。
 アラビア数字→漢数字変換(桁付き)する JavaScript - drk7jp

 とってもナイス! ばっちり変換できます。しかし。Yahoo!のルビ振りは数字を漢字に変換しても読んでくれない。これはひどい。一とか四とかは読む。というわけで、「十、百、千、万」を「じゅう、ひゃく、せん、まん」に変換。こうすると、「1254」が「一せん二ひゃく五じゅう四」みたいになるので確実に読んでくれます。しかし、千葉県が「せんばけん」になってしまった。これは完全にこちらのミス。どうしましょう。

 さらに「ミュージシャン」を読まない。ひらがなへの変換で「みゅーじしゃん」になるのですが、今度はNSX-1が音引きの「ー」を読まない。そりゃそうか。音を伸ばせばいいだけだから。最初は音引きを削除してしまえばいいかと思ったのですが、自分で操作して演奏するならまだしも、しゃべらせるときはそうもいかず。「みゅうじしゃん」みたいに変換すればいいのだろうなあ、と気づいた時に思い出しました。そういうのを変換するやつがあったなあ。

 で、結局ミク語変換APIを使うことに。

 音引きを解決してくれるのはもちろん、漢数字変換とあわせて、数字も読みます(「478」は「よんななはち」になるので、変換を挟む)。すばらしい!

 あと、Google Chromeの音声認識はすばらしく認識率が高い。びっくり。まあ、Androidの音声認識による検索でその実力は普段から実感してたわけですが、それが個人制作のプログラムでも使えるってことが、すばらしく。

 しかし、言ってもいない卑猥な言葉だと認識されてしまい、「マ××」とか「ク××」とか、伏せ字みたいな結果が返ってきたりすることも。ぜんぜん言ってないんですけどね。そのへんも楽しみながら、プログラミングが進みました。

 あと、昼休みにWebアプリ公開後、夜になって、棒読みがつまらない! と思い、ピッチベンドで抑揚をつけるためのノブを追加。はじめてPolymerとかWeb Componentsとか使いました。いろいろ調べつつ。

 ということで、様子を見ながらいろいろ使わせていただきます。なんかあったらすぐ対処できるようにしつつ。よろしくお願いします。 

 動作ビデオはこれ。


ポケット・ミクに音声認識でしゃべらせる / POCKET MIKU & Speech Recognition

 抑揚つけるノブと、もう一回しゃべらせるボタンをつける前の状態ですが。


|

« ポケミクに音声認識でしゃべらせる | トップページ | Web MIDI APIでAndroidのChromeだけで発生するタイミング問題で困っています。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/35726/61242613

この記事へのトラックバック一覧です: 音声認識とひらがな変換むずかしい - ポケミク Webアプリ制作:

« ポケミクに音声認識でしゃべらせる | トップページ | Web MIDI APIでAndroidのChromeだけで発生するタイミング問題で困っています。 »