IBM Cloud Docs
了解语音识别结果

了解语音识别结果

无论您使用何种接口,IBM Watson® Speech to Text 服务都会返回反映您指定的参数的转录结果。 服务会以 UTF-8 字符集返回所有 JSON 响应内容。

基本转录响应

对于 发出语音识别请求 中的示例,服务将返回以下响应。 这些示例仅传递音频文件及其内容类型。 音频读的是单个句子,词与词之间没有明显停顿。

{
  "result_index": 0,
  "results": [
    {
      "alternatives": [
        {
          "confidence": 0.96,
          "transcript": "several tornadoes touch down as a line of severe thunderstorms swept through Colorado on Sunday "
        }
      ],
      "final": true
    }
  ]
}

服务返回了 SpeechRecognitionResults 对象,这是顶级响应对象。 对于这些简单请求,该对象包含一个 results 字段和一个 result_index 字段:

  • results 字段提供有关转录结果的信息的数组。 对于此示例,alternatives 字段包含 transcript 以及服务对结果的置信度 (confidence)。 final 字段的值为 true,指示这些结果不会更改。
  • result_index 字段提供结果的唯一标识。 此示例显示了请求的最终结果,其中包含没有停顿的单个音频文件,并且请求不包含其他参数。 因此,服务返回了值为 result_index 的单个 0 字段,这始终为初始索引。

如果输入音频较复杂,或者请求包含其他参数,那么结果包含的信息可能会多得多。

alternatives 字段

alternatives 字段提供有关转录结果的数组。 对于此请求,数组仅包含一个元素。

  • transcript 字段提供转录的结果。
  • confidence 字段是一个分数,用于指示服务对抄本的置信度,对于此示例,此置信度超过 90%。

finalresult_index 字段限定了这些字段的含义。

服务的内部更改和改进可能会影响文字记录和置信度分数。 例如,可以改进语音识别以返回更精确的转录结果。 类似地,由于语音识别的改进,文字记录和单词置信度分数可能会略有变化。 这种变化预计是温和的,但不要预期成绩单和信心得分会随着时间的推移而保持不变。

final 字段

final 字段指示文字记录是否显示的是最终转录结果:

  • 对于最终结果,此字段为 true,这些结果保证不会更改。 服务不会发送更多更新以获取最终结果。
  • 对于中间结果,此字段为 false,这些结果会随时更改。 如果将 interim_results 参数与 WebSocket 接口配合使用,那么服务会在转录音频时以多个 results 字段的形式返回不断变化的假设。 对于临时结果,final 字段始终为 false,而 confidence 字段始终为省略。

有关使用 WebSocket 接口获取大型语音模型,前代和下一代模型的临时结果的更多信息,请参阅以下主题:

result_index 字段

result_index 字段提供对该请求唯一的结果标识。 如果请求中间结果,那么服务会发送多个 results 字段,以表示输入音频不断变化的假设。 同一音频的中间结果的索引始终具有相同的值,同一音频的最终结果的索引值也相同。

同一索引还可用于单个请求的多个最终结果。 无论您是否请求临时结果,如果您的音频包含暂停或长时间静默,那么服务都可以返回具有相同索引的多个最终结果。 有关更多信息,请参阅停顿和静默

收到任何音频的最终结果后,服务就不会再对该请求的其余部分发送具有该索引的进一步结果。 任何进一步结果的索引都将递增 1。

如果音频生成了多个最终结果,请将最终结果的 transcript 元素连接在一起,以组合成音频的完整转录。 按接收结果的顺序组合结果。 组装完整的最终抄本时,可以忽略 final 字段为 false 的临时结果。

其他响应内容

许多语音识别参数会影响服务响应的内容。 某些参数可能导致服务返回多个转录结果:

  • end_of_phrase_silence_time
  • interim_results
  • split_transcript_at_phrase_end

某些参数可以修改文字记录的内容:

  • profanity_filter
  • redaction
  • smart_formatting

