你能给出在谷歌云语音 API 中使用单词提示的例子吗?我尝试对 brook.flac 使用 Rest API 执行器。我输入短语布鲁克林(而不是布鲁克林),但结果是一样的。它们真的有效吗?
1 回答
来自https://cloud.google.com/speech-to-text/docs/speech-adaptation
对于任何给定的识别任务,您还可以传递一个语音上下文(SpeechContext 类型),它提供信息以帮助处理给定的音频。目前,上下文可以保存一个短语列表,作为识别器的“提示”;这些短语可以提高这些单词或短语被识别的可能性。
您可以通过以下几种方式使用这些短语提示:
提高在您的音频数据中可能会出现过多的特定单词和短语的准确性。例如,如果特定命令通常由用户说出,您可以提供这些作为短语提示。如果提供的音频包含噪声或包含的语音不是很清晰,则此类附加短语可能特别有用。在识别任务的词汇表中添加额外的单词。Cloud Speech API 包含一个非常大的词汇表。但是,如果专有名称或特定领域的词超出词汇表,您可以将它们添加到提供给请求的 SpeechContext 的短语中。短语既可以作为小词组提供,也可以作为单个词提供。(有关这些短语的数量和大小限制,请参阅内容限制。)当作为多词短语提供时,
例如,这个 shwazil_hoful.flac 文件包含一些虚构的词。如果在没有提供这些超出词汇表的单词的情况下执行识别,则识别器将不会返回所需的转录,而是返回词汇表中的单词,例如:“it's a swing all day”。
{
"config": {
"encoding":"FLAC",
"sampleRateHertz": 16000,
"languageCode":"en-US"
},
"audio":{
"uri":"gs://speech-demo/shwazil_hoful.flac"
}
}
然而,当识别请求提供这些词汇表外的单词时,识别器将返回所需的转录:“这是一个 shwazil hoful day”。
{
"config": {
"encoding":"FLAC",
"sampleRateHertz": 16000,
"languageCode":"en-US",
"speechContexts": {
"phrases":["hoful","shwazil"]
}
},
"audio":{
"uri":"gs://speech-demo/shwazil_hoful.flac"
}
}
或者,如果某些词通常在一个短语中一起说,则可以将它们组合在一起,这可以进一步增加它们将被识别的信心。
{
"config": {
"encoding":"FLAC",
"sampleRateHertz": 16000,
"languageCode":"en-US",
"speechContexts": {
"phrases":["shwazil hoful day"]
}
},
"audio":{
"uri":"gs://speech-demo/shwazil_hoful.flac"
}
}
通常,在提供语音上下文提示时要谨慎。通过将短语限制为仅预期说出的短语,可以实现更好的识别准确性。例如,如果有多个对话状态或设备操作模式,则只提供与当前状态相对应的提示,而不是总是为所有可能的状态提供提示。