SRGS文法制約を用いた音声認識でのTagの識別
2016-01-17


少し離したところにあるPC操作を想定したUWPアプリを想定し、音声認識による操作を試みる。身体を動かしながら、声で指示を出すイメージ。

このところ、MSのTweetがCortanaで喧しいので、Cortana連携が頭にあったが、Cortana連携は、システムからのアプリの起動などが用途。アプリ内の操作は、音声認識を組み込むことになる。

限られた数の短い単語を認識すればよいので、認識させたい言葉を記述したSRGS文法ファイルを、音声認識エンジンの制約に読み込ませる方式を採る。

※音声認識の制約についての説明
[URL]

禺画像]

MSの解説やサンプルプログラムの定義ファイルを参考に、作ってみたもの。STARTとSTOPの2つの操作を行うための単語を3、4個列挙。

動かしてみると、認識した単語は取り出せる。しかし、単語や単語群に付加したtag情報が取り出せない。単語はバリエーションが多く、必要に応じ変更したいので、できれば操作はtag情報をもとに行いたい。

禺画像]

デバッガで止めて、SpeechRecognitionResultのConstraintを見てみると、Tagのフィールドが空。なお、認識した言葉は、Textフィールド。

MSのサンプルを確認すると、SpeechRecognitionSematicInterpretationのPropertiesに、連想リストが格納されるようにSRGS文法ファイルを構成し、(キー、値)の形でtag情報を取り込んでいる。最初のXMLファイルで、tag情報が、「out.キー = 値;」の形になっているのはそのため。なお、デバッガでは、生憎と内容を確認できない。

禺画像]

MSのサンプルを参考にして、(キー、値)を取り出す処理。1単語の指示なので、foreachで回す必要はないけど。キーは、"COMMAND"のみ。値は、"START"と"STOP"の2つ。

tag情報自体は、値だけあればいいのだけれど、Propertiesの型は、IReadOnlyDictionaryなので、連想リストの形にしなければいけない様子。

なお、音声認識精度は、機種というかマイクによる。mobile端末は、素性が電話なだけあって、ほぼ確実に認識する。ところがタブレットだと散々。「はじめ」「おわり」は認識するが、「すたーと」「すとっぷ」はからきし。いくつか認識候補を用意しておくことが必要そう。機能確認中、タブレット相手にMSの英語のサンプルを実施し、発音に自信をなくしかける。

[Windowsストアアプリ]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット