音声で Visual Studio を操作する
Qiita Visual Studio / Visual Studio Code Advent Calendar 2015 17日目と、Qiita プロ生ちゃん Advent Calendar 2015 14日目(穴埋め)の投稿です。
Visual Studio といえば
Visual Studio といえば、プロ生ちゃん。
そんなプロ生ちゃんが、「アキバで見かけた萌えキャラコンテスト」にエントリーされています。「暮井 慧(プロ生ちゃん)」への投票お願いします(12/18 20時まで)。プレゼントも当たります。
音声で Visual Studio 操作
というわけで、音声でプロ生ちゃんに Visual Studio の操作を手伝ってもらいます。
エディタの背景は大人気「プロ生ちゃん IDE」。
流行りの Cortana さんではなく、Windows Speech API です。
Voice Commands
利用したのは、Microsoft 社員の方が作っている VS 拡張の「Voice Commands」。
使い方は、Alt+V の後にコマンドを音声入力します。たくさんのコマンド に対応していますが、英語です。Build と何度言っても認識してくれません。
毎回、Alt+V を入力するのが少しネックです。
日本語コマンド対応
今回、この Voice Commands を少しだけ修正して使いました。GitHub にソースコードが公開されています。ライセンスは、MS-RL です。
日本語の音声認識
プロ生ちゃん版(日本語版)に対応するための、コードの修正箇所は次の通りです。
VoiceExtensionPackage.cs 内の SpeechRecognitionEngine のコンストラクタ引数を指定して日本語を音声認識するようにします。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
_rec = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("ja-JP")); |
日本語のコマンド登録
commands.txt を修正して日本語のコマンドを入力します。「|」の左側が音声での入力を受け付ける言葉です。commands.txt をパースしているのは、CommandTable.cs の CommandTable クラスです。
ビルドして|ClassViewContextMenus.ClassViewProject.Build
実行して|Debug.Start
整形して|Edit.FormatDocument
また、コード中にある “yes"・"no"・"what can I say" の直接記述されているコマンドを日本語に変えます。特に CommandTable クラス部分は変えないと動作しません。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Commands = new Dictionary<string, Command>() { { "はい", null }, { "いいえ", null }, { "教えて", null } }; |
yes・no は聞き返すためですが、試してみた感じではその処理は呼ばれませんでした。
プロ生ちゃんボイス
プロ生ちゃんボイス は、kei_voice_201308.zip.zip から kei_voice_023_1 と kei_voice_023_3 。適当に音声再生のコードを入れましょう。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var snd = new SoundPlayer(Properties.Resources.kei_voice_023_1); | |
snd.Play(); |
以上です。修正したコードは、(全然作りこんでないので)配布していません。