最後の文字で実行の操作。それの使用例

最後の文字で実行。その2 のページの続きというか、そのページで作ったもので使ってみた例を挙げてみようと思います。

このページを見る方は、マニアックのジャンルのページなので独特な内容なのは承知でしょうが、このページは特に作者のブランボンの趣味的な内容になっています。

TRR の事を知る上での特に重要な事は語っていません。
ですので、趣味的な内容に付き合ってもよい方だけが見た方がよいと思います。

何度かこのホームページで、 最後の文字で実行 の設定は、「Windowsの音声認識」で使う事を想定して作ったと記述しています。

とりあえず「Windowsの音声認識」を使ってみた例のようなものを挙げます。

結論だけを先に言いますが、実用的なものは出来ていません。

使える様にするには色々改良が必要か、もしくは改良しても無理な挑戦みたいな感じかもしれません。

とりあえず、こうしたいという事が伝わるのではないかと思ってこのページを記入しただけです。

タイマーと検索

とりあえず、ぱっと思いついたのがタイマーと、Web検索ができるやつだったのでそれを出来るようにしたものを挙げます。
声でそれらを出来るようにした例です。

そして前回の 最後の文字で実行。その2 で作ったものも使用してみます。

検索

テキスト上で 検索 と発音したらWeb検索ができる様にしてみます。

このホームページでも、何度か GoogleSearchアイテム の紹介をしていたと思います。
今回もこの アイテム を使います。

とはいえ、すでに GoogleSearch を用意している方としていない方がいるでしょうし、用意している方は アイテム が被ってしまうため、名前を少し変えたものを例に使います。

word_sel_GoogleSearch.txt
; 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

アイテム を用意すれば後は簡単。
前回の category[番号].txt のファイルなり、 startTab[番号].txt なりのファイルに以下の行を用意すれば使える様になります。

検索 = lastWord_タイマーキャンセルと word_sel_GoogleSearch

この設定がされている間は、 検索したい文字を「Windows音声認識」で発音して テキスト上に記入し、その後で 検索 を発音してそれが認識出来ればWeb検索ができるようになると思います。

さて、検索するものはこれで完成です。

完成なのですが、今後、項目数を増やしながら使える様にしたいため余計な一工夫を加えて行く事にします。

これから紹介するスクリプトには音声のファイルを使う事にします。

以下のファイルをダウンロードしてください。

効果音ラボ
のWebサイトからダウンロードした音声のファイルを使っています。

アラームのファイルもあります。これは ListTimerBU にあるアラーム用のファイルと同じものです。
これはどこからダウンロードしたかを忘れました。

voiceStorage1.zip
( 300 KByte )

ダウンロードしたファイルを以下のフォルダ内に配置したとして話を進めます。

%A_ScriptDir%\voice

なお、今回挙げていくスクリプトですが、
前回のページの
最後の文字で実行。その1 のページでダウンロードするものの中に今回のスクリプトも含まれています。

ダウンロードしたい方はそちらのページの方からそうしてください。

さて、先程の 検索 で使える様にするものですが、
最後の文字で実行 の設定は、その都度切り替えながら使用していきたいと 作者のブランボン自身は 思っているので、前回のタイマー式の切り替え設定を混ぜながら使う様にして行きます。

なので、むしろ不便な感じになっていきます。
このページ以降は話について行ってもよい方だけ見た方がいいかもしれません。

それでは始めます。
以下のファイルの アイテム を追加します。

word_sel_sentakusite.trr
; type=3
SoundPlay, %A_ScriptDir%\voice\sentakusitekudasai.mp3 &&& lastWord_setCategoryTab5タイマー

ちなみに、この アイテム のスクリプトは最後に改行をせずに、 2行のみで終わるようにしてください。

数字の引数を指定しながら使うものなので、 最後に %-- をあえて付けたりしません。

このアイテムについてですが、前回に出てきた、 lastWord_setCategoryTab5タイマー となんら変わりはありません。
スクリプトを見れば分かるでしょうが、先程ダウンロードした音声のファイルを使って音を鳴らす違いがあるだけです。

それと、このアイテムを使う時は引数に番号を指定します。
lastWord_setCategoryTab5タイマー を使う時と意味は同じです。

今作った アイテム を起動キーのような形にしたいので、以下の設定のものを startTab[番号].txt などのファイルに追加します。

選択 = word_sel_sentakusite 3 %--

これを設定すると、 選択テキスト上で発音すると、 最後の文字で実行 の設定が category3.txt に設定したものに切り替わるようになります。

