Microsoft音声認識とVISAを使った計測器のハンズフリー制御アプリ
2015/10/25 7M4MON
はじめに
オシロスコープを使っていて、トリガを止めたいのに両手がプローブでふさがっている時、ありますよね。
ボタンを3つ押しながら、手の届かないところにある電源のアウトプットをONしたい時、ありますよね。
部品を手で押さえながら実験している時、スペアナにシングルスイープをかけたいこと、ありますよね。
そんなとき、音声で測定器を制御できたら便利ですよね。
まぁ、皆さんそう考えているようで、こんな特許が出されていますし、最近のオシロInfiniiVision 6000 Xシリーズでは
音声認識エンジン搭載で20個のコマンド(14か国語)をサポートしているらしいですし、こんなソフトや、こんなソフトもあるみたいです。
とまぁ、オシロは割りと世の中にソフトが有るらしいですが、VISA(※)を使ってもっと汎用性のあるものを作ってみました。
(※)VISA Virtual Instrument Software Architecture(仮想計測器ソフトウェアアーキテクチャ)の略で、GPIB、VXI、PXI、シリアル(RS232/485)、
イーサネット、USBおよび/もしくはIEEE 1394をインタフェースとした計測器システムの制御をするための標準規格。
システム要求
- Windows Vista以降
- .netFramework4
- visa32.dll(NI MAXや Agilent/Keysight IO Libraryなどで導入)
- マイク
使い方
マイクに向かって Voice Command に入力された文字列を喋ると、VISA Addressに VISA Command Stringが発行されます。
Voice Command が空欄だった場合は、数字を喋るとコマンドが発行されます。ただし、一番下は「0」です。
特殊な文字列として、%NOW%は現在の時刻、%TODAY%は今日の日付、%LF%はLine Feed、%CR%はCarriage Returnに置換されます。
ということで、%LF%でコマンドを繋いで複数のコマンドを発行可能です。
Voice Commandを変更した場合は、TABキーを押して音声認識の辞書を再構築してください。
シリアルポートのボーレートなんかを変えたい場合は、MAXやIO Library側で変えてください。
音声認識エンジンはVista以降のWindowsに搭載されているSystem.Speechを使用しています。使い方はここを参考にしました。
音声認識エンジンの使用言語は、現在の使用ロケールで認識されます。変更したい場合はここなどを参考に、言語パックを追加でインストールしてください。
Windows Vista Ultimate 32bit + NI-MAX 14.5 および Windows 7 Professional 32bit + Agilent/Keysight IO Library 16.3/17.1 で動作確認しました。
ダウンロード
その他
トランジスタ技術誌 2016年4月号に掲載されました。
言語パックの問題
音声認識エンジンの辞書は、使用中の言語環境に依存します。
他の言語にしたい場合は、追加で言語パックをインストールする必要がありますが、結構面倒です。
最初は起動時に使用言語を判定して英語と日本語で音声認識エンジンの辞書を切り替えていたのですが、
辞書の単語を半角英数で指定していれば、日本語環境でも英単語を認識するみたいです!!
さらに、数字はどっちでもいけるみたいで、例えば8は「はち」でも「エイト」でも認識してくれます!やるじゃん!!
TDS2000のリモート制御メモ
SAVE:IMAGEのファイル名は8文字まで。
既に同じファイル名がある場合は上書き保存しない。っていうか何もしない。
HARDCOPYコマンドは、本体のPRINTボタンを画像保存にしていてもプリンタを探しに行ってしまう。
Androidの音声認識+Bluetooth SPPで制御も考えたのですが…
- 音声データをgoogleのサーバーに問い合わせるため、インターネット接続が必要&タイムラグがある。
- SPP->シリアルポート経由でGPIB/LXI測定器と接続するのは、ちと面倒。
- 作業場でスマホをいじっていると遊んでいるように見られてしまう。
- Androidの開発環境をまた入れるのは面倒だし、やっぱりVisualStudioが好き。
と言った理由で、VB.netを使うことにしました。