Appearance
讯飞浏览器端实时语音识别(LAT/ASR)工具库,支持麦克风采集、音频处理、WebSocket 识别、实时文本和最终文本事件。
安装
bash
pnpm add @mingto/xunfei-lat快速开始
typescript
import xunfeiLat from '@mingto/xunfei-lat'
xunfeiLat.config({
API_SECRET: 'your-api-secret',
APPID: 'your-app-id',
API_KEY: 'your-api-key',
})
const latInstance = xunfeiLat.create(
{
language: 'zh_cn',
domain: 'iat',
accent: 'mandarin',
},
{
autoControl: true,
initialDelay: 3500,
subsequentDelay: 3000,
}
)
latInstance
.on('appResponseText', (text) => {
console.log('实时识别:', text)
})
.on('appResultText', (text) => {
console.log('最终结果:', text)
})
.on('appFinish', () => {
console.log('识别结束')
})
latInstance.start()
setTimeout(() => {
latInstance.end()
}, 5000)API
xunfeiLat.config(systemConfig)
配置讯飞平台认证参数,返回当前模块对象,支持链式调用。调用 create() 前必须先调用 config()。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| API_SECRET | string | 是 | 在讯飞开放平台申请的 API Secret |
| APPID | string | 是 | 在讯飞开放平台申请的 APPID |
| API_KEY | string | 是 | 在讯飞开放平台申请的 API Key |
xunfeiLat.create(businessParams?, sectionDelayParams?)
创建语音识别控制器实例。
businessParams
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| language | zh_cn / en_us | zh_cn | 语种 |
| domain | string | iat | 应用领域 |
| accent | string | mandarin | 方言 |
| vad_eos | number | 3600000 | 后端点检测静默时间,单位毫秒 |
| dwa | wpgs | wpgs | 动态修正,仅中文普通话支持 |
| pd | string | - | 领域个性化参数 |
| ptt | 0 / 1 | - | 是否开启标点符号添加 |
| rlang | zh-cn / zh-hk | - | 字体,仅中文支持 |
| vinfo | 0 / 1 | - | 是否返回子句端点偏移值 |
| nunum | 0 / 1 | - | 数字格式规则 |
| speex_size | number | - | speex 音频帧长 |
| nbest | number | - | 句子多候选结果,范围 1-5 |
| wbest | number | - | 词语多候选结果,范围 1-5 |
sectionDelayParams
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| autoControl | boolean | true | 是否自动按静默延迟结束录音 |
| initialDelay | number | 3500 | 首次延迟时间,单位毫秒 |
| subsequentDelay | number | 3000 | 后续延迟时间,单位毫秒 |
实例方法
| 方法 | 说明 |
|---|---|
| start() | 开始录音和识别 |
| end() | 停止接收新的录音数据,已录制数据继续处理 |
| watch() | 监听浏览器音频输入,当音量大于 20% 且系统离线时自动开始识别 |
| on(eventName, callback) | 订阅识别事件,返回当前实例 |
应用事件
| 事件名 | 说明 |
|---|---|
| appResponseText | 实时识别文本更新时触发 |
| appResultText | 最终识别文本产生时触发 |
| appFinish | 应用结束时触发 |
支持的常用参数值
语种
| 值 | 说明 |
|---|---|
| zh_cn | 中文,支持简单英文识别 |
| en_us | 英文 |
应用领域
| 值 | 说明 |
|---|---|
| iat | 日常用语 |
| medical | 医疗 |
| gov-seat-assistant | 政务坐席助手 |
| seat-assistant | 金融坐席助手 |
| gov-ansys | 政务语音分析 |
| gov-nav | 政务语音导航 |
| fin-nav | 金融语音导航 |
| fin-ansys | 金融语音分析 |
智能监听示例
typescript
const latInstance = xunfeiLat.create({
language: 'zh_cn',
domain: 'iat',
})
latInstance
.on('appResponseText', (text) => {
console.log('实时识别:', text)
})
.on('appResultText', (text) => {
console.log('最终结果:', text)
})
latInstance.watch()注意事项
- 需要先在讯飞开放平台获取 APPID、API_KEY、API_SECRET。
- 前端代码中不建议直接暴露密钥,生产环境建议通过服务端下发临时配置或代理请求。
- 首次使用需要用户授权麦克风权限。
watch()依赖浏览器navigator.mediaDevices.getUserMedia。- 当前实例没有公开
finish()方法,主动结束识别请调用end()。