sample\iron\sample_vosk.hsp » Plain Format
;============================================================
; sample_vosk.hsp — hspvosk.dll オフライン音声認識 (WAV) デモ
;
; alphacephei Vosk (Kaldi ベース) の軽量オフライン STT。
; モデル 50MB 〜で多言語対応 (日本語含む)。
;
; 前提:
; 1. Vosk のモデルを DL して展開:
; https://alphacephei.com/vosk/models
; 日本語なら vosk-model-small-ja-0.22 (約 48MB)
; 英語なら vosk-model-small-en-us-0.15 (約 40MB)
; 2. 展開先ディレクトリ名を model_path に設定
; 3. 16kHz mono の WAV を用意
;
; モデルの置き方:
; sample_vosk.hsp と同じフォルダに
; vosk-model-small-ja-0.22/
; am/ conf/ graph/ ivector/ rescore/ rnnlm/ (展開後の中身)
; を丸ごと配置。
;
; ライブマイク認識は iron_speech.hsp 経由の
; iron_speech_listen_start_mic / listen_poll / listen_stop
; で行う (partial + final phrase 取得可)。
;============================================================
#include "hsp3_net_64.as"
#include "hspvosk.as"
title "hspvosk demo"
screen 0, 720, 500
font "MS Gothic", 14
model_path = "vosk-model-small-ja-0.22"
wav_path = "voice.wav"
sample_rate = 16000
mes "hspvosk demo — Vosk (Kaldi) オフライン認識"
mes "model : " + model_path
mes "wav : " + wav_path
mes "rate : " + sample_rate + " Hz"
mes ""
;------- 1. モデルロード -------
exist model_path
if strsize < 0 {
; HSP の exist はディレクトリには効かないが、strsize が -1 に
; なるケースもある。ここでは情報表示のみ。
}
h = hspvosk_open(model_path, sample_rate)
if h < 0 {
color 255, 0, 0
mes "モデルのロードに失敗しました (code=" + h + ")"
mes ""
color 0, 0, 0
mes "次の手順でモデルを用意してください:"
mes " 1. https://alphacephei.com/vosk/models から"
mes " vosk-model-small-ja-0.22.zip を DL"
mes " 2. このスクリプトと同じフォルダに解凍"
mes " vosk-model-small-ja-0.22/am/..."
mes ""
mes "モデルディレクトリ内に am / conf / graph 等があれば OK。"
stop
}
color 0, 128, 0
mes "[OK] Vosk open handle=" + h
color 0, 0, 0
;------- 2. 文字起こし -------
exist wav_path
if strsize < 0 {
color 255, 0, 0
mes ""
mes "voice.wav が見つかりません。"
mes "16kHz mono PCM の WAV を用意してください。"
hspvosk_close h
stop
}
sdim text, 65536
ret = hspvosk_transcribe_wav(h, wav_path, text, 65535)
mes ""
if ret < 0 {
color 255, 0, 0
mes "認識に失敗しました (code=" + ret + ")"
color 0, 0, 0
} else {
color 0, 0, 192
mes "----- 認識結果 -----"
color 0, 0, 0
mes text
}
hspvosk_close h
stop