准确的语音识别结果能够让 AI 更好地理解用户意图,从而提供更精准的服务。本文将介绍如何提高语音识别 ASR 的准确性。
开启二遍识别
开启二遍识别后,在双向流式实时返回逐字文本的基础上,当用户说话的停顿时间超过 ASRConfig.VADConfig.SilenceTime 时,系统会对分句音频再进行一次识别(此次识别为流式输入、非流式输出)。既满足用户实时上屏需求(快),又可以保证识别准确率(准)。
调用 StartVoiceChat 时,需将 StreamMode 设置为 2,并开启二次识别。
- 参数直传:在 ProviderParams 中设置 StreamMode: 2 和 enable_nonstream: true。
// ... ProviderParams ...
"enable_nonstream": true
- 参数透传:在 ProviderParams 中设置 StreamMode: 2,并在 VolcanoASRParameters 中透传 "enable_nonstream": true。
"VolcanoASRParameters": "{\"request\":{\"enable_nonstream\":true}}",
在多人交谈或背景人声嘈杂的环境中,AI 可能会因采集到非目标用户的语音而产生误识别或错误打断。您可通过声纹功能,让 AI 只响应特定用户的指令,从而提升语音交互的准确性和安全性。
语音降噪
通过调整音量增益、开启 AI 降噪、声纹降噪或远场人声抑制等,在嘈杂环境下滤除环境噪音,提升语音识别准确性。具体操作,请参见语音降噪。 调整 VAD 配置
VAD 可用于判断用户是否开始说话以及何时结束说话。不合理的 VAD 配置可能导致句子被错误地截断或合并,从而影响识别准确率。
调用 StartVoiceChat 时,配置 ASRConfig.VADConfig:
"SilenceTime": 800, // 如果用户语速较慢或停顿较多,可适当调大
使用热词
注意
仅豆包语音流式语音识别大模型支持热词功能。
对于业务中常见的专有名词、人名、产品名、特定术语等,ASR 可能难以准确识别。通过配置热词,可以显著提高这些词汇的识别准确率。
具体配置如下:
仅支持直接在 API 请求中通过 JSON 字符串直接传入一个或多个热词。
- 限制:最大 200 tokens,超出会自动截断。
"context": "{\"hotwords\": [{\"word\": \"智能客服\"},{\"word\": \"数字人\"},{\"word\": \"火山大陆\"}]}"
"VolcanoASRParameters": "{\\"request\\":{\\"corpus\\":{\\"context\\":\\"{\\\\\\"hotwords\\\\\\":[{\\\\\\"word\\\\\\":\\\\\\"火山引擎\\\\\\"}]}\\"}}}",
通过词表 ID 或名称在 API 请求中指定预先创建的热词词表。适合热词较多或需要动态管理的场景。
- 在 ProviderParams 中传入 boosting_table_id 或 boosting_table_name。
- boosting_table_id 和 boosting_table_name 不可同时设置。热词直传 (context) 的执行优先级高于热词词表。
// ... AppId, AccessToken ...
"boosting_table_id": "YOUR_HOTWORD_TABLE_ID"
// 或 "boosting_table_name": "YourHotwordTableName"
- 在 VolcanoASRParameters 中传入 boosting_table_id 或 boosting_table_name。
- boosting_table_id 和 boosting_table_name 不可同时设置。热词直传 (context) 的执行优先级高于热词词表。
使用替换词
通过替换词功能可以将 ASR 识别出的特定词汇替换为预期的标准词汇,常用于纠错、脱敏或别名替换。比如“二零二三年”替换为“2023年”。
替换词的执行优先级低于热词。即如果一个词同时是热词和替换词的源词,优先执行热词,再执行替换词。例如,原词为“智立”:
- 若热词有“致力”,替换词要求“智立→治理”,最后结果为 “致力”。
- 若热词有“致力”,替换词要求“致力→治理”,最后结果为 “治理”。
仅豆包语音流式语音识别大模型支持替换词功能。
- 调用 StartVoiceChat 时,在 ProviderParams 中传入 correct_table_id 或 correct_table_name。correct_table_id 和 correct_table_name 不可同时设置。
// ... AppId, AccessToken ...
"correct_table_id": "YOUR_CORRECT_TABLE_ID"
// 或 "correct_table_name": "YourCorrectTableName"
- 通过 VolcanoASRParameters 字段透传原生 ASR API 的替换词表参数。
- 调用 StartVoiceChat 时,在 VolcanoASRParameters 中透传 correct_table_id 或 correct_table_name。
"VolcanoASRParameters": "{\"request\":{\"corpus\":{\"correct_table_id\":\"YOUR_CORRECT_TABLE_ID\"}}}",
上下文轮次
将最近指定轮次的对话内容作为上下文信息送入流式语音识别大模型,有助于模型理解当前对话的背景,从而可能提升对后续输入的识别准确性。
说明
- 仅豆包语音流式语音识别大模型支持上下文轮次功能。
- 增加上下文轮数可能会略微增加处理开销,需根据实际效果进行调整。
- 调用 StartVoiceChat 时,在 ProviderParams 中传入 context_history_length。
"context_history_length": 10 // 将最近 10 轮对话作为上下文传入流式语音识别大模型
- 调用 StartVoiceChat 时,在 ProviderParams 中传入 ContextHistoryLength。
"ContextHistoryLength": 10 // 将最近 10 轮对话作为上下文传入流式语音识别大模型