sample_whisper.hsp

sample\iron\sample_whisper.hsp » Plain Format

;============================================================
;  sample_whisper.hsp — hspwhisper.dll オフライン音声認識デモ
;
;  前提:
;    1. GGML モデルを DL して models/ggml-base.bin に置く
;         curl -L -o models/ggml-base.bin \
;            https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.bin
;       または tiny (~75MB) が軽い:
;         https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-tiny.bin
;    2. audio.wav (16kHz mono 推奨) を用意
;
;  hspwhisper.dll が見つからない (x86 ビルド等) / モデルがない場合は
;  表示だけ行って終了。
;============================================================

#include "hsp3_net_64.as"
#include "hspwhisper.as"

    title "hspwhisper demo"
    screen 0, 800, 500
    font "MS Gothic", 14

    model_path = "models/ggml-base.bin"
    wav_path   = "audio.wav"
    lang       = "auto"     ; "ja" / "en" / "auto"

    mes "hspwhisper demo — オフライン音声認識"
    mes "model : " + model_path
    mes "wav   : " + wav_path
    mes "lang  : " + lang
    mes ""

    ; 1. モデルロード
    h = hspwhisper_open(model_path)
    if h < 0 {
        color 255, 0, 0
        mes "モデルのロードに失敗 (code=" + h + ")"
        mes "models/ggml-base.bin を DL してください:"
        mes "  curl -L -o models/ggml-base.bin \\"
        mes "    https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.bin"
        stop
    }
    mes "モデルをハンドル " + h + " でロードしました"

    ; 2. 推論 (WAV → テキスト)
    sdim out_text, 65536
    mes "推論中..."
    redraw 1
    n = hspwhisper_transcribe_wav(h, wav_path, lang, out_text, 65536)
    if n < 0 {
        color 255, 0, 0
        mes "推論失敗 (code=" + n + ") — " + wav_path + " が無効か、"
        mes "16kHz mono PCM WAV でない可能性があります"
    } else {
        color 0, 128, 0
        mes "結果 (" + n + " bytes):"
        color 0, 0, 0
        mes out_text
    }

    ; 3. クローズ
    hspwhisper_close h
    mes ""
    mes "DONE"
    stop