IBM Cloud Docs
将定制声学模型和定制语言模型一起使用

将定制声学模型和定制语言模型一起使用

声学模型定制仅可用于先前生成的模型。 它不可用于下一代和大型语音模型。

您可以使用补充的定制语言模型和定制声学模型来提高语音识别准确性。 在训练声学模型期间和/或语音识别期间,可以同时使用这两种类型的模型。 定制语言模型和定制声学模型必须由同一服务实例拥有,并且必须定制的是同一基本语言模型。

使用定制语言模型训练定制声学模型

以下术语分别说明了单独训练定制声学模型或使用定制语言模型训练定制声学模型时,在训练方式上的差别:

  • 无监督训练是指仅使用音频数据来训练定制声学模型。 如果定制模型的音频特征与正在转录的音频的特征相匹配,那么仅基于音频训练定制声学模型就可以提高转录质量。
  • 轻度监督训练是指使用补充(或“助手”)定制语言模型来训练定制声学模型。 轻度监督训练在提高语音识别质量方面比无监督训练更有效。

在以下情况下,请使用轻度监督训练:

  • 您有包含音频文件的文字记录的定制语言模型。

    转录音频数据并不是绝对必要的。 但是,使用其语料库基于音频文件的文字记录的定制语言模型进行训练可以改进语音识别。 对于音频数据包含在服务的基本词汇表中找不到的未登录 (OOV) 词的情况,尤其如此。 服务可以在上下文中解析转录的内容,并抽取 OOV 词和 n 元语法,以帮助最有效地利用音频数据。

  • 您有基于语料库或与音频文件内容相关的词的定制语言模型。

    如果您没有音频文件的文字记录,那么可以使用包含音频数据所在领域中的 OOV 词的定制语言模型进行训练。 使用包含音频中所用 OOV 词的定制语言模型进行训练可以改进语音识别。

例如,假设要创建基于特定产品呼叫中心音频的定制声学模型。 最好是使用包含相关呼叫的文字记录的定制语言模型来训练定制声学模型。 如果文字记录不可用,您仍可以使用仅包含呼叫中心处理的特定产品的名称的定制语言模型进行训练。

使用轻度监督训练的准则

您有定制声学模型中音频文件的文字记录时,请遵循以下准则:

  • 创建专用定制语言模型,其唯一的用途是帮助训练此特定定制声学模型。 专用助手模型可以包含同一定制声学模型的多个音频文件的多个文字记录。 此外,它还可以包含与音频文件相关的定制词,不过文字记录在训练定制声学模型方面更有效。

  • 将专用定制语言模型仅用于训练定制声学模型。 训练了定制声学模型后,仅在更新该声学模型中的音频文件时,才需要使用定制语言模型。

  • 将音频文件的文字记录作为语料库添加到定制语言模型。 语料库中每行仅包含一个句子并不是绝对必要的。 但与所有语料库一样,如果语料库中每个句子单独一行,那么服务明显能更好地利用语料库。 通常,在语料库中分占不同行的较短话语最有效。

  • 将特定语料库与特定音频文件相关联既不必要,也无可能。 定制语言模型可以包含多个语料库,就像定制声学模型可以包含多个音频文件一样。 定制语言模型的所有内容都有助于改进服务在训练过程中生成的音频的内部文字记录。

  • 文字记录无需一字不差地反映出音频中的所有句子和词。 文字记录可以只包含音频中与领域相关的句子和词。 对于语言模型和声学模型定制,训练数据都需要反映出要识别的语音的实际用例。 如果只有 20% 的数据(文字记录或音频)特定于用例的领域,请仅使用这 20% 的数据进行训练。

    但是,如果对于有口音的语音(例如,对于非母语说话者的语音),要使用声学模型定制来获得更好的结果,请尽可能多地保留音频,即使与领域不相关。 如果要使用声学模型定制来提高在辨别困难的声学条件(例如,嘈杂的背景)下的语音识别准确性,也可同样这样做。

  • 一字不差的文字记录无需包含人类语音中常见的非流利项、含糊言语和补白句子。 您可以从文字记录和/或音频中除去这些元素。 (您还可以除去人们相互交谈的音频,因为这对训练没什么用。)

    例如,假设一字不差的文字记录包含以下句子:

    So that's, uhm, you know, that, as I say, is the is the predominant form today.

    您可以从文字记录和/或音频中除去这些古怪用语,以创建以下句子:

    So that as I say is the predominant form today.

