音声 Node.js SDK で Qwen-Audio-ASR-Message を呼び出し、認識結果の処理とタスク中のコンテキスト更新を行います。
SDK のインストール
Node.js 18 以降が必要です。SDK 0.1.0 パッケージをダウンロードし、プロジェクトで次を実行します。
クイックスタート
コンソールで API キーを取得し、環境変数 DASHSCOPE_API_KEY に設定します。
サンプル音声を input.mp3 として保存し、16 kHz、16-bit、モノラル PCM に変換します。
example.mjs として保存し、node example.mjs を実行します。
API リファレンス
コンストラクターのオプション
RecognitionClient のコンストラクターオプション:
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
apiKey | string | いいえ | API キー。デフォルトは DASHSCOPE_API_KEY。 |
workspaceId | string | いいえ | ワークスペース ID。デフォルトは DASHSCOPE_WORKSPACE_ID。 |
baseUrl | string | いいえ | サービスホスト名を dashscope-intl.aliyuncs.com(シンガポール)に設定します。 |
model | string | はい | モデル ID を qwen-audio-3.1-asr-flash-message に設定します。 |
format | 'pcm' | 'wav' | 'mp3' | 'opus' | 'speex' | 'aac' | 'amr' | いいえ | 音声形式。デフォルト:pcm。WAV は PCM、Opus/Speex は Ogg コンテナー、AMR は AMR-NB を使用します。 |
sampleRate | number | いいえ | 音声サンプリングレート。16000 Hz を使用します。 |
vocabularyId | string | いいえ | 事前コンパイル済み語彙リスト ID。 |
languageHints | string[] | いいえ | 認識言語のヒント。先頭の最大 4 値が有効です。省略時は自動認識します。 |
disfluencyRemovalEnabled | boolean | いいえ | 言いよどみを除去して結果を整えます。デフォルト:false。 |
maxSentenceSilence | number | いいえ | VAD の文終了無音しきい値(ms):[200,6000]、デフォルト:800。 |
heartbeat | boolean | いいえ | 無音時の接続維持。デフォルト:false。有効時も無音音声を継続送信します。 |
context | AsrContextMessage[] | いいえ | 認識コンテキスト。形式は { role, content: [{ type: "input_text", text }] }、role は user または assistant。各ロール最大 5 件、合計 400 文字未満で、対話のターン順に並べます。 |
parameters | Partial<RecognitionParameters> | いいえ | 追加の認識パラメーター(vad_model、keep_dialect、vocabulary など)。 |
connectTimeoutMs | number | いいえ | 接続タイムアウト(ms)。デフォルト:10000。 |
taskTimeoutMs | number | いいえ | 開始・終了確認のタイムアウト(ms)。デフォルト:60000。0 で無効化します。 |
parameters.vad_model | 'near_meeting_16k' | 'far_field_meeting_16k' | いいえ | 近距離または遠距離の VAD。デフォルト:far_field_meeting_16k。 |
parameters.keep_dialect | boolean | いいえ | 方言表現を保持します。デフォルト:false。 |
parameters.vocabulary | Record<string, number> | いいえ | 即時語彙。キーは単語、値は重み [1,5] または 50。 |
parameters.speech_noise_threshold | number | いいえ | VAD 感度しきい値:[-1,1]。 |
parameters.intermediate_result_enabled | boolean | いいえ | 認識中間結果を返します。デフォルト:false。 |
主なメソッド
| メソッド | 戻り値 | 説明 |
|---|---|---|
start() | Promise<void> | 認識を開始します。完了後に音声を送信します。 |
sendAudio(audio: Buffer | Uint8Array) | void | 設定した形式とサンプリングレートで音声フレームを送信します。 |
updateContext(context: AsrContextMessage[]) | void | 開始後、入力終了前に認識コンテキストを更新します。 |
finish() | Promise<void> | 音声入力を終了して完了を待ちます。テキストはコールバックで返します。 |
close(code?: number, reason?: string) | void | 接続を閉じてタスクのリソースを解放します。 |
コールバックイベント
on(event, listener) でコールバックを登録します。全フィールドはサーバーイベントを参照してください。
| イベント | ペイロード | 説明 |
|---|---|---|
started | { taskId: string } | タスクが開始し、入力を受け付けます。 |
result | { text: string; sentence_end: boolean; sentence_begin?: boolean; words?: RecognitionWord[] } | 中間または最終の文。ハートビート結果は除外されます。 |
sentenceEnd | { text: string; sentence_end: boolean; sentence_begin?: boolean; words?: RecognitionWord[] } | sentence_end === true の最終文。 |
finished | { taskId: string; duration?: number; usage?: RecognitionUsage } | タスクが終了し、ローカルのタスク状態がクリアされました。 |
failed / error | DashScopeError | 呼び出しエラー。code、message、リクエスト識別子を含みます。 |
close | { code: number; reason: string } | 基になる接続の切断通知。 |
event | ServerEvent | 元のサービス JSON メッセージ。 |