てんちょーの技術日誌

自分がつまづいたこととかメモ

コルタナの音声認識の結果をクリップボードに貼り付けるスクリプトを書いてみた

はじめに

キーボードを封印して音声認識だけで生きています

この記事も音声認識だけで書いています

コルタナの音声認識の結果がかなり良いのでそれを利用したいと思いパワーシェルのスクリプトを書いてみました( なおキーボード封印中

今回書いたもの

スクリプト更新しました( 2017年1月4日 簡単なDebug出来るようにしました

追記 2017/01/04

以下のスクリプトをパワーシェルに貼り付ける分には動くっぽいのですが、.ps1にするとアウトっぽいので取り急ぎdropboxのリンクを貼っておきます

時間がある時に修正します…

www.dropbox.com

while(1)
{
  $psArray=[System.Diagnostics.Process]::GetProcesses()
  $str=""
  foreach ($ps in $psArray){
    if($ps.MainWindowTitle -like "*Microsoft Edge"){
      #[System.Console]::WriteLine("Microsoft Edgeを発見 Handle: " + $ps.Handles + " MainWindowTitle: " + $ps.MainWindowTitle)
      Add-Type -AssemblyName system.Windows.Forms
      $cp=[Windows.Forms.Clipboard]
      $ps.MainWindowTitle.foreach{
        if($_ -match "(.*)\s[-]\sBing"){
          #[System.Console]::WriteLine("Bing検索してるMicrosoft Edgeを発見")
          $str=$matches[1]
          if($str -match "コピー終了"){
            [System.Console]::WriteLine("終了します")
            $ps.CloseMainWindow()
            $ps.Close()
            exit
          }
          $cp::SetText($str)
          [System.Console]::WriteLine("$str")
          $ps.CloseMainWindow()
          $ps.WaitForExit(3000)
          $ps.Close()
          break
        }
      }
    }
  }
}

これをパワーシェルのスクリプトで起動します

コルタナは反応に困ったらマイクロソフトエッジのbing検索を使うので、

マイクロソフトエッジのプロセスを監視してそのメインウィンドウのタイトルから正規表現で認識結果を切り取ります

追記ここから

スクリプトを更新しました

これでコピー終了というとスクリプトを停止できます

ダブルクリックで実行できるファイルを作る

このスクリプトをメモ帳などに貼り付けて、.ps1形式で保存した後に、ショートカットを作成します

そのショートカットのプロパティからリンク先の先頭に以下のように追加します

powershell -NoProfile -ExecutionPolicy Unrestricted "ファイル名"

これで適用するとpowershellの部分が勝手にpowershellがある場所のパスに変わりますがおっけーです

実質、powershell~Unrestricted までコピーして、ファイル名の前に貼っ付ければ終わりです

そうするとダブルクリックで起動できます

後はpowerShellが起動するので、コルタナに話しかけてbing検索する際にMicrosoft Edgeが一瞬起動しますが、 勝手に閉じて、クリップボードにその結果が貼り付けられてます。

ログが一応powerShellの方に表示されます。

追記ここまで

まとめ

パワーシェルのスクリプト初めて書きました

人に読ませる文書にするにはちょっと大変だけど音声認識でとりあえずここまできました

これでとりあえず快適にツイッターができます