通过语音 Node.js SDK 调用 Qwen-Audio-ASR-Message,发送音频、处理识别结果,并在任务中更新识别上下文。
安装 SDK
需要 Node.js 18 或以上版本。下载 SDK 0.1.0 安装包后,在项目目录运行:
npm install ./dashscope-sdk-nodejs-0.1.0.tgz
快速开始
在控制台获取 API Key,并配置为环境变量 DASHSCOPE_API_KEY。
下载示例音频,保存为 input.mp3,并转换为 16 kHz、16-bit、单声道 PCM:
ffmpeg -i input.mp3 -f s16le -ac 1 -ar 16000 input.pcm
将以下示例保存为 example.mjs,运行 node example.mjs。
import { readFile } from 'node:fs/promises'
import { setTimeout as sleep } from 'node:timers/promises'
import { RecognitionClient } from 'dashscope-sdk-nodejs/asr'
const pcm = await readFile('input.pcm')
const asr = new RecognitionClient({
apiKey: process.env.DASHSCOPE_API_KEY,
workspaceId: process.env.DASHSCOPE_WORKSPACE_ID,
baseUrl: 'dashscope-intl.aliyuncs.com',
model: 'qwen-audio-3.1-asr-flash-message',
format: 'pcm',
sampleRate: 16000,
})
asr.on('sentenceEnd', sentence => console.log('Final sentence:', sentence.text))
asr.on('error', err => console.error(err.code, err.message))
try {
await asr.start()
for (let offset = 0; offset < pcm.length; offset += 3200) {
asr.sendAudio(pcm.subarray(offset, offset + 3200))
await sleep(100)
}
await asr.finish()
} finally {
asr.close()
}
接口参考
构造参数
RecognitionClient 的构造参数如下。
参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
|
| 否 | API Key。默认读取 |
|
| 否 | 业务空间 ID。默认读取 |
|
| 否 | 服务域名,设置为 |
|
| 是 | 模型 ID,设置为 |
|
| 否 | 音频格式,默认 |
|
| 否 | 音频采样率,使用 |
|
| 否 | 预编译热词列表 ID。 |
|
| 否 | 识别语言提示,最多使用前 4 个值;未设置时自动识别。 |
|
| 否 | 过滤语气词并润色结果,默认 |
|
| 否 | VAD 断句静音阈值(ms),范围 |
|
| 否 | 静音保活开关,默认 |
|
| 否 | 识别上下文。消息格式为 |
|
| 否 | 其他识别参数,如 |
|
| 否 | 建连超时(ms),默认 |
|
| 否 | 任务启动或结束的等待超时(ms),默认 |
|
| 否 | 近场或远场 VAD,默认 |
|
| 否 | 保留方言表达,默认 |
|
| 否 | 即时热词:键为词,值为权重 |
|
| 否 | VAD 灵敏度阈值,范围 |
|
| 否 | 返回识别中间结果,默认 |
主要方法
方法 | 返回值 | 说明 |
|---|---|---|
|
| 启动识别任务,完成后可发送音频。 |
|
| 按配置的格式和采样率发送音频帧。 |
|
| 在任务启动后、结束输入前更新识别上下文。 |
|
| 结束音频输入并等待任务完成,文本通过回调返回。 |
|
| 关闭连接并释放任务资源。 |
回调事件
通过 on(event, listener) 注册回调;完整事件字段见服务端事件。
事件 | 负载 | 说明 |
|---|---|---|
|
| 任务已启动,可发送输入。 |
|
| 中间或最终句子,已过滤心跳结果。 |
|
| 最终句子, |
|
| 任务已结束,本地任务状态已清理。 |
|
| 调用错误,包含 |
|
| 底层连接关闭通知。 |
|
| 原始服务端 JSON 消息。 |