其他参数可以向结果添加更多信息:

  • audio_metrics
  • keywordskeywords_threshold
  • max_alternatives
  • processing_metricsprocessing_metrics_interval
  • speaker_labels
  • timestamps
  • word_alternatives_threshold
  • word_confidence

有关可用参数的更多信息,请参阅 使用语音识别参数参数摘要

停顿和静默

服务返回结果的方式取决于用于语音识别的接口和模型,以及传递到服务的音频。 缺省情况下,服务会将整个音频流转录为单个发声,并返回所有音频的单个最终结果。 但是,服务可以返回多个最终结果以响应以下条件:

  • 音频包含口语单词或短语之间的暂停或扩展静默。 对于大多数语言,服务用于确定单独最终结果的缺省暂停时间间隔为 0.8 秒。 对于中文,缺省时间间隔为 0.6 秒。 您可以使用 end_of_phrase_silence_time 参数来更改暂停时间间隔的持续时间。 有关更多信息,请参阅短语结束静默时间
  • 对于先前生成的模型, 发声最多达到两分钟。 服务会在连续处理两分钟后将抄本拆分为多个最终结果。

以下示例显示了来自 HTTP 和 WebSocket 接口的包含两个最终结果的响应。 这两种情况使用的输入音频相同。 音频读的是短语“one two three four five six”,在词“three”和“four”之间有 1 秒停顿。 这些示例使用缺省停顿时间间隔进行语音识别。

  • 对于 HTTP 接口, 服务始终发送单个 SpeechRecognitionResults 对象。 alternatives 数组对于每个最终结果都有一个单独的元素。 响应具有单个 result_index 字段,其值为 0

    {
      "result_index": 0,
      "results": [
        {
          "alternatives": [
            {
              "confidence": 0.99,
              "transcript": "one two three "
            }
          ],
          "final": true
        },
        {
          "alternatives": [
            {
              "confidence": 0.99,
              "transcript": "four five six "
            }
          ],
          "final": true
        }
      ]
    }
    
  • 对于 WebSocket 接口, 服务发送与先前示例相同的结果。 响应包含单个 SpeechRecognitionResults 对象,alternatives 数组针对每个最终结果具有单独的元素,并且响应具有值为 0 的单个 result_index 字段。

    {
      "result_index": 0,
      "results": [
        {
          "alternatives": [
            {
              "confidence": 0.99,
              "transcript": "one two three "
            }
          ],
          "final": true
        },
        {
          "alternatives": [
            {
              "confidence": 0.99,
              "transcript": "four five six "
            }
          ],
          "final": true
        }
      ]
    }
    

    通过 WebSocket 接口,临时结果的响应包含更多 JSON 对象。 有关使用 WebSocket 接口获取大型语音模型,前代和下一代模型的临时结果的更多信息,请参阅以下主题:

在流式音频中保持 30 秒的静默可能会导致不活动超时。 有关更多信息,请参阅超时

言语犹豫和犹豫标记

言语往往包括犹豫或言语停顿,这也被称为不流利。 当用户在说话时插入诸如 "uhm",“呃”,"hmm" 以及相关的非词法话语时,会出现犹豫。 对于大型语音模型,前代和下一代模型,该服务会以不同方式处理犹豫。

上一代模型的犹豫

对于先前生成的模型,该服务在大多数语言的转录结果中包含犹豫标记。 不同的语言可以使用不同的犹豫标记或根本不表示犹豫:

  • 对于美式英语, 迟疑标记由标记 %HESITATION 指示。 生成犹豫标记的词包括 aahahhmhmmhuhhuh-uhhumohhughuhuh-huhuh-ohuh-uhumum-hum
  • 对于日语, 迟疑标记通常以 D_ 开头。
  • 对于西班牙语, 服务不会生成犹豫标记。

以下示例显示了美式英语抄本的标记 %HESITATION :

