Skip to content

讯飞浏览器端实时语音识别(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_SECRETstring在讯飞开放平台申请的 API Secret
APPIDstring在讯飞开放平台申请的 APPID
API_KEYstring在讯飞开放平台申请的 API Key

xunfeiLat.create(businessParams?, sectionDelayParams?)

创建语音识别控制器实例。

businessParams

参数类型默认值说明
languagezh_cn / en_uszh_cn语种
domainstringiat应用领域
accentstringmandarin方言
vad_eosnumber3600000后端点检测静默时间,单位毫秒
dwawpgswpgs动态修正,仅中文普通话支持
pdstring-领域个性化参数
ptt0 / 1-是否开启标点符号添加
rlangzh-cn / zh-hk-字体,仅中文支持
vinfo0 / 1-是否返回子句端点偏移值
nunum0 / 1-数字格式规则
speex_sizenumber-speex 音频帧长
nbestnumber-句子多候选结果,范围 1-5
wbestnumber-词语多候选结果,范围 1-5

sectionDelayParams

参数类型默认值说明
autoControlbooleantrue是否自动按静默延迟结束录音
initialDelaynumber3500首次延迟时间,单位毫秒
subsequentDelaynumber3000后续延迟时间,单位毫秒

实例方法

方法说明
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()