通过语音自适应改善转录结果

概览

您可以使用语音自适应功能,帮助 Speech-to-Text 更频繁地识别特定字词或短语,而不是其他建议的选项。例如,假设您的音频数据中出现“weather”一词的频率较高。当“Speech-to-Text”遇到“weather”一词时,您希望将该字词转录为“weather”,而不是“whether”。在这种情况下,您可以使用语音自适应功能,使 Speech-to-Text 更偏向于识别“weather”。

语音自适应功能对以下用例特别有帮助:

  • 提高识别音频数据中经常出现的字词和短语的准确率。例如,您可以提醒识别模型使用用户经常说出的语音指令。

  • 扩展 Speech-to-Text 的识别字词库。 Speech-to-Text 包含一个非常庞大的词汇表。但是,如果您的音频数据经常包含常规用语中很少使用的字词(例如专有名词或特定领域的字词),则可以使用语音自适应功能添加这些字词。

  • 提供的音频含有噪音或不太清晰时,提高语音转录的准确率。

(可选)您可以使用增强型语音自适应功能(Beta 版)微调识别模型的偏差。

改善对指定字词的识别

为提高 Speech-to-Text 在转录您的音频数据时识别出“weather”一词的概率,请在 SpeechContext 对象的 phrases 字段中传递“weather”。在发送到 Speech-to-Text API 的请求中将 SpeechContext 对象分配到 RecognitionConfig 对象的 speechContexts 字段。

下面的代码段显示了发送到 Speech-to-Text API 的 JSON 载荷的一部分。该 JSON 代码段提供语音自适应字词“weather”。

"config": {
    "encoding":"LINEAR16",
    "sampleRateHertz": 8000,
    "languageCode":"en-US",
    "speechContexts": [{
      "phrases": ["weather"]
    }]
}

改善多字词短语的识别效果

提供多字词短语时,Speech-to-Text 更有可能按顺序识别这些字词。提供短语还会提升识别短语中各部分(包括单个字词)的概率。请参阅内容限制页面,了解这些短语的数量和大小限制。

下面的代码段显示了发送到 Speech-to-Text API 的 JSON 载荷的一部分。该 JSON 代码段包含分配给 SpeechContext 对象中的 phrases 字段的一组多字词短语。

"config": {
    "encoding":"LINEAR16",
    "sampleRateHertz": 8000,
    "languageCode":"en-US",
    "speechContexts": [{
      "phrases": ["weather is hot", "weather is cold"]
    }]
}

使用类改善识别效果

代表自然语言中的常见概念,例如货币单位和日历日期。类让您可以提高大量字词组的转录准确率,这些字词组映射到常见概念,但不总是包含相同字词或词组。

例如,假设您的音频数据包含讲话人说出其街道地址的录音。您的某个录音可能是讲话人说“My house is 123 Main Street, the fourth house on the left”。在这种情况下,您希望 Speech-to-Text 将第一个数字序列(“123”)识别为地址而不是序号(“一百二十三”)。不过,并非所有人都住在“123 Main Street”。在一个 SpeechContext 对象中列出所有可能的街道地址是不切实际的。相反,您可以使用类来指示应该识别门牌号,无论这串数字实际是什么。在此示例中,Speech-to-Text 可以更准确地转录“123 Main Street”和“987 Grand Boulevard”等短语,因为它们都被识别为地址门牌号。

类令牌

如需在语音自适应中使用类,请在 SpeechContext 对象的 phrases 字段中添加类令牌。请参阅支持的类令牌列表,了解您的语言支持哪些类令牌。例如,如需改善源音频中地址门牌号的转录结果,请为 SpeechContext 对象提供值 $ADDRESSNUM

您可以将类用作 phrases 数组中的独立项,也可以将一个或多个类令牌嵌入到较长的多字词短语中。例如,您可以在较长的短语中以字符串的形式添加类令牌 ["my address is $ADDRESSNUM"],以指明地址门牌号。但是,如果音频中包含类似但不相同的短语,例如“I am at 123 Main Street”,则此短语无效。为帮助识别相似的短语,您可以额外添加同一个类令牌,如 ["my address is $ADDRESSNUM", "$ADDRESSNUM"]。如果您使用无效或格式错误的类令牌,Speech-to-Text 会忽略该令牌而不触发错误,但仍会使用短语的其余部分作为上下文。

