sample\iron\sample_winrtspeech.hsp » Plain Format
;============================================================
; sample_winrtspeech.hsp — hspwinrtspeech.dll ライブマイク認識デモ
;
; Windows.Media.SpeechRecognition (WinRT) を使ってマイクから
; 1 フレーズずつ文字起こし。
;
; 重要:
; WinRT SpeechRecognition は microphone-only。
; WAV ファイルから認識したい場合は SAPI / Vosk / Whisper を使う。
;
; 前提:
; - Windows 10/11 + 認識させたい言語の Speech Pack が入っている
; (en-US は標準、ja-JP は別途インストール)
; - マイクのアクセス許可が有効
; (設定 → プライバシー → マイク → デスクトップアプリにマイクの使用を許可)
; - 「マイク認識」ボタンを押してから、マイクに向かって発話
;
; listen_once は「1 回の発話」を最大 ~10 秒待ってブロッキング取得する。
; 連続認識したい場合は Vosk + iron_speech_listen_start_mic / poll を使う。
;============================================================
#include "hsp3_net_64.as"
#include "hspwinrtspeech.as"
title "hspwinrtspeech demo"
screen 0, 720, 500
font "MS Gothic", 14
lang = "ja-JP" ; "en-US" / "" (システム既定)
mes "hspwinrtspeech demo — WinRT ライブマイク認識"
mes "language : " + lang + " (空欄 = システム既定)"
mes ""
;------- 1. recognizer 起動 -------
h = hspwinrt_speech_open(lang)
if h < 0 {
color 255, 0, 0
mes "WinRT SpeechRecognizer の初期化に失敗しました (code=" + h + ")"
mes ""
color 0, 0, 0
mes "確認事項:"
mes " - 指定の言語 Speech Pack がインストールされているか"
mes " (設定 → 時刻と言語 → 音声認識)"
mes " - マイクのアクセス許可が有効か"
mes " - Windows 10/11 か"
stop
}
color 0, 128, 0
mes "[OK] WinRT speech open handle=" + h
color 0, 0, 0
mes ""
;------- 2. UI -------
pos 10, 130
objsize 200, 36
button gosub "マイク認識 (1 フレーズ)", *do_listen
pos 10, 180
mes "----- 認識結果 -----"
pos 10, 205
sdim result_text, 16384
mesbox result_text, 700, 270, 4
pos 10, 485
mes "終了するには ウィンドウを閉じる"
stop
*do_listen
result_text = "[info] マイクに向かって話してください..." + "\n"
objprm 1, result_text
await 50
sdim text, 4096
hspwinrt_speech_listen_once h, text, 4095
ret = stat
if ret < 0 {
result_text = "[error] 認識失敗 (code=" + ret + ")\n"
result_text = result_text + "無音のままタイムアウト、またはマイクに問題があります。\n"
} else {
if strlen(text) = 0 {
result_text = "[warn] 結果が空でした (発話が短すぎた?)\n"
} else {
result_text = "[OK] " + text + "\n"
}
}
objprm 1, result_text
return