使用短语列表提高识别准确度

短语列表是提前提供的字词或短语列表,可帮助改进识别。 向短语列表添加短语时,会增加其重要性,因此系统更有可能识别它。

Important

短语列表是在终结点级别应用的 运行时识别功能 。 它适用于:

  • 实时听录(语音 SDK、语音 CLI、语音工作室)
  • 快速转录 API
  • 语音实时 API

短语列表适用于基本和自定义语音终结点。 它不需要模型训练,并且无法进行批量听录。

短语的示例包括:

  • 名称
  • 地理位置
  • 同音词
  • 行业或组织独有的单词或首字母缩写词

短语列表简单且轻量级:

  • 实时:在开始语音识别之前提供短语列表,因此无需训练自定义模型。
  • 轻量级:无需大型数据集。 提供一个单词或短语即可提高其识别率。

可以通过 Speech Studio语音 SDK语音命令行界面 (CLI) 使用短语列表。 它们由 实时转录快速转录 API 提供支持。 批量转录 API 不支持短语列表。

可以将短语列表与基础(标准)端点和 自定义语音 端点配合使用。 在运行时应用短语列表,它不需要模型训练。 在某些情况下,需要训练包含短语的自定义模型以提高准确性。 例如,在以下情况下使用自定义语音:

  • 如果您需要使用大量短语。 短语列表不应超过 500 个短语。

短语列表权重

将语音 SDK 与实时听录结合使用时,可以控制相对于默认字典的短语列表短语的权重。 此设置确定短语列表对语音转文本结果的影响。

将短语列表权重设置在 0.02.0 的范围内:

  • 0.0:禁用短语列表
  • 1.0:默认权重(标准影响)
  • 2.0:最大权重(最高影响)

更高的权重会增加列表中短语相对于默认字典中其他选项被识别的可能性。 此设置适用于完整列表。

在 Speech Studio 中试用

使用 Speech Studio 测试短语列表如何提高音频的识别能力。 若要在生产环境中通过应用程序实现短语列表,请使用语音 SDK 或语音 CLI。

例如,假设您希望语音服务识别此句子:“Hi Rehaan,我是 Contoso bank 的 Jessie。

你可能会发现,一个短语被错误地识别为:“嗨,大家好,我是来自 can't do so bankJesse。”

在前面的方案中,你想要将“Rehaan”、“Jessie”和“Contoso”添加到短语列表中。 然后就能正确识别这些名称。

现在,请尝试 Speech Studio 查看短语列表如何提高识别准确性。

备注

系统可能会提示你选择你的 Azure 订阅和语音资源,然后确认你所在区域的计费。

  1. 转到 Speech Studio 中的“实时语音转文本”。
  2. 通过上传音频文件或使用麦克风录制音频来测试语音识别。 例如,选择“使用麦克风录制音频”,然后说“你好 Rehaan,我是 Contoso 银行的 Jessie。” 然后按下红色按钮停止录制。
  3. 可在“ 测试结果 ”文本框中看到听录结果。 如果无法正确识别“Rehaan”、“Jessie”或“Contoso”,请在下一步将术语添加到短语列表中。
  4. 选择“显示高级选项”并打开“短语列表”。
  5. 在短语列表文本框内输入“Contoso;Jessie;Rehaan”。 用分号分隔多个短语。 Speech Studio 中应用的短语列表的屏幕截图。
  6. 使用麦克风再次测试识别能力。 否则,请选择音频文件旁边的重试箭头以重新运行音频。 应识别词“Rehaan”、“Jessie”或“Contoso”。

在实时听录中实现短语列表

通过使用 语音 SDK,可以一次添加一个短语,然后运行语音识别。

var phraseList = PhraseListGrammar.FromRecognizer(recognizer);
phraseList.AddPhrase("Contoso");
phraseList.AddPhrase("Jessie");
phraseList.AddPhrase("Rehaan");
phraselist.SetWeight(weight);

通过使用 语音 SDK,可以一次添加一个短语,然后运行语音识别。

auto phraseListGrammar = PhraseListGrammar::FromRecognizer(recognizer);
phraseListGrammar->AddPhrase("Contoso");
phraseListGrammar->AddPhrase("Jessie");
phraseListGrammar->AddPhrase("Rehaan");
phraselist->SetWeight(weight);

通过使用 语音 SDK,可以一次添加一个短语,然后运行语音识别。

PhraseListGrammar phraseList = PhraseListGrammar.fromRecognizer(recognizer);
phraseList.addPhrase("Contoso");
phraseList.addPhrase("Jessie");
phraseList.addPhrase("Rehaan");
phraseList.setWeight(weight);

通过使用 语音 SDK,可以一次添加一个短语,然后运行语音识别。

const phraseList = sdk.PhraseListGrammar.fromRecognizer(recognizer);
phraseList.addPhrase("Contoso");
phraseList.addPhrase("Jessie");
phraseList.addPhrase("Rehaan");
phraseList.setWeight(weight);

通过使用 语音 SDK,可以一次添加一个短语,然后运行语音识别。

phrase_list_grammar = speechsdk.PhraseListGrammar.from_recognizer(reco)
phrase_list_grammar.addPhrase("Contoso")
phrase_list_grammar.addPhrase("Jessie")
phrase_list_grammar.addPhrase("Rehaan")
phraseList.setWeight(weight)

通过使用 语音 SDK,可以一次添加一个短语,然后运行语音识别。

phraseListGrammar, err := speech.NewPhraseListGrammarFromRecognizer(recognizer)
if err != nil {
  // Handle error.
}
defer phraseListGrammar.Close()

phraseListGrammar.AddPhrase("Contoso")
phraseListGrammar.AddPhrase("Jessie")
phraseListGrammar.AddPhrase("Rehaan")
phraseListGrammar.SetWeight(weight)

通过使用 语音 CLI,可以将短语列表与行内或文本文件一起包含在命令中 recognize

尝试从麦克风或音频文件中识别。

spx recognize --microphone --phrases "Contoso;Jessie;Rehaan;"
spx recognize --file "your\path\to\audio.wav" --phrases "Contoso;Jessie;Rehaan;"

还可以使用包含每行一个短语的文本文件添加短语列表。

spx recognize --microphone --phrases @phrases.txt
spx recognize --file "your\path\to\audio.wav" --phrases @phrases.txt

允许的字符包括特定于区域设置的字母和数字、空格字符以及特殊字符,例如 +、-、$、:、(, )、{, }、_、,、?、@、\、’、&、#、%、^、*、`、<、>、;、/。 系统从短语中删除其他特殊字符。

在快速转录中应用短语列表

可以通过 语音转文本 REST API 在快速听录中添加短语列表。

curl --location 'https://YourResourceName.cognitiveservices.azure.cn/speechtotext/transcriptions:transcribe?api-version=2025-10-15' \
--header 'Ocp-Apim-Subscription-Key: YourSpeechResourceKey' \
--form 'audio=@"YourAudioFile"' \
--form 'definition={
  "locales": ["en-US"],
  "phraseList": {
    "phrases": ["Contoso", "Jessie", "Rehaan"]
  }
}'

后续步骤

详细了解用于提高识别准确性的选项。

自定义语音