助手
扣子 AI 帮助与支持
你好,我是 扣子 文档问答助手 🎉 你在阅读当前文档的过程中,无论对文档概念的解释,还是文档内容方面的疑问,都可以随时向我提问,我会全力为你解答
推荐问题
如何快速了解这个空间的核心内容?
有哪些近期更新的重点文档?
我应该从哪些文档开始阅读?
文档反馈

提高语音识别的准确性

更新于: 2026-06-24 15:47:07

本文介绍提高语音识别(ASR)准确性的方法,帮助开发者优化语音识别效果。

优化设备端音频采集

设备端的音频采集质量直接影响语音识别的效果,为便于问题定位与持续优化,设备端需具备本地音频 dump 功能,结合上行音频数据实现全链路分析。
使用说明

  • 需要实现设备端音频采集和存储功能,完整录制并保存原始音频数据。
  • 需保障上行音频质量:优先选用带降噪、回声消除的麦克风,避免靠近扬声器。启用自动增益控制、环境噪声抑制等预处理,确保上行音频无明显杂音、断连或音量异常。

配置热词

你可以结合 Agent 的使用场景,将产品名称、专业术语等配置为热词,以便提高这些关键词的识别率。例如扣子、硝酸甘油、宫保鸡丁等。
使用限制

  • 所有热词加起来最多100个Tokens,超出部分将自动截断。
  • 不要将日常通用词设置为热词,例如你好、谢谢等。

配置方法

  • WebSocket 语音通话:
    chat.update 上行事件中,在 data.asr_config.hot_words 参数中配置热词,具体的事件说明可参考更新对话配置
  • RTC 语音通话:
    session.update 上行事件中,在 data.asr_config.hot_words 参数中配置热词,具体的事件说明可参考更新房间配置

示例代码:

{
  "data": {
    "asr_config": {
      "hot_words": [
        // 疾病与症状
        "心绞痛", "心肌梗死", "高血压", "心律失常", "胸闷", "气短", "心悸", "头晕",
        // 药物与治疗
        "硝酸甘油", "阿司匹林", "他汀", "β受体阻滞剂", "支架植入", "搭桥手术",
        // 身体部位与检查
        "冠状动脉", "心血管", "心电图", "心脏彩超", "CT血管成像"
      ]
    }
  }
}

配置上下文

你可以配置上下文信息,为语音识别提供对话背景信息,以便模型结合上下文预测和理解当前语音内容,尤其适用于多轮对话场景。
使用限制

  • 最多输入 800 个 Tokens,超出部分将自动截断。
  • 上下文内容应与当前对话内容相关。

配置方法

  • WebSocket 语音通话:
    chat.update 上行事件中,在 data.asr_config.context 参数中配置上下文信息,具体的事件说明可参考更新对话配置
  • RTC 语音通话:
    session.update 上行事件中,在 data.asr_config.context 参数中配置上下文信息,具体的事件说明可参考更新房间配置

示例代码:

{
  "data": {
    "asr_config": {
      "context": "顾客正在川菜馆点餐,已经点了水煮鱼和麻婆豆腐,现在在询问招牌菜和辣度选择。",
      "hot_words": ["麻辣香锅", "微辣", "中辣", "特辣", "招牌菜"],
      "enable_ddc": true,  // 可选,是否保留语气词(默认true,需保留时设为false)
      "enable_itn": true   // 可选,是否开启数字格式转换(默认true,需保留汉字数字时设为false)
    }
  }
}

采用单向流式模式

在异步语音消息场景中,用户通过点击按钮开始录音,松开按钮结束并发送,识别结果无需逐字实时显示,只需最终准确转写。此时你可以设置为单向流式模式,该模式会整合整句音频信息做上下文分析,减少实时截断导致的误差,提升准确率,且不会逐字返回结果,而是等整段语音结束后统一输出完整文本。
配置方法

  • WebSocket 语音通话:
    chat.update 上行事件中,将 data.asr_config.stream_mode 参数设置为output_no_stream,具体的事件说明可参考更新对话配置
  • RTC 语音通话:
    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 时,我们可以通过开启二次识别模式提升结果的识别准确率。
配置方法

  • WebSocket 语音通话:
    chat.update 上行事件中,将 data.asr_config.enable_nostream 参数设置为 true,具体的事件说明可参考更新对话配置
  • RTC 语音通话:
    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