{
  "result_index": 0,
  "results": [
    {
      "alternatives": [
        {
          "confidence": 0.99,
          "transcript": ". . . that %HESITATION that's a . . ."
        }
      ],
      "final": true
    }
  ]
}

迟疑标记可以同时出现在中间结果和最终结果中。 启用智能格式化可防止犹豫标记出现在美式英语的最终结果中。 有关更多信息,请参阅智能格式设置

迟疑标记还可以出现在文字记录的其他字段中。 例如,如果为文字记录中的单个词请求了词时间戳记,那么服务会报告每个迟疑标记的开始时间和结束时间。

{
  "result_index": 0,
  "results": [
    {
      "alternatives": [
        {
          "timestamps": [
            . . .
            [
              "that",
              7.31,
              7.69
            ],
            [
              "%HESITATION",
              7.69,
              7.98
            ],
            [
              "that's",
              7.98,
              8.41
            ],
            [
              "a",
              8.41,
              8.48
            ],
            . . .
          ],
          "confidence": 0.99,
          "transcript": ". . . that %HESITATION that's a . . ."
        }
      ],
      "final": true
    }
  ]
}

除非您需要将这些迟疑标记用于应用程序,否则可以从文字记录中安全地过滤掉迟疑标记。

下一代模型的犹豫

对于下一代模型,该服务会在所有转录结果中包含实际的犹豫词。 下一代模型将迟疑视为单词,因此迟疑可以出现在临时结果,最终结果和其他字段 (例如单词时间戳记的结果) 中。 下一代模型不会产生犹豫标记,启用智能格式化不会导致从最终结果中移除犹豫。 不同的语言可以识别不同的犹豫词:

  • 对于美式英语, 常见的犹豫词 (如先前生成的模型) 为 aahahhmhmmhuhhuh-uhhumohhughuhuh-huhuh-ohuh-uhumum-hum。 并非所有这些犹豫词都可能出现在成绩单中。
  • 对于日语, 犹豫词通常由半宽字符组成,例如 アノーウーンエートンート。 某些犹豫可能会被识别为全宽字符。

要增加在响应中看到犹豫的可能性,可以使用定制语言模型。 在定制模型中,添加包含犹豫的语料库或创建其声音喜欢的定制词来捕获用户表示不流畅的方式。 有关定制语言模型的更多信息,请参阅 创建定制语言模型

以下示例显示了美国英语抄本中的犹豫 "uhm":

{
  "result_index": 0,
  "results": [
    {
      "alternatives": [
        {
          "confidence": 0.99,
          "transcript": ". . . that uhm that's a . . ."
        }
      ],
      "final": true
    }
  ]
}

首字母大写

对于大多数语言,服务不会在响应文字记录中使用首字母大写。 如果首字母大写对于应用程序很重要,那么必须对每个句子的第一个词以及需要首字母大写的其他任何词汇进行首字母大写。

该服务仅对以下语言和模型应用自动大写。 无论您是否使用智能格式化,服务都将始终应用此大写形式。

  • 对于美国英语前代模型, 服务会将许多正确的名词大写。 例如,对于 barack obama from columbia university短语,服务会返回以下抄本:

    Barack Obama graduated from Columbia University
    

    该服务不会利用下一代模型为美式英语提供适当的名词。

  • 对于德国下一代模型, 该服务会利用许多名词。 例如,对于短语 er braucht erst einen Neuen eing ins vokabular punkt,服务将返回以下文字记录:

    er braucht erst einen neuen Eintrag ins Vokabular Punkt
    

    该服务不会将德语的名词与先前生成的模型结合使用。

标点符号

缺省情况下,服务不会在响应文字记录中插入标点。 您必须向服务结果添加所需的任何标点。

对于某些语言,可以使用智能格式设置来指导服务使用标点符号(例如,逗号、句点、问号和惊叹号)替代特定关键字字符串。 有关更多信息,请参阅智能格式设置