本文介绍提高语音识别(ASR)准确性的方法,帮助开发者优化语音识别效果。
设备端的音频采集质量直接影响语音识别的效果,为便于问题定位与持续优化,设备端需具备本地音频 dump 功能,结合上行音频数据实现全链路分析。
使用说明:
你可以结合 Agent 的使用场景,将产品名称、专业术语等配置为热词,以便提高这些关键词的识别率。例如扣子、硝酸甘油、宫保鸡丁等。
使用限制:
配置方法:
chat.update 上行事件中,在 data.asr_config.hot_words 参数中配置热词,具体的事件说明可参考更新对话配置。session.update 上行事件中,在 data.asr_config.hot_words 参数中配置热词,具体的事件说明可参考更新房间配置。示例代码:
{
"data": {
"asr_config": {
"hot_words": [
// 疾病与症状
"心绞痛", "心肌梗死", "高血压", "心律失常", "胸闷", "气短", "心悸", "头晕",
// 药物与治疗
"硝酸甘油", "阿司匹林", "他汀", "β受体阻滞剂", "支架植入", "搭桥手术",
// 身体部位与检查
"冠状动脉", "心血管", "心电图", "心脏彩超", "CT血管成像"
]
}
}
}
你可以配置上下文信息,为语音识别提供对话背景信息,以便模型结合上下文预测和理解当前语音内容,尤其适用于多轮对话场景。
使用限制:
配置方法:
chat.update 上行事件中,在 data.asr_config.context 参数中配置上下文信息,具体的事件说明可参考更新对话配置。session.update 上行事件中,在 data.asr_config.context 参数中配置上下文信息,具体的事件说明可参考更新房间配置。示例代码:
{
"data": {
"asr_config": {
"context": "顾客正在川菜馆点餐,已经点了水煮鱼和麻婆豆腐,现在在询问招牌菜和辣度选择。",
"hot_words": ["麻辣香锅", "微辣", "中辣", "特辣", "招牌菜"],
"enable_ddc": true, // 可选,是否保留语气词(默认true,需保留时设为false)
"enable_itn": true // 可选,是否开启数字格式转换(默认true,需保留汉字数字时设为false)
}
}
}
在异步语音消息场景中,用户通过点击按钮开始录音,松开按钮结束并发送,识别结果无需逐字实时显示,只需最终准确转写。此时你可以设置为单向流式模式,该模式会整合整句音频信息做上下文分析,减少实时截断导致的误差,提升准确率,且不会逐字返回结果,而是等整段语音结束后统一输出完整文本。
配置方法:
chat.update 上行事件中,将 data.asr_config.stream_mode 参数设置为output_no_stream,具体的事件说明可参考更新对话配置。session.update 上行事件中,将 data.asr_config.stream_mode 参数设置为output_no_stream,具体的事件说明可参考更新房间配置。示例代码:
"asr_config": {
"stream_mode": "output_no_stream",
"hot_words": ["会议纪要", "项目进度", "责任人"], // 可选,场景相关热词,提升关键信息识别率
"context": "当前正在进行项目周会,讨论上周完成情况及本周计划,参会人员包括产品、开发和测试团队", // 可选,提供对话背景
"enable_ddc": true, // 可选,保留语气词(如"嗯""好的"),默认true
"enable_itn": true // 可选,开启数字格式转换(如"一百"转"100"),默认true
}
当设置 stream_mode 为 bidirectional_stream 时,我们可以通过开启二次识别模式提升结果的识别准确率。
配置方法:
chat.update 上行事件中,将 data.asr_config.enable_nostream 参数设置为 true,具体的事件说明可参考更新对话配置。session.update 上行事件中,将 data.asr_config.enable_nostream 参数设置为 true,具体的事件说明可参考更新房间配置。示例代码:
"asr_config": {
"stream_mode": "bidirectional_stream",
"enable_nostream": true, // 可选,开启二遍模式,默认为 false
}
通过参数指定需要识别的语种。具体请参见更新对话配置(WebSocket)或更新房间模式(RTC)上行事件中的 user_language。
问题描述: “嗯嗯” 等语气词没有被识别。
解决方案:
在语音通话上行事件中,将 data.asr_config.enable_ddc 设置为 false,扣子编程将不会对语音识别结果中的语气词进行处理,识别结果会保留原始的语气词。事件详情请参见:
问题描述: 数字转换成阿拉伯数字而非汉语数字,例如一百美元被转换为 $100。
解决方案:
在语音通话上行事件中,将 data.asr_config.enable_itn 设置为 false,关闭文本规范化处理。事件详情请参见:
语音识别目前支持的语种如下,具体请参见更新对话配置(WebSocket)或更新房间模式(RTC)上行事件中的 user_language。