DICTATEディクテイト関数

本ページには広告が含まれています。

マイクから音声を拾得し、認識した文字列を返します。RECOSTATE関数の第2引数以降で単語登録をしている場合、その単語のみの拾得となり単語登録していない音声は拾得されません。

構文
  1. String = DICTATE( 拾得待ちフラグ )
引数
拾得待ちフラグ (Boolean = True)省略可
TRUE
入力があるまで待つ(デフォルト)
FALSE
待たず直近の入力を返す
戻り値
拾得音声文字

使い方

UWSC
RECOSTATE(TRUE, "単語1", "単語2")
UWSC
RECOSTATE(TRUE, "単語1", "単語2", array1, array2)
UWSC
RECOSTATE(TRUE, "単語1", array1, array2, "単語2")

以下はRECOSTATE関数で単語登録を行っているので、DICTATE関数では"おはよう"、"こんにちは"、"こんばんは"、"終了"の音声以外は拾得されません。

UWSC
DIM cmd[] = "おはよう", "こんにちは", "こんばんは", "終了"

RECOSTATE(TRUE, cmd)
FUKIDASI("音声を取得します")

WHILE TRUE
	DIM str = DICTATE(TRUE)
	PRINT str
	IF str = "終了" THEN BREAK
	SLEEP(0.001)
WEND

RECOSTATE(FALSE)
結果
おはよう>おはよう
こんにちは>こんにちは
こんばんは>こんばんは
おやすみ>
すみません>

RECOSTATE関数で単語登録を行わなかった場合すべての音声に認識する代わりに精度は悪くなります。

UWSC
SETHOTKEY(VK_ESC, EMPTYPARAM, "forceQuit")

RECOSTATE(TRUE)
FUKIDASI("音声を取得します ESCで終了")

WHILE TRUE
	PRINT DICTATE(TRUE)
	SLEEP(0.001)
WEND

RECOSTATE(FALSE)

PROCEDURE forceQuit()
	EXITEXIT
FEND
結果
おはよう>日本
こんにちは>こんにちは
こんばんは>今晩は
おやすみ>上杉
すみません>すみません

拾得待ちフラグにFALSEを指定して拾得できるまで待機する例。

UWSC
REPEAT
	SLEEP(0.001)
	DIM str = DICTATE(FALSE)
UNTIL str <> ""

「cmd.txt」にあるテキストを1行毎に取得し単語として登録。

UWSC
DIM array[-1]
DIM FID = FOPEN("D:\Desktop\cmd.txt", F_READ)

FOR row = 1 TO FGET(FID, F_LINECOUNT)
	arrayPush(array, FGET(FID, row))
NEXT

FCLOSE(FID)

RECOSTATE(TRUE, array)

プログラム実行例

音声認識でアプリを操作

UWSC
DIM cmd[] = "電卓", "メモ帳", "ペイント",  "最大化", "最小化", "終了"

RECOSTATE(TRUE, cmd)

WHILE TRUE
	FUKIDASI("音声を取得します")
	SELECT DICTATE(TRUE)
		CASE "電卓"
			FUKIDASI("電卓を起動します")
			EXEC("calc.exe")
		CASE "メモ帳"
			FUKIDASI("メモ帳を起動します")
			EXEC("notepad.exe")
		CASE "ペイント"
			FUKIDASI("ペイントを起動します")
			EXEC("mspaint.exe")
		CASE "最大化"
			FUKIDASI("アクティブウィンドウを最大化します")
			CTRLWIN(GETID(GET_ACTIVE_WIN), MAX)
		CASE "最小化"
			FUKIDASI("アクティブウィンドウを最小化します")
			CTRLWIN(GETID(GET_ACTIVE_WIN), MIN)
		CASE "終了"
			BREAK
	SELEND
	SLEEP(0.500)
	FUKIDASI()
WEND

RECOSTATE(FALSE)
使用関数
解説

関連記事

RECOSTATE関数 (スクリプト関数)