执行轻度监督训练

要使用定制语言模型训练定制声学模型,请使用 POST /v1/acoustic_customizations/{customization_id}/train 方法的可选 custom_language_model_id 查询参数。 使用 customization_id 参数和 custom_language_model_id 参数分别传递声学模型的 GUID 和定制语言模型的 GUID。 这两种模型必须由随请求一起传递的凭证所拥有。

  • 确保定制语言模型经过完全训练并处于 available 状态。 如果定制语言模型不处于 available 状态,那么训练会失败。
  • 确保这两种定制模型都基于同一基本模型的相同版本。 如果基本模型的新版本可用,那么必须将这两种模型升级到基本模型的相同版本,才能成功进行训练。 有关更多信息,请参阅升级定制模型

轻度监督训练示例

以下示例请求显示用于训练定制声学模型的定制语言模型:

IBM Cloud

curl -X POST -u "apikey:{apikey}" \
"{url}/v1/acoustic_customizations/{customization_id}/train?custom_language_model_id={customization_id}"

IBM Cloud Pak for Data IBM Software Hub

curl -X POST \
--header "Authorization: Bearer {token}" \
"{url}/v1/acoustic_customizations/{customization_id}/train?custom_language_model_id={customization_id}"

使用自定义语言和自定义声学模型进行语音识别

可以在任何语音识别请求中同时指定定制语言模型和定制声学模型。 如果音频包含特定于领域的 OOV 词,那么在语音识别期间,仅执行声学模型定制无法可靠地生成这些词。 使用包含音频领域中 OOV 词的定制语言模型是扩展服务基本词汇表的唯一方法。

使用定制语言模型可以提高转录准确性,不管是否使用定制语言模型训练了定制声学模型:

  • 在训练期间同时使用定制语言和定制声学模型可提高定制声学模型的质量。
  • 在语音识别期间同时使用这两种类型的模型可提高转录质量。

如果定制语言模型包含语法,那么还可以在语音识别期间将定制语言模型以及其中一个语法用于定制声学模型。

对于语音识别请求,请使用 acoustic_customization_idlanguage_customization_id 参数来传递请求的定制声学和定制语言模型的 GUID。 这两个定制模型都必须由随请求一起传递的凭证拥有,两者都必须基于相同的基本模型 (例如 en-US_BroadbandModel),并且两者都必须处于 available 状态。

有关定制模型升级对两种类型的定制模型的语音识别的影响的更多信息,请参阅 将定制声学模型和定制语言模型一起使用的注意事项

同时使用定制语言和定制声学模型的示例

以下示例请求将自定义语音和自定义语言模型传递给 HTTP POST /v1/recognize 方法:

IBM Cloud

curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: audio/flac" \
--data-binary @audio-file1.flac \
"{url}/v1/recognize?acoustic_customization_id={customization_id}&language_customization_id={customization_id}"

IBM Cloud Pak for Data IBM Software Hub

curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: audio/flac" \
--data-binary @audio-file1.flac \
"{url}/v1/recognize?acoustic_customization_id={customization_id}&language_customization_id={customization_id}"

对于异步 HTTP 请求,可在创建异步作业时指定这些参数。 对于 WebSocket 请求,可在建立连接时传递这些参数。 有关更多信息,请参阅 使用定制语言模型进行语音识别使用定制声学模型进行语音识别