切り替え後の内容が反映される category3.txt には以下の行を設定しておきます。

検索 = lastWord_タイマーキャンセルと word_sel_GoogleSearch

先程と同じものです。

つまり、使う時は 選択 と発音してそれが認識できると、
「選択してください」の文字が返ってき、その後に 検索 が使える様にするといったものです。

少し不便にしましたが、今度は少し改良の方をします。
以下の アイテム をまた作ります。

word_sel_GoogleSearchMk2.txt
V_var10 = %B_itemArgAll%
if(V_var10 == ""){
    F_errorOutput(B_itemNameOwn . "  のエラー`n検索する文字を記入していません。")
    return
}
V_var10 := RTrim(V_var10, "を")
V_var10 := RTrim(V_var10, "の")
V_var10 := RTrim(V_var10, "で")
; 右端 4文字が 「について」なら取り除く
StringLen, V_var11, V_var10
if( V_var11 >= 5 ){
    StringRight, V_var12, V_var10, 4
    if( V_var12 == "について" ){
        StringTrimRight, V_var10, V_var10, 4
    }
    if( V_var12 == "に関して" ){
        StringTrimRight, V_var10, V_var10, 4
    }
}
V_var10 := Trim(V_var10)
if(V_var10 == ""){
    F_errorOutput(B_itemNameOwn . "  のエラー`n検索する文字を記入していません。")
    return
}
word_sel_GoogleSearch  %V_var10%
&cleanText
&guiHideTextExecutor
%--

以上が アイテム側の作成で、
次は先程に使用した category3.txt の方を次の様に設定します。

category3.txt
検索    = lastWord_タイマーキャンセルと  word_sel_GoogleSearchMk2
検索して = lastWord_タイマーキャンセルと  word_sel_GoogleSearchMk2
検索する = lastWord_タイマーキャンセルと  word_sel_GoogleSearchMk2
#
#
#
#
#
#

今挙げたものに変えると、
〇〇を検索して とか 〇〇について検索する といった言葉でも、多少認識できるようになるという感じのやつです。

少し「音声認識」で使っている風の事ができるようになったような感じがします。

あくまで、多少使えるようになるだけで実際はあまり認識できないのが現状です。

選択 という言葉を起動キーにして、 Web検索ができるようにするやつは大体こんなところです。

興味をもてた方がいたら使ってみてください。

何度も言いますが、実用性は現状はないです。

タイマー

「音声認識」を利用したタイマーを作ってみました。

先にスクリプトを全て載せます。
適当な名前の アイテムのカテゴリーフォルダ を作ってその中に以下のファイルを入れてください。

timer_ とでも名付けたフォルダの中に入れてください。

tim_alarmKeep.trr
; type=3
&wait -8 16s &&& SoundPlay, %A_ScriptDir%\voice\Alarm1.mp3
tim_alarm.trr
; type=3
SoundPlay, %A_ScriptDir%\voice\Alarm1.mp3 &&& tim_alarmKeep &&& tim_alarmKeep &&& tim_alarmKeep &&& tim_alarmKeep %--
tim_alarmMsgbox.trr
tim_alarm
MsgBox , 0, 時間です, アラームを止めます。, 80
IfMsgBox , OK
{
    &timerStop 8
    SoundPlay, _止めるだけ_
}
%--
tim_ストップ.trr
F_imeSet(0)
&timerStop 9
SoundPlay, %A_ScriptDir%\voice\syuuryousimasu.mp3
&cleanText
&guiHideTextExecutor
; アラームも止める
IfWinExist , 時間です
{
    Sleep, 1500
    WinActivate, 時間です
    F_winWaitActive("時間です")
    Sleep, 500
    Send, {Enter}
}
; &timerStop 8
%--
tim_timer漢字で.trr
V_var10 = %B_itemArgAll%
V_var11 = %B_itemArgAll%
if(V_var10 == ""){
    F_errorOutput(B_itemNameOwn . "  のエラー`n時間を記入していません。")
    return
}
V_var10 := RTrim(V_var10, "の")
V_var10 := RTrim(V_var10, "に")
V_var10 := F_getDateTime6CharFromKanji(V_var10)
if(V_var10 == "error"){
    F_errorOutput(B_itemNameOwn . "  のエラー`n指定  " . V_var11)
    return
}
if(V_var10 <= 0){
    F_errorOutput(B_itemNameOwn . "  のエラー`n数字が 0 以下になっている")
    return
}
&timer -9 %V_var10% &&& tim_alarmMsgbox
&timerView
SoundPlay, %A_ScriptDir%\voice\kaishishimasu1.mp3
&cleanText
&guiHideTextExecutor
%--
tim_wait漢字で.trr
V_var10 = %B_itemArgAll%
V_var11 = %B_itemArgAll%
if(V_var10 == ""){
    F_errorOutput(B_itemNameOwn . "  のエラー`n時間を記入していません。")
    return
}
V_var10 := RTrim(V_var10, "の")
V_var11 := RTrim(V_var11, "の")
V_var10 := RTrim(V_var10, "に")
V_var11 := RTrim(V_var11, "に")
V_var10 := F_getHMSSentenceFromKanji(V_var10)
if(V_var10 == "error"){
    if V_var11 is not integer
    {
        F_errorOutput(B_itemNameOwn . "  のエラー`n指定  " . B_itemArgAll)
        return
    }
    V_var10 = %V_var11%m
}
if(V_var10 <= 0){
    F_errorOutput(B_itemNameOwn . "  のエラー`n数字が 0 以下になっている")
    return
}
&wait -9 %V_var10% &&& tim_alarmMsgbox
&timerView
SoundPlay, %A_ScriptDir%\voice\kaishishimasu1.mp3
&cleanText
&guiHideTextExecutor
%--
tim_時刻か残り時間か.trr
V_var12 = %B_itemArgAll%
&cleanText
V_var12 := RTrim(V_var12, "の")
V_var12 := RTrim(V_var12, "に")
if(V_var12 == ""){
    F_toolTipOutputAssign("時間を指定してから選択してください。" , mylast1_O_toolTipX, mylast1_O_toolTipY , 10)
    word_sel_sentakusite 5
    return
}
F_toolTipOutputAssign(V_var12 . "`nの時間を既に指定中。" , mylast1_O_toolTipX, mylast1_O_toolTipY , 10)
word_sel_sentakusite 4
%--

