Top / VstoneMagicを使ってみる / プログラミング / 音声認識の中断を使ってみよう

音声認識による中断機能を使ってみよう

音声認識による中断機能



Sota ver1.2.14以降のバージョンでは、音声認識の中断機能を利用できます。この機能は、音声認識中に指定した文字列を検出したら、例外を発生させてプログラムそのものを終了します。

主な用途は、途中でプログラムの実行そのものをキャンセル(中断)するためのものですが、後述する「音声認識の中断をキャッチ」ブロックを利用することで、プログラムそのものを終了せずに、例外をキャッチして任意の処理を実行させることが可能です。

それでは、この機能を利用した簡単なプログラムを作ってみましょう。

まずは、以下のように「顔認識をして、顔が見つかったら音声認識を始める」プログラムを作成しましょう。音声認識ブロックの分岐先には、それぞれ発話ブロックを接続し、上の分岐(「こんにちは」と認識)の場合は「こんにちは」、下側の分岐(それ以外)の場合は「何ですか?」としゃべるようにしましょう。

image2_079.png



続いて、ツールボックスより「音声認識中断ワードの追加」をプログラムへドラッグ&ドロップし、メソッドブロックの最初に接続しましょう。

image2_080.png


「音声認識中断ワードの追加」ブロックは、wordの項目に認識したら中断するワードを一つ設定します。wordにはデフォルトで「止めて」のワードが設定されています。ブロックを複数連続で実行すると、複数の中断ワードを登録できます。


それでは、一度プログラムを実行してみましょう。音声認識中に「止めて」と話しかけると、プログラムをすぐに終了します。中断機能が動作するのを確認したら、音声認識の分岐や中断ワードを増やして実行してみましょう。

image2_081.png



なお、一度設定した中断ワードはプログラム全体で有効であり、メソッドを跨ぐなどしても、音声認識が行われるすべての場所で設定が有効です。そのため、原則としてメインメソッドの最初に固めて設定しましょう。プログラムの各所で追加すると、意図しない場所でプログラムの中断が行われたり、逆に意図した中断が行われない可能性があります。





音声認識による中断をキャッチ


「音声認識による中断をキャッチ」を使用すると、中断ワードを認識してもプログラムを実行せず、任意の処理を実行させることができます。それでは、作成したプログラムに「音声認識による中断をキャッチ」ブロックを追加しましょう。ブロックには二つの分岐があるので、上側の分岐には音声認識ブロックを接続してください。下側の分岐には発話ブロックをつないで「中断したよ」としゃべらせましょう。

image2_082.png



「音声認識による中断をキャッチ」ブロックの分岐は、これまでに使用したブロックの分岐と若干異なり、プログラム実行時には必ず上側の分岐が実行されます。そして、上側の分岐を実行中に中断ワードが認識された場合、そこで処理が中断され、下側の分岐の処理が実行されます。

image2_083.png



それでは、プログラムを実行して、先ほどと同じく中断ワードを認識させてみましょう。今度は中断ワードを認識してもプログラムを終了せず、下側の分岐につないだ「中断したよ」の発話が行われます。

image2_084.png


「音声認識による中断をキャッチ」ブロックが有効なのは、あくまでブロックに囲まれた範囲です。ブロックの外に存在する音声認識で中断ワードが認識された場合は、プログラムを終了します。


音声認識による中断機能は、途中でプログラムを強制的にキャンセルできるような強力な権限を持ちます。便利な機能ではありますが、通常のプログラムの流れを無視するような挙動になるため、利用方法を間違えるとエラーの原因となります。一つのプログラムでは頻繁に機能を利用せず、メインメソッドに近い場所に1~2箇所程度使用するようにしましょう。




以上で、プログラミングに関するチュートリアルは終了ですが、チュートリアル自体はまだ続きます。引き続き「エラーメッセージ例と対処方法」の項目よりご参照ください。



目次  次のページへ>>