关键字识别和词替代项
IBM Watson® Speech to Text 服务可以在转录结果中识别用户指定的关键词。 它还可以提供与文本中的单词发音相似的替代词。 在这两种情况下,关键词和替代词必须满足用户指定的置信度。
关键字识别
keywords
和 keywords_threshold
参数仅适用于上一代车型,不适用于下一代车型。
关键字识别功能用于在文字记录中检测指定的字符串。 服务可能多次识别到同一个关键字,并且每次识别到时都会进行报告。 但服务仅在最终结果中(而不是在中间结果中)识别关键字。 缺省情况下,服务不会执行关键字识别。
要使用关键字识别,必须同时指定以下两个参数:
-
使用
keywords
参数来指定要识别的字符串的数组。 如果省略此参数或指定空数组,那么服务不会识别任何关键字。 一个关键字字符串可以包含多个记号。 例如,关键字Speech to Text
有三个记号。 关键字匹配不区分大小写,因此Speech to Text
实际上等同于speech to text
。对于美国英语,服务会将每个关键字进行规范化,以匹配口头和书面字符串。 例如,服务会对数字进行规范化,以匹配其口头读法和书面写法。 对于其他语言,关键字必须指定为其读法。
-
使用
keywords_threshold
参数为关键字匹配指定介于 0.0 和 1.0 之间的概率。 此阈值指示要使某个词与关键字相匹配,服务对该词必须具有的置信度级别下限。 仅当关键字的置信度大于或等于指定的阈值时,才会在文字记录中识别到该关键字。指定较小的阈值可能会生成许多匹配项。 如果指定阈值,那么还必须指定一个或多个关键字。 省略此参数不会返回匹配项。
以下限制适用于关键字识别:
- 通过单个请求最多可以识别 1000 个关键字。
- 单个关键字的最大长度可以为 1024 个字符。 双字节语言的最大有效长度可能短于 1024 个字符。
- 大多数 HTTP 服务器和代理对请求的参数施加的限制为 8 KB。 识别大量关键字或识别许多长关键字可能会超过此限制。 如果需要匹配更多关键字,请考虑使用多部分 HTTP 请求。
关键字识别功能对于识别音频流中的关键字是必需的。 无法通过处理最终文字记录来识别关键字,因为文字记录表示服务对输入音频的最佳解码结果。 它不会包含置信度分数较低的记号,这些记号可能表示相关词。 因此,将文本处理工具应用于客户端的文字记录可能无法识别关键字。 需要更丰富的解码结果表示法,并且该表示法仅在服务器上可用。
关键字识别结果
服务会在作为 keywords_result
数组中元素的 results
字段中返回结果。 keywords_result
字段是可枚举属性的字典或关联数组。 每个属性都通过指定的关键字进行标识,并包含对象的数组。 服务会为针对关键字找到的每个匹配项返回数组的一个元素。 每个匹配项的对象包含以下字段:
normalized_text
是规范化为输入音频中匹配的所说短语的指定关键字。start_time
是匹配项的开始时间(以秒为单位)。end_time
是匹配项的结束时间(以秒为单位)。confidence
是服务对匹配项表示指定关键字的置信度。 置信度必须等于或大于指定阈值,才能将匹配项包含在结果中。
对于服务找不到任何匹配项的关键字,会将其从数组中省略。 在以下情况下,可能找不到关键字:
-
音频根本就不包含该关键字。 没有关键字就是最明显的解释。
-
阈值设置得太高。 服务可能识别到关键字,但其置信度级别较低,在这种情况下,会在结果中省略匹配项。
-
在说包含多个记号的关键字字符串(例如,
Speech to Text
)时,在其记号之间静默的时间太长。 服务转录音频时,会将音频流切分成一系列的块。 每个块表示一个连续的音频块,此块中没有超过半秒的静默时间间隔。 它会构造由这些块组成的结果对象的数组。只有在以下情况下,服务才与多记号关键字相匹配:
- 关键字的记号位于同一块中。
- 记号相邻或者各记号的间隔时间不超过 0.1 秒。
在第二种情况下,在关键词的两个标记之间可以插入简短的填充词或非词汇性语句,例如“嗯”或“嗯”。 在这种情况下,上一代车型可以在成绩单的这个位置插入一个停顿标记。 下一代车型包括转录结果中的实际犹豫。 更多信息,请参阅 语音停顿和停顿标记。
关键字识别示例
以下示例请求将 keywords
参数设置为 URL 编码的三个字符串(colorado
、tornado
和 tornadoes
)数组,并将 keywords_threshold
参数设置为 0.5
:
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: audio/flac" \
--data-binary @{path}audio-file.flac \
"{url}/v1/recognize?keywords=colorado%2Ctornado%2Ctornadoes&keywords_threshold=0.5"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: audio/flac" \
--data-binary @{path}audio-file.flac \
"{url}/v1/recognize?keywords=colorado%2Ctornado%2Ctornadoes&keywords_threshold=0.5"
该服务可识别 colorado
和 tornadoes
的合格情况:
{
"result_index": 0,
"results": [
{
"keywords_result": {
"colorado": [
{
"normalized_text": "Colorado",
"start_time": 4.94,
"confidence": 0.91,
"end_time": 5.62
}
],
"tornadoes": [
{
"normalized_text": "tornadoes",
"start_time": 1.52,
"confidence": 1.0,
"end_time": 2.15
}
]
},
"alternatives": [
{
"confidence": 0.96,
"transcript": "several tornadoes touch down as a line of
severe thunderstorms swept through Colorado on Sunday "
}
],
"final": true
}
]
}
词替代项
word_alternatives_threshold
参数仅支持上一代车型,不支持新一代车型。
“替代词”功能(也称为 “混淆网络” )会报告输入音频中发音相似的替代词的假设。 例如,词 Austin
可能是音频中某个词的最佳假设。 但在同一时间间隔内,词 Boston
是另一个可能的假设。 这些假设有相同的开始时间和结束时间,但有不同的拼写以及通常不同的置信度分数。
缺省情况下,服务不会报告词替代项。 要指示您希望接收替代假设,请使用 word_alternatives_threshold
参数来指定介于 0.0 到 1.0 之间的概率。 此阈值指示要使服务将某个假设作为词替代项返回,服务对该假设必须具有的置信度级别下限。 仅当假设的置信度大于或等于指定阈值时,才会返回该假设。
可以将词替代项视为切分成更小时间间隔(或分箱)的文字记录时间线。 每个分箱可以有一个或多个具有不同拼写和置信度的假设。 word_alternatives_threshold
参数用于控制服务返回的结果的密度。 指定较小的阈值可能会生成许多假设。
词替代项结果
服务会在作为 word_alternatives
数组中元素的 results
字段中返回结果。 word_alternatives
字段是对象数组,每个对象为替代词提供以下字段:
start_time
指示返回其假设的词在输入音频中开始的时间(以秒为单位)。end_time
指示返回其假设的词在输入音频中结束的时间(以秒为单位)。alternatives
是假设对象的数组。 每个对象都包含confidence
(用于指示服务对该假设的置信度分数)和word
(用于标识该假设)。 置信度必须等于或大于指定阈值,才能将匹配项包含在结果中。 服务按置信度对替代项排序。
词替代项示例
以下示例请求将 word_alternatives_threshold
指定为相当低的值 0.10
。 简单输入音频包含的词具有常见同音词和不同的可能声学解释。
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: audio/wav" \
--data-binary @{path}audio-file.wav \
"{url}/v1/recognize?word_alternatives_threshold=0.10"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: audio/wav" \
--data-binary @{path}audio-file.wav \
"{url}/v1/recognize?word_alternatives_threshold=0.10"
由于阈值低,因此服务会为某些词返回多个假设和置信度分数,以及所有词的开始时间和结束时间。 最终文字记录会正确识别输入音频。
{
"result_index": 0,
"results": [
{
"final": true,
"alternatives": [
{
"transcript": "yes I ate that tuna ",
"confidence": 0.82
}
],
"word_alternatives": [
{
"start_time": 0.0,
"end_time": 0.31,
"alternatives": [
{
"word": "yes",
"confidence": 1.0
}
]
},
{
"start_time": 0.31,
"end_time": 0.46,
"alternatives": [
{
"word": "I",
"confidence": 1.0
}
]
},
{
"start_time": 0.46,
"end_time": 0.63,
"alternatives": [
{
"word": "ate",
"confidence": 0.89
},
{
"word": "eat",
"confidence": 0.11
}
]
},
{
"start_time": 0.63,
"end_time": 0.77,
"alternatives": [
{
"word": "that",
"confidence": 0.72
},
{
"word": "the",
"confidence": 0.27
}
]
},
{
"start_time": 0.77,
"end_time": 1.2,
"alternatives": [
{
"word": "tuna",
"confidence": 0.94
}
]
}
]
}
]
}