これらはアラームを鳴らす処理のスクリプトのアイテムです。

今回のスクリプトには、
F_getDateTime6CharFromKanji( )
F_getHMSSentenceFromKanji( ) という関数を使っています。

これらの関数は、このページつまり、この「音声認識」を利用してタイマーを実行させる処理のために用意した関数です。

この関数の引数に 10時10分五十秒 などの文字列を指定すると、
&wait&timer で使える書式に変換するとかいうやつです。

一応使えますが、そんなに信用できるようなものではありません。あくまで遊びの範囲で使うものです。
もっとも、この TRR 自体が遊びの範囲で使うものです。

十分30秒後にアラーム といった言葉でアラームなどを鳴らすといった使い方をする事を目的にしています。

それでは、また先程の category3.txt の設定を以下の様にします。

category3.txt
検索    = lastWord_タイマーキャンセルと  word_sel_GoogleSearchMk2
検索して = lastWord_タイマーキャンセルと  word_sel_GoogleSearchMk2
検索する = lastWord_タイマーキャンセルと  word_sel_GoogleSearchMk2
後に = lastWord_タイマーキャンセルと  tim_wait漢字で
時間に  = lastWord_タイマーキャンセルと  tim_timer漢字で
時間で  = lastWord_タイマーキャンセルと  tim_timer漢字で
時間を確認 = lastWord_タイマーキャンセルと  &guiShow %B_GuiNumTimer% NA %--
止める   = lastWord_タイマーキャンセルと  tim_ストップ
アラーム = tim_時刻か残り時間か
#

さらに、同じく以下の 2つのファイルも追加します。

category4.txt
残り時間   =  lastWord_タイマーキャンセルと  tim_wait漢字で  %V_var12% %--
残り時間で =  lastWord_タイマーキャンセルと  tim_wait漢字で  %V_var12% %--
時計    =  lastWord_タイマーキャンセルと  tim_timer漢字で  %V_var12% %--
時計で  =  lastWord_タイマーキャンセルと  tim_timer漢字で  %V_var12% %--
#
#
#
#
#
#
category5.txt
残り時間   =  lastWord_タイマーキャンセルと  tim_wait漢字で
残り時間で =  lastWord_タイマーキャンセルと  tim_wait漢字で
時計    =  lastWord_タイマーキャンセルと  tim_timer漢字で
時計で  =  lastWord_タイマーキャンセルと  tim_timer漢字で
#
#
#
#
#
#

さて、紹介したものを説明しようというところですがこのページが長くなりすぎたので次のページに移行したいと思います。

説明は単純なものなので、このページ内で済ませてもよさそうなのですが、念のため次のページで説明します。

スクリプトを参考にしながら見たい方は別のタブで開いてみてください。