UNPKG

@mt-utils/xunfei-lat

Version:

讯飞LAT 语音转文本

301 lines (232 loc) 9.56 kB
# @mt-utils/xunfei-lat 一个用于音频录制、处理、分割和通过网络请求发送音频数据的语音处理库。 ## 特点 - 支持音频录制和播放。 - 提供音频数据处理和编码转换。 - 实现音频数据分割,支持分块发送。 - 通过网络请求发送音频数据,并处理响应。 - 使用事件驱动模型来解耦各个组件。 ## 安装 ```bash pnpm install @mt-utils/xunfei-lat ``` ### 配置系统参数 配置必要的系统参数,这些参数通常在讯飞开放平台申请: ```javascript /** * 平台系统配置 */ const systemConfig = { /** * 在平台申请的密钥信息 */ API_SECRET: 'your_api_secret', /** * 在平台申请的APPID信息 */ APPID: 'your_appid', /** * 在平台申请的API_KEY信息 */ API_KEY: 'your_api_key' } // 配置系统参数 LatController.config(systemConfig) ``` ### 创建实例 创建 `LatController` 实例,并配置业务参数: ```javascript /** * 创建LatController实例 */ const latRequestParams = { /** * 语种 * - 'zh_cn': 中文(支持简单的英文识别) * - 'en_us': 英文 * - 其他小语种参数值需在控制台添加试用或购买后显示 */ language: 'zh_cn', /** * 应用领域 * - 'iat': 日常用语 * - 'medical': 医疗 * - 'gov-seat-assistant': 政务坐席助手 * - 'seat-assistant': 金融坐席助手 * - 'gov-ansys': 政务语音分析 * - 'gov-nav': 政务语音导航 * - 'fin-nav': 金融语音导航 * - 'fin-ansys': 金融语音分析 */ domain: 'iat', /** * 方言,当前仅在language为中文时,支持方言选择。 * - 'mandarin': 中文普通话、其他语种 * - 其他方言参数值需在控制台添加试用或购买后显示 */ accent: 'mandarin', /** * 用于设置后端点检测的静默时间,单位是毫秒。 * 默认2000(小语种除外,小语种不设置该参数默认为未开启VAD)。 */ vad_eos: 3600000, /** * 动态修正(仅中文普通话支持) * - 'wpgs': 开启流式结果返回功能 */ dwa: 'wpgs', /** * 领域个性化参数(仅中文支持) * - 'game': 游戏 * - 'health': 健康 * - 'shopping': 购物 * - 'trip': 旅行 */ pd: 'game', /** * 是否开启标点符号添加(仅中文支持) * - 1: 开启(默认值) * - 0: 关闭 */ ptt: 1, /** * 字体(仅中文支持) * - 'zh-cn': 简体中文(默认值) * - 'zh-hk': 繁体香港 */ rlang: 'zh-cn', /** * 返回子句结果对应的起始和结束的端点帧偏移值。 * - 0: 关闭(默认值) * - 1: 开启 */ vinfo: 0, /** * 数字格式规则为阿拉伯数字格式(中文普通话和日语支持) * - 0: 关闭 * - 1: 开启(默认值) */ nunum: 1, /** * speex音频帧长,仅在speex音频时使用 * - 1: 当speex编码为标准开源speex编码时必须指定 * - 2: 当speex编码为讯飞定制speex编码时不要设置 */ speex_size: 1, /** * 获取在发音相似时的句子多侯选结果。 * 取值范围[1,5],设置多候选会影响性能,响应时间延迟200ms左右。 */ nbest: 1, /** * 获取在发音相似时的词语多侯选结果。 * 取值范围[1,5],设置多候选会影响性能,响应时间延迟200ms左右。 */ wbest: 1 } /** * */ const sectionDelayParams = { /** * 是否自动控制延迟 */ autoControl: true, /** * 第一次延迟时间 */ initialDelay: 3000, /** * 后续延迟时间 */ subsequentDelay: 1000, /** * 识别为内容空是否继续延迟识别 */ isKeepRecognizingOnEmpty: true }; const latInstance = LatController.create(latRequestParams,sectionDelayParams) ``` ### 可用方法 #### 开始录音 > `latInstance.start()` 开始录音和识别 ##### 例子 ```javascript latInstance.start() ``` #### 结束录音 > `latController.finish()` 停止录音和识别 ##### 例子 ```javascript latInstance.finish() ``` ### 应用钩子 应用钩子事件允许您在特定时刻执行自定义逻辑。 | 钩子名称 | 触发时机 | 描述 | | :-------------- | :--------------------------------------------------------------------- | :--------------------------------- | | `appCreate` | 应用和所有的处理器被创建初始化时触发。 | 应用和所有的处理器被创建并初始化。 | | `appStart` | 第一个处理器进入运行状态时触发,也就是有一条源数据进入了第一个处理器。 | 第一个处理器开始处理数据。 | | `appFinish` | 应用被停止时触发。 | 应用的所有处理器都已停止运行。 | | `appResultText` | 识别结果事件触发。 | 处理识别到的文本结果。 | #### `appCreate` 当应用及其所有处理器被创建并初始化时,此事件被触发: ```javascript latInstance.on('appCreate', () => { console.log('应用及其处理器已成功创建并初始化。') }) ``` #### `appStart` 当第一个处理器接收到源数据并开始运行时,此事件被触发: ```javascript latInstance.on('appStart', () => { console.log('第一个处理器已接收到数据并开始处理。') }) ``` #### `appFinish` 当应用的所有处理器完成工作,应用被停止时,此事件被触发: ```javascript latInstance.on('appFinish', () => { console.log('应用已停止运行,所有处理器均已完成工作。') }) ``` #### `appResultText` 当应用处理并识别出文本结果时,此事件被触发: ```javascript latInstance.on('appResultText', () => { console.log('应用已输出识别到的文本结果。') }) ``` ### 参数与类型 #### SystemConfig | 参数 | 描述 | | :----------- | :---------------------- | | `API_SECRET` | 在平台申请的密钥信息 | | `APPID` | 在平台申请的APPID信息 | | `API_KEY` | 在平台申请的API_KEY信息 | #### LatRequestParams | 参数 | 描述 | 可选值 | 默认值 | | :----------- | :--------------------------------------------------- | :----------------------------------------------- | :----------- | | `language` | 语种 | `'zh_cn'`, `'en_us'`, 其他小语种 | `'zh_cn'` | | `domain` | 应用领域 | `'iat'`, `'medical'`, `'gov-seat-assistant'`, 等 | `'iat'` | | `accent` | 方言 | `'mandarin'`, 其他方言 | `'mandarin'` | | `vad_eos` | 后端点检测的静默时间,单位毫秒 | 任意正整数 | `2000` | | `dwa` | 动态修正(仅中文普通话支持) | `'wpgs'` | `'wpgs'` | | `pd` | 领域个性化参数(仅中文支持) | `'game'`, `'health'`, `'shopping'`, `'trip'` | `'game'` | | `ptt` | 是否开启标点符号添加(仅中文支持) | `1`, `0` | `1` | | `rlang` | 字体(仅中文支持) | `'zh-cn'`, `'zh-hk'` | `'zh-cn'` | | `vinfo` | 返回子句结果对应的起始和结束的端点帧偏移值 | `0`, `1` | `0` | | `nunum` | 数字格式规则为阿拉伯数字格式(中文普通话和日语支持) | `0`, `1` | `1` | | `speex_size` | speex音频帧长,仅在speex音频时使用 | `1`, `2` | `1` | | `nbest` | 获取在发音相似时的句子多侯选结果 | `[1,5]` | `1` | | `wbest` | 获取在发音相似时的词语多侯选结果 | `[1,5]` | `1` | #### SectionDelayParams | 参数 | 描述 | 类型 | 默认值 | | :------------------------- | :--------------------------- | :-------- | :------ | | `autoControl` | 是否自动控制延迟 | `boolean` | `true` | | `initialDelay` | 第一次延迟时间 | `number` | `3000` | | `subsequentDelay` | 后续延迟时间 | `number` | `1000` | | `isKeepRecognizingOnEmpty` | 识别为内容空是否继续延迟识别 | `boolean` | `false` | ## 注意 本工具库为内部工具库,不负责改BUG,请勿随便下载。