Windowsの音声認識を使う時に
「テキストの文字で自動的に実行」の設定の事についてです。
この設定は、一応は「Windowsの音声認識」で使う事を目的に作ったものです。
実際には「Windowsの音声認識」で実用的に使う事はかなり難しいのであまり意味はないものです。
実用的なものにはならない事を承知で説明を見てほしいところですが、このページでは「テキストの文字で自動的に実行」の設定を「Windowsの音声認識」を使った場合 についてのこうしたらいいのではないかという設定について記入していこうと思います。
「音声認識」で使う場合
テキストが閉じないようにする
「Windowsの音声認識」では、ウインドウタイトルの一部の文字を指定して、 「〇〇に切り替え」の言葉で、指定のウインドウをアクティブにするようです。
「テキスト1に切り替え」 の言葉で テキスト1 をアクティブにする事が一応ですが可能でした。
しかしこの場合、既にウインドウが閉じていた場合は効果がありません。
ですので、
「Windowsの音声認識」を使う場合、
テキスト
が閉じる動作をする場合、閉じるのではなく最小化をする設定にしておく事を勧めます。
設定 のウインドウの、 設定3 のタブの中にある、
の項目をチェック状態にしておくと、普段自動的に テキスト が閉じる動作をする場合、最小化をするようになります。
テキストの名前を変える
「テキスト1に切り替え」 ではなく、ある程度好きな名前で呼べるようにする設定です。
userフォルダに加えない設定 のウインドウの 設定2 のタブの中に、 「テキスト」の呼び方を変える の項目があります。
これの入力欄に文字を記入して 一行テキスト のウインドウタイトルの 「テキスト」の文字の部分が指定した文字に変わります。
を押して再起動すると、ですので、「音声認識」で テキスト をアクティブにする場合、 「〇〇1に切り替え」という感じで〇〇の部分を好きに指定できるようになるのではないかと思います。
ちなみに
一行テキスト
のウインドウタイトルのみを変更します。
後、
メインのメニュー
にある文字も
他の場所で記入されている
「テキスト」の文字までは変更されません。
入力中の文字を最後のみ消す
間違っている文字を消す方法についてです。
「音声認識」では、 それを取り消す の発音でひとつ前に戻せるようです。
「テキストの文字で自動的に実行」の設定でも、 消す の文字で テキスト にある文字を消す事ができます。
この動作は単に &cleanText を使っている事と同です。
ただ、これでは テキスト の入力欄の文字を全て消す事になります。
そこで最後の引数だけを消す アイテム を紹介します。
以下の 2つのファイルを cleanLast_ とでも名付けたフォルダの中にいれ、そして fromFileName の適当な item フォルダ内に配置してください。
global clea_text
global clea_count
clea_text := F_getTextEditExecutor(False)
clea_text := RTrim( clea_text )
IfNotInString, clea_text, %A_Space%
{
clea_text =
&outArgsToTextEditExecutorTextOut %clea_text%
&sendEndToTextEditExecutor
return
}
StringGetPos, clea_count, clea_text, %A_Space%, R1
clea_count++
StringLeft, clea_text, clea_text, %clea_count%
&outArgsToTextEditExecutorTextOut %clea_text%
&sendEndToTextEditExecutor
%--
一つめの 1_cleanLast は、起動時に実行させたい アイテム なので、 startup のフォルダ内に 1_cleanLast のフォルダなどを作ってください。
これで、 cleanLast の アイテム 使えば テキストに記入してある最後の引数の文字のみを削除していく事ができます。
「テキストの文字で自動的に実行」
で使うなら、キーになる文字を
違う
で設定するなら、
違う
と発音する事で右端の文字のみを消す事ができると思います。
cleanLast は、今回の様な「音声認識」で使う場合の時以外でも使っていけそうなものなので、 テキスト上のキーに登録して使ってもよいと思います。
&cleanText が Alt+C なので、 Shift+Alt+C あたりでしょうか?
cleanLast は規定のコマンドとして作ってもよかったのですが、 このように TRR のスクリプトでも作成できるため、ここで紹介しておくだけでもよいと思っています。
要望があったら、規定のコマンドにするかもしれませんが現時点ではこれで十分だと思っています。
「テキストの文字で自動的に実行」の設定のタブ
テキストの文字で自動的に実行の設定の中にも 設定 のタブが最後にあります。
その中の、
半角の数字に変換して再検証する
この項目にチェックをしておくと、 テキスト に入力された右端の 1文字が 全角の数字なら、半角の数字に変換して 「最後の文字で自動的に実行」の「キーになる文字に」合うかどうかを再検証します。
「音声認識」の場合、数字を言うと半角の数字になるみたいです。
ですが、全角の数字になるかもしれない場合は設定しておいた方がよいのではないでしょうか。
半角の数字に変換してみるのは右端の
1桁の数字だけです。
右端が 2桁の数字だったとしても 1桁めしか検証しません。
そして、その下にある項目も右端の文字を変換して再検証するものです。
する 、 して 、 しろ などの文字を同じ扱いにできるため、設定の仕方しだいでは話し言葉に近い方法でも使用できるようになるかもしれません。
この設定の初期値の < > は半角スペースを意味します。
設定の際、端っこのスペースは取り除かれる仕様のためにあえてスペースを使いたい場合は 両端を < > にして実現させれるようにしているといったとこです。
ここでは、端っこの < や > は取り除かれる仕様になっています。
「音声認識」を使って TRR を使ってみるなら、結構大事な設定になるかもしれません。
ここも、設定できる個所は少なめですが、使えそうだと判断したら今後増やしたりするかもしれません。
最後の文字を取り除くアイテムを作る
かなり面倒くさい事を提案します。一応参考程度に読んでください。
引数の右端を取り除く アイテム を作るという提案です。
「テキストの文字で自動的に実行」を使う際は、これ専用の
アイテム
を作る、
つまり本来指定する処理の前に、引数の右端を取り除く
アイテム
をさらに作っておき、それを使う様にするといったものです。
例えは何でもよいのですが、 GoogleSearch の アイテム を例にします。
このホームページでたぶん何回か紹介しているものなのですが、まだ用意していない方は以下のファイルを fromFileName の適当な item フォルダ内に入れて アイテム として追加してください。
; type=1
; argument=https://www.google.com/search&?q="%*"
; workingFolder=C:\Program Files (x86)\Microsoft\Edge\Application
C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
今回は、「テキストの文字で自動的に実行」で以下の設定をするケースを例にします。
テキスト に、グーグル検索したい文字を記入して、その後に 検索 を記入すると検索ができるようにするやつです。
基本これでも十分でしょうが、 〇〇の検索 や 〇〇を検索 といったように、 の や を といった余計な文字を入れてもいいようにしていくものを作ります。
以下の アイテム を作ります。
V_var1 = %B_itemArgAll%
if(V_var1 == ""){
F_errorOutput(B_itemNameOwn . " のエラー`n検索する文字を記入していません。")
return
}
V_var1 := RTrim(V_var1, "を")
V_var1 := RTrim(V_var1, "の")
V_var1 := RTrim(V_var1, "で")
; 右端 4文字が 「について」なら取り除く
StringLen, V_var2, V_var1
if( V_var2 >= 5 ){
StringRight, V_var3, V_var1, 4
if( V_var3 == "について" ){
StringTrimRight, V_var1, V_var1, 4
}
if( V_var3 == "に関して" ){
StringTrimRight, V_var1, V_var1, 4
}
}
V_var1 := Trim(V_var1)
if(V_var1 == ""){
F_errorOutput(B_itemNameOwn . " のエラー`n検索する文字を記入していません。")
return
}
GoogleSearch %V_var1%
&cleanText
&guiHideTextExecutor
%--
この
アイテム
の意味するところは、引数の右端にある
の
や
を
や
で
や
について
の文字を取り除いて、
その後に、先程の
GoogleSearch
の
アイテム
を使うといったものです。
実行する処理の指定には、 GoogleSearch の代わりに GoogleSearchMk2 の方を指定します。
この様に本来の処理の前に、 右端にある の や を を取り除く処理をしてから本来の処理を実行する アイテム を作るという方法です。
このようなアイテムを用意し、
そして前に紹介した
テキストの文字で自動的に実行
の設定のウインドウの
設定
のタブにある、右端の文字を変換して再検証する設定と合わせて使えば、
〇〇を検索して
や
〇〇の検索する
や
〇〇について検索
といった言葉でも使用できるようになるのではないかと思います。
最も処理一つ一つに本来の処理に手を加えるアイテムを作らなければならないので手間が非常にかかります。
一応の代替え策
同じ意味で使う アイテム をもう一つ紹介します。
以下のスクリプトの アイテム は、「本来の処理に手を加えるアイテム」を一つ一つ作る煩わしさを無くすために考えたアイテムです。
一応紹介しておきますが、
これは自分が余り実験して使ってみたりしていない
アイテム
です。
もしかして不具合は色々見つかるかもしれません。
公式で薦められているものとして余り扱ってほしくないものです。
一応思いついたので紹介だけしておきます。
以下の 2つのファイルを作ります。
global lw_argsAll
global lw_lenNum
global lw_right
lw_argsAll = %B_itemArgAll%
if(lw_argsAll == ""){
F_errorOutput(B_itemNameOwn . " のエラー`n後に続く実行処理がない。")
return
}
lw_argsAll := RTrim(lw_argsAll, "を")
lw_argsAll := RTrim(lw_argsAll, "の")
lw_argsAll := RTrim(lw_argsAll, "で")
lw_argsAll := RTrim(lw_argsAll, "に")
;右端 4文字が 「について」なら取り除く
StringLen, lw_lenNum, lw_argsAll
if( lw_lenNum >= 5 ){
StringRight, lw_right, lw_argsAll, 4
if( lw_right == "について" ){
StringTrimRight, lw_argsAll, lw_argsAll, 4
}
if( lw_right == "に関して" ){
StringTrimRight, lw_argsAll, lw_argsAll, 4
}
}
lw_argsAll := Trim(lw_argsAll)
&cleanText
F_textExe(lw_argsAll)
%--
1_取り除いてから の方は、起動時に実行させるものなので startup の中に 1_取り除いてから のフォルダを作っておきます。
取り除いてから の方の アイテム は、「テキストの文字で自動的に実行」の設定で指定する時に、「本来の処理」の前に記入させておくものです。
先程の GoogleSearch を指定する場合は、以下のように変えます。
この様に、「本来の処理」の前に記入して使う様にするものです。
この アイテム を使う方法なら、 「本来の処理に手を加えるアイテム」 を一つ一つ作る手間が省けます。
ただし、繰り返し書きますがこれは公式に薦めたい方法とかではありません。
思いついたので紹介しておいただけの方法です。
不具合がいくつもでるかもしれませんが使ってみないと分からないものです。
興味があった方は試しに使ってみてください。
簡易入力を使う
「音声認識」を使って動作させる時に用意したい事として、簡易入力を使用する方法というのもあります。
「音声認識」を使ってみると分かると思いますが、違う文字が入力される事が多いです。
間違えるとしても、大体同じ違う文字が入力されると言えなくもないので、 あらかじめ違う文字を正しい文字に変換する方法を用意しておくといった案を挙げます。
「テキストの文字で自動的に実行」の方で、以下の設定をしておきます。
返還 の文字が入力されると、簡易入力の文字を展開する処理をする指定です。
変換 にしたいところですが、「音声認識」では高い確率で へんかん と発音したら 返還 を入力するのでこちらを設定しておきます。
変換 の方も設定しておいていいかもしれません。
後は、簡易入力の方の設定ですが &snippetAddFromFile を使って、ファイルから設定する方法を勧めます。
これは、以下の様な書式で記入されたファイルを読み込んで 簡易入力を追加するものです。
[キーの文字1] /// [展開後の文字1]
[キーの文字2] /// [展開後の文字2]
[キーの文字3] /// [展開後の文字3]
書式の説明をします。
一行で一つの簡易入力を追加します。
///
を必ず記入します。
///
の左側が
キーになる文字
で、
///
の右側が
展開後の文字
です。
今回挙げる例として以下のファイルを用意します。
たら /// 7
だが /// 7
奈良 /// 7
今回はこのファイルを TRR の実行ファイルがあるフォルダに配置しているものとします。
次は、以下の アイテム を作って、起動時に実行させるようにします。 以下のファイルを fromFileName の item 内に配置します。
; type=3
&snippetAddFromFile %A_ScriptDir%\replaceSnippet.txt
startup のフォルダ内に 1_replaceSnippet読み込み のフォルダを作っておきます。
作った例の説明をしていきます。
「音声認識」では、 なな と発音すると、 たら や だが や 奈良 と入力する場合が多いと思います。
その場合でも、その後に へんかん と発音すると、簡易入力の処理によって たら などの文字が変換されて 7 に変わると思います。
このように、あらかじめ間違えるパターンのものを 簡易入力として設定しておくと、 へんかん などの言葉で正しい文字に変換させていく事ができるかもしれません。
ただし、先程にも書いていたように TRR を「音声認識」を使って実用的に使う事はまだ出来ないと思います。
今回挙げたのは、思いついた設定を紹介してみただけのものですので その事はご了承ください。