音声認識機能を作るときに参考にしたページ、参考になりそうなページ
自分用のリンクメモ。
Kinect
Kinect for Windowsで機器を作るヒント(4) ―― 日本語の音声認識をやってみる
http://www.kumikomi.net/archives/2012/06/ep08knc4.php
頭の方向取得
http://kinection.jp/post/75
Kinect (キネクト) の総合情報サイト
http://kinection.jp/
iRemocon
iRemocon開発者向け情報
http://i-remocon.com/development/
SRGS
SRGSは音声認識文法仕様 (Speech Recognition Grammar Specification)の略。
SRGSはSAPI 5.3からサポートされているが、DTMC (プッシュ音) と拡張バッカス記法 (ABNF) はサポートされていない。
OpenHRIマニュアル 音声認識文法の作成方法
http://openhri.net/doc/workingwithgrammar-ja.html
OpenHRIはW3C-SRGS形式をサポートしている。試してないけど文法作成用ツールもある。
Galatea Dialog Studio
http://galatea.sourceforge.jp/galatea-doc/main_ja.html
VoiceXML(音声対話)の日本語解説がある。VoiceXMLはSRGSが埋め込めるので参考になりそう。
Speech Recognition Grammar Specification Version 1.0
http://www.w3.org/TR/speech-grammar/
SAPI
.NET Framework 3.0 クラスライブラリ日本語ヘルプ
System.Speech.Recognition 名前空間
http://msdn.microsoft.com/ja-jp/library/ms554855%28v=vs.85%29
Kinectを使った音声認識で家電を操作してみた
以前、普通のマイクとjuliusを使って音声認識させようとしていたけど、テレビや食洗機の騒音があると全く認識できませんでした。juliusを使いこなしていないとか、PC用マイク一つでは限界もあるかと思い、今回はKinectで音声認識をさせてみました。せっかくのKinectなのに、ジェスチャーは一切使ってません。
作成した内容
人間の声で「テレビつけて」と言うとテレビの電源がONになり、「次のチャンネル」と言うとチャンネルが切り替わるといった感じで家電を操作
結果
Kinectに内蔵されたマイク・アレイとノイズ抑制に期待して音声認識システムを作ってみましたが、予想以上に実用的な音声認識システムが作れました。マイク・アレイすごい。マイクロソフトすごい。
- テレビの内容や音量にもよるけど、少々テレビの音が鳴っていても認識できる
- 少しぐらいの騒音であれば、大きめの声で話せば認識される
- 騒音が大きいとさすがに認識できない
構成
Kinectを使った音声認識なのでKinect for Windows SDK 1.5.1、Microsoft Speech Platform SDK Version 11、Kinect Speech Language Packs(日本語)を使用しています。
音声認識の方法は実用性を重視してルールベースです。ルールの内容はSRGS(Speech Recognition Grammar Specification Version 1.0)という形式の文法ファイルに記載。
文法ファイル(KinectSpeechGrammar.xml)の抜粋
<grammar version="1.0" xml:lang="ja-JP" root="rootRule" tag-format="semantics/1.0-literals" xmlns="http://www.w3.org/2001/06/grammar"> <rule id="rootRule"> <one-of> <item> <tag>TV_ON</tag> <one-of> <item> テレビ つけて </item> </one-of> </item> <item> <tag>TV_OFF</tag> <one-of> <item> テレビ けして </item> </one-of> </item> <item> <tag>TV_CH_UP</tag> <one-of> <item> つぎの チャンネル </item> </one-of> </item> </one-of> </rule> </grammar>
外出先から家電をコントロールできるようにしてみた
未来なお部屋(http://d.hatena.ne.jp/rti7743/20120104/1325668680)"に触発されて、自分も家電をコントロールできるソフトを作ってみた。
未来なお部屋では音声認識で家電を制御しているけれども、うまく作れなかったので、今回は仕方なく外出先から家電をコントロールできるようにしてみました。
こんなものを作らなくてもiRemoconには外出先から制御できる仕組みがあるんだけど、なんとなく自分で制御したかったので作成。
帰宅途中にエアコンの電源をONにできるのは、けっこう便利。
作成した内容
PCから家電を制御
外出先からPCでもスマホでも家電を制御
構成
スマホ用画面
jEditで階層付きテキストのアウトラインを表示させてみた
前回、Emacs の outline-mode 形式に対応したjEdit用SideKickパーサーを作成。
Wz Editorやアウトラインプロセッサでよく使われている階層付きテキストに対応するのも簡単そうだったので、階層付きテキスト用SideKickパーサーも作成してみました。
これで、とりえあずjEditで階層付きテキストが読めるようになります。
概要
階層付きテキスト形式で書かれた文章を解析して、 SideKick で表示するためのプラグイン。行の先頭が1~6個のドット(.)で始まった場合、その行を見出しと判断します。
例:
----------------------
. 見出し階層1
.. 見出し階層2
... 見出し階層3
.... 見出し階層4
..... 見出し階層5
...... 見出し階層6
----------------------
インストール方法
プラグインフォルダに DotOutline.jar を置く
Windows版 jEdit 5.xでは C:\Users\
Windows版 jEdit 4.xでは C:\Users\
アンインストール方法
プラグインフォルダに DotOutline.jar を削除
他に必要なプラグイン
SideKick plugin
ErrorList plugin
動作確認環境
jEdit 5.0pre1
ErrorList plugin 2.0
SideKick plugin 1.4
動作方法
・設定する
プラグイン > プラグインオプション でダイアログを表示
SideKick > Parsers を選択
textなど、任意のモードに dot outline に変更
・階層を表示させる
文章を入力して SideKickで表示
SideKickで表示させる方法は、プラグイン > DotOutlineSideKick > SideKick 等。
・階層構造で折り畳む
ユーティリティ > バッファオプション でダイアログ表示
フォールディングモード を sidekick にする