NSReeds 説明書
(最終更新:2022/01/22)

NSReedsは音声認識・合成音声プラグインです。 雰囲気を理解してもらう目的で以下に音声認識の基本的な機能に限ったマニュアルを記しますが、詳しくはサンプルを見てください。

■初歩的な使用例

  • 単語登録(add)と音声認識待ち(wait)
  • 手動による認識開始(go)〜受け取り(get)
  • 単語の登録(add)と音声認識待ち(wait)

    ●vladd 登録するグループ番号, "フレーズ" (,優先度)
    ●vladds "登録するグループ名", "フレーズ" (,優先度)
    ●vlwait $0,"有効化するグループ(半角カンマ区切り)"
    
    	;グループ1にいくつか単語を登録。
    	vladd 1,"リンゴ",100
    	vladd 1,"ミカン",100
    	vladd 1,"バナナ",100
    	vladd 1,"Banana",100
    	vladd 1,"Banana Juice",100	;一部の英単語はカタカナ音でも認識される
    	vladd 1,"リンゴ,ジュース",100	;日本語の文節を明示的に区切る場合は','
    	vladd 1,"(宇宙/ソラ)",100		;音声入力「ソラ」から"宇宙"が返る
    
    	--グループ1を有効化して認識開始。
    	vlwait $0,"1"
    
    ●NSNSvl.add(登録するグループ, "単語" (,優先度) )
    ●NSNSvl.go(有効化するグループ@ (,有効化するグループA,...) )
    
    	--グループ1にいくつか単語を登録。
    	NSNSvl.add(1,"リンゴ",100)
    	NSNSvl.add(1,"ミカン",100)
    	NSNSvl.add(1,"バナナ",100)
    	NSNSvl.add(1,"Banana",100)
    	NSNSvl.add(1,"Banana Juice",100)	-->一部の英単語はカタカナ音でも認識される
    	NSNSvl.add(1,"リンゴ,ジュース",100)	-->日本語の文節を明示的に区切る場合は','
    	NSNSvl.add(1,"(宇宙/ソラ)",100)		-->音声入力「ソラ」から"宇宙"が返る
    
    	--グループ1を有効化して認識開始。
    	local resstr=NSNSvl.wait(1)
    
    認識待ちに追加のオプションを渡すと、タイムアウト時間を設定したり、キーボード・マウスの入力も受け付けたりできます。

    グループの削除(初期化)

    ●vldel "削除するグループ"
    	--グループ 1〜4,"hoge" の内容を初期化
    	vldel "1,2,3,4,hoge"
    
    ●NSNSvl.del(削除するグループ@ (,削除するグループA,...) )
    	--グループ 1〜4,"hoge" の内容を初期化
    	NSNSvl.del(1,2,3,4,"hoge")
    
    削除にも一定の時間が掛かるため、大量にキーワードを定義しない限り削除の必要はありません。

    認識の開始(go)

    ●vlcommit
    
    ●NSNSvl.commit()
    
    呼び出し以前に行った変更内容をエンジン側に反映させます。 認識エンジン有効化時に自動で呼ばれていますが、大量に登録時は反映に時間が掛かるため明示的に呼んだ上でユーザー側に読み込み中である旨を示すべきです。
    ●vlgo "グループ"
    
    ●NSNSvl.go("グループ")
    
    認識エンジンを有効化します。

    認識結果の受け取りチェック(get)

    ●vlget $0	;まだ何も認識していなければ空文字が返る
    
    ●local str=NSNSvl.get( ("フレーズ認識時の単語間連結文字") )	--まだ何も認識していなければnilが返る
    
    	local str,ostr,percent=NSNSvl.get("+")
    	--str…結果。認識した節同士を"+"で繋げた文字列、未認識なら""(空文字列)が返る。
    	--orgstr…補正前文字列(デバッグ用)
    	--percent…結果の信頼率%(デバッグ用、あまりあてにならない)
    
    連結文字列を省略時は、結果の先頭が全角文字なら""、半角文字なら" "と見なす。

    認識の中断

    ●vlstop
    
    ●NSNSvl.stop()
    
    音声認識実行中、この関数を呼ばずにメッセージボックスを出すと動作が不安定になる(ウィンドウを操作不能になる)。 check()を用いて自分で無加工の結果を受け取った場合、すぐにstop()を呼ぶこと。 get()/fix()で結果を取得した場合は内部において自動で呼んでいる。

    コード例

    	--グループ1に単語を登録。
    	NSNSvl.add(1,"リンゴ",100)
    	NSNSvl.add(1,"ミカン",100)
    	NSNSvl.add(1,"バナナ",100)
    
    	--グループ1を有効化して認識開始。
    	local str,ostr,percent=NSNSvl.wait(1)
    	--[[以下の処理のラッパー関数が↑
    		NSNSvl.go(1)
    
    		--認識待ちループ
    		local str,ostr,percent
    		repeat
    			--str…結果。認識した節同士を"+"で繋げた文字列、未認識なら""(空文字列)が返る。
    			--percent…認識の信頼率だが、あまりあてにならない。
    			str,percent=NSNSvl.check()
    
    			--曖昧な発音のゆれを考慮して元に戻す処理。
    			--連結文字列省略時は、
    			-- @全角ならそのまま繋げる
    			-- A半角なら半角スペースで繋げる
    			if(str)then
    				str,ostr=NSNSvl.fix(str,"+")
    			end
    			NSSleep(1)NSDoEvents()
    		until(str)
    
    		--音声認識を休止させる
    		NSNSvl.stop()
    	--]]
    
    	--読み取った語strを表示。
    	alert(
    		str
    		..(ostr and " ←("..ostr..")" or "")
    		.."※信頼度は"..(percent or "??").."%です"
    	)	
    
    

    ガラスグサに戻る