アクセスランキング C# Cortanaの拡張アプリ ~好きな言葉を登録して喋らせる 音声認識の精度を向上させる - C#

直列つなぎ。 -とある発達障害者の記録

知識と知識を繋ぐためのblog。 広汎性発達と診断されました。ぜんぜん役に立ってないけど。月収13万円(うち手取り11万)、家賃4万円で生活するひつじ人間。モウマンタイ。

  

C# Cortanaの拡張アプリ ~好きな言葉を登録して喋らせる 音声認識の精度を向上させる

ブログパーツ
 久しぶりのC#ネタです。気が向いたときにこういう技術ネタを齧っています。
こういったプログラムの概要を把握するためには、きちんとした図解の作成が不可欠だと感じる今日この頃。


夏コミ92 http://sheephuman.hatenablog.com/entry/2017/08/11/215126 で手に入れた「窓の苑1」に書かれていた、Cortanaサンプルを実装してみました。いちいち手打ちだったのには些か閉口したけど・・・・


 これを使うと、コルタナで呼び出す音声をあらかじめ登録することが可能です。
今回のupdate(build 16299)でエクスプローラーも開けるようになりましたが、任意のアプリを好きなように呼び出すことも可能になります。

 
 このTipsの元ネタは 
   http://garicchi.com/?p=19218 で見れます。   
   または「お前のCortana、俺のCortanaと交換しようぜ!」が実現できるようになったWindowsアプリ、アシスタントメーカー(旧 俺の秘書育成計画)

 どうも詰めが甘いというか未完成なようで、シャットダウンとかさせることは出来ませんでした。
シャットダウンはともかく、PowerShellを呼び出す事が出来ました(作者に悪かったな)。成功したので、記述例と動画をぶち込んでみます。 
 記述例:-NoExit  echo "Hello Script!!" 
 PowerShellのコマンド規則に準じます。Powerシェルを通じて、いろいろな作業をしてもらうことも可能かと思います。

  記述例



ストアアプリは https://www.microsoft.com/ja-jp/store/p/%e3%82%a2%e3%82%b7%e3%82%b9%e3%82%bf%e3%83%b3%e3%83%88%e3%83%a1%e3%83%bc%e3%82%ab%e3%83%bc/9p803n2vkg8b?rtc=1 (レビューも書いた)
 このアプリについての技術的な理解を深めたい方は、github上にコードが公開されていますので図解を書いてみるのをおススメします。(gitHubのソースコード
 
 アシスタントメーカーヘルプページ 








 初心者がこれを製作するには、「まどの苑1」を見るのが最適だと思われます(非売品)
それだと誰も構築出来なくなるので、1から組み立てる場合のマニュアルも追記します。
  
 Cortana拡張アプリを1から自作する
  

  03:22 音声定義ファイルを作成する
  07:28  フォアグラウンド起動時のプログラム
  09:52 音声定義ファイルを追加する。

使用した楽曲等は動画説明内で。
 https://www.youtube.com/watch?v=3SixQSGcYp4



 初めてUWPに触れてみたんですが、想像以上に簡便な感じです。
 もう従来のWindowsアプリは古いしデザインや動作上の制約が大きいので、UWP(WPF)に切り替えるのが賢明なのでしょう。





 一応、こちらで製作したサンプル品をupしておきます。
CortanaSample.zip
 Visual Studio 2017で開けます。

 注意:ファイル内にexeはありますが、実行は出来ません。
CortanaSample\CortanaSample\bin\x86\DebugCortanaSample_1.0.0.0_x86_Debug.appx で実行出来ることを確認しました。
 


 動画も用意してみる。




 ・・・・セリフは気にしないでください。日頃の鬱憤というヤツです。



 動作を理解するために、まずはこのサンプルコードの概要を記述し、明快に図解を描いてみようと思います。(クリックで拡大表示)  作るのに時間掛かるから、専用のエディタとかあったらほしいなぁ。
 Cortanaサンプル
 図解というより翻訳作業という方が正確ですね。
変数:ServiceDeferralに割り当てられた動作とか記述しましたが、どうもCortana関連ではこういう記述をスタンダードで行うんだと覚えるのが良いみたいです。MSDNで調べて、分からなければそのまんま直訳を当ててみました。



追記:バックグラウンドプロセス側で、if文で受け取ったメッセージを分岐させるなどすれば、このようなウィンドウを表示させずに自然な対話の形に出来ます 


 
 App.xaml.csについてはこちら
  第4回 画面を構成するさまざまなコントロールと画面遷移 (2/6)

 

特徴と問題点
 ・アプリ終了後もCortanaへ登録した音声定義は維持される

 ・CommandPrefix(”コルタナさん”など最初に認識させるコマンド)は一つのファイルに複数記述出来ないみたい。 -音声ファイル(SampleVCD2.xml)をもう一つ追加することで対応可能

 ・VCDファイル内のXMLの書式が僅かでも違うとerrorになる

 ・音声認識が甘いとbing検索してしまう(この機能要らないんだけどなー)→一応、自分の発音の癖をトレーニングで学習させることは可能。
   -http://faq3.dospara.co.jp/faq/show/3304?site_domain=default
 また「Windows 音声認識」を起動しMicrosoftにデータを送信することで、音声認識の精度を向上させることも出来ます(ただし、10分程度とかなり長いので忍耐が必要)
   音声認識  
 

 ・読み上げはデフォルト音声に比べると機械的(棒読み)
 ・UWPアプリはexeやフォルダ内のファイルを実行することが出来ない
    →指定するとエラーが出る。
    →ただし、URL指定してブラウザを開く程度なら可能(実際に試した)。

 ・自分のPC上のCortanaの対話規則を削除出来るのかどうかは未解明。今後の調査予定。


自前で複数のxmlを保存してコマンド登録出来るといいなと思ってます。
 ついでに登録したアプリを呼び出せるとベストですね。
 まあそんな難しくはなさそうです。
関連記事
スポンサーサイト

 C#

 Cortana

     

0   Comments

Leave a comment