以下代码段显示了发送至 Speech-to-Text API 的 JSON 载荷示例。该 JSON 代码段包含使用类令牌的 SpeechContext 对象。

  "config": {
    "encoding":"LINEAR16",
    "sampleRateHertz": 8000,
    "languageCode":"en-US",
    "speechContexts": [{
      "phrases": ["$ADDRESSNUM"]
     }]
  }

使用增强版(Beta 版)微调转录结果

默认情况下,语音自适应的影响相对较小,对单字词短语来说尤其如此。语音自适应增强功能允许您通过为某些短语分配比其他短语更高的权重来提高识别模型偏差。在以下情况下,我们建议您实现增强型功能:1) 已实现语音自适应;2) 您希望进一步调整语音自适应对转录结果的影响强度。如需查看增强型功能是否支持您的语言,请参阅语言支持页面

例如,您的很多录音中讲话人在询问“fare to get into the county fair”,其中“fair”一词出现的频率高于“fare”。在这种情况下,您可以使用语音自适应,通过将模型添加为 SpeechContext 对象中的短语来提高“fair”和“fare”的模型识别可能性。这会指示 Speech-to-Text 更频繁地识别“fair”和“fare”,而不是如“hare”或“lair”这些词。

不过,“fair”的识别频率要高于“fare”,因为它在音频中出现的频率更高。您可能已经使用 Speech-to-Text API 转录了音频,并发现在识别正确的字词(“fair”)时存在大量错误。在本例中,您可能需要使用增强型功能为“fair”指定比“fare”更高的增强值。为“fair”指定较高的权重值会使 Speech-to-Text API 选择“fair”的频率高于“fare”。如果没有增强值,识别模型将识别出具有相同概率的“fare”和“fare”。

增强基础知识

使用增强型功能时,您可以为 SpeechContext 对象中的 phrases 项指定权重值。Speech-to-Text 为音频数据中的字词选择可能的转录时,会参考此权重值。值越高,Speech-to-Text 从可能的备选项中选择该字词或短语的可能性就越大。

如果为多字词短语指定增强值,则增强型操作将应用于整个短语,而且仅应用于整个短语。例如,您想为短语“我最喜欢的美国自然历史博物馆的展览是蓝鲸”指定一个增强值。如果您向 SpeechContext 对象添加该短语并分配增强值,则识别模型更有可能完整地逐字识别该词组。

如果通过增强一个多单词短语没有得到想要的结果,我们建议将组成该短语的所有双字母组合(2个单词,按顺序)添加为附加 phrases 项,并为每个短语分配增强值。继续上面的例子,您可以研究添加额外的双字母和尾字母(超过 2 个字词),例如“我的最爱”、“我最爱的展览”、“最爱的展览”、“我最爱的美国自然历史博物馆展览”、“美国自然历史博物馆”、“蓝鲸”等。STT 识别模型更有可能识别音频中的相关短语,这些短语包含原始增强短语的一部分,但不能逐字匹配。

设置增强值

增强值必须是大于 0 的浮点值。增强值的实际上限为 20。为获得最佳转录结果,请通过向上或向下调整增强值来尝试转录结果,直到获得准确的转录结果。

较高的增强值可以减少假负例,假负例是指音频中出现的字词或短语未被 Speech-to-Text 正确识别的情况。但是,增强型功能也会增加出现假正例的可能性;假正例是指音频中不包含的字词或短语出现在转录中的情况。

增强型语音自适应示例

如需在语音转录请求中为“fair”和“fare”设置不同的增强值,请将两个 SpeechContext 对象设置为 RecognitionConfig 对象的 speechContexts 数组。对于每个 SpeechContext 对象(一个包含“fair”,另一个包含“fare”),请将 boost 值设置为非负浮点值。

以下代码段显示了发送至 Speech-to-Text API 的 JSON 载荷示例。该 JSON 代码段包含一个 RecognitionConfig 对象,该对象使用增强值对“fair”和“fare”字词赋予不同的权重。

"config": {
    "encoding":"LINEAR16",
    "sampleRateHertz": 8000,
    "languageCode":"en-US",
    "speechContexts": [{
      "phrases": ["fair"],
      "boost": 15
     }, {
      "phrases": ["fare"],
      "boost": 2
     }]
  }

后续步骤