使用定制语言模型进行语音识别
创建并训练定制语言模型后,可以使用 language_customization_id
查询参数在语音识别请求中使用该模型。 缺省情况下,不会将定制语言模型与请求配合使用。 可以针对相同或不同的领域创建多个定制语言模型。 但是,每次语音识别请求只能指定一种自定义语言模型。 您必须提供拥有定制模型的服务实例的凭据来提出请求。
为某个基本模型创建的定制模型只能用于该基本模型。 如果定制模型基于非缺省模型,那么还必须使用 model
查询参数指定该基本模型。 有关更多信息,请参阅 使用缺省模型。
有关告知服务要对来自定制模型的词赋予多少权重的信息,请参阅 使用定制权重。 有关将语法用于定制语言模型的示例,请参阅将语法用于语音识别。
使用定制语言模型的示例
以下示例显示了如何将定制语言模型与每个语音识别接口配合使用。 在这种情况下,所使用的定制模型基于下一代模型 en-US_Telephony
。
-
对于 WebSocket 接口,请使用
/v1/recognize
方法。 指定的定制模型将用于通过连接发送的所有请求。var access_token = {access_token}; var wsURI = '{ws_url}/v1/recognize' + '?access_token=' + access_token + '&model=en-US_Telephony' + '&language_customization_id={customization_id}'; var websocket = new WebSocket(wsURI);
-
对于同步 HTTP 接口,请使用
POST /v1/recognize
方法。 指定的定制模型将用于该请求。IBM Cloud
curl -X POST -u "apikey:{apikey}" \ --header "Content-Type: audio/flac" \ --data-binary @audio-file.flac \ "{url}/v1/recognize?model=en-US_Telephony&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-file.flac \ "{url}/v1/recognize?model=en-US_Telephony&language_customization_id={customization_id}"
-
对于异步 HTTP 接口,请使用
POST /v1/recognitions
方法。 指定的定制模型将用于该请求。IBM Cloud
curl -X POST -u "apikey:{apikey}" \ --header "Content-Type: audio/flac" \ --data-binary @audio-file.flac \ "{url}/v1/recognitions?model=en-US_Telephony&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-file.flac \ "{url}/v1/recognitions?model=en-US_Telephony&language_customization_id={customization_id}"
使用定制权重
定制语言模型是定制模型及其定制的基本模型的组合。 用于语音识别时,您可以指示服务向定制语言模型中的词提供相对于基本模型中的词的权重。 分配给定制模型的权重称为其定制权重。
您可以将自定义语言模型的相对权重指定为 0.0 之间的双倍,即 1.0:
- 对于基于大型语音模型的定制模型,缺省定制权重为 0.5。
- 对于基于前代模型的定制模型,缺省定制权重为 0.3。
- 对于基于大多数下一代模型的定制模型,缺省定制权重为 0.2。
- 对于基于改进的下一代模型的定制模型,缺省定制权重为 0.1。
要识别使用改进语言模型定制的模型,请在 下一代模型的定制支持 中的表 2 的 语言模型定制 列中查找 (改进) 日期。 确保检查您使用的服务版本 IBM Cloud 或 IBM Cloud Pak for Data的日期。
缺省权重在一般情况下可产生最佳性能。 它能够识别自定义模型中的单词和基本词汇中的单词。
然而,如果待转录的音频经常使用自定义模型中的单词,增加自定义权重可以提高转录结果的准确性。 设置定制权重时,请务必谨慎。 虽然增加权重可以提高自定义模型领域短语的准确性,但也会对非领域短语的性能产生负面影响。 (即使将权重设置为 0.0,也存在因实现语言模型定制而导致转录可能包含定制词的小概率情况。)
使用 customization_weight
参数可指定定制权重。 在训练定制语言模型或将定制语言模型用于语音识别请求时,可以指定此参数。
-
对于训练请求,以下示例在
0.5
方法中指定了定制权重POST /v1/customizations/{customization_id}/train
:IBM Cloud
curl -X POST -u "apikey:{apikey}" \ "{url}/v1/customizations/{customization_id}/train?customization_weight=0.5"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \ --header "Authorization: Bearer {token}" \ "{url}/v1/customizations/{customization_id}/train?customization_weight=0.5"
在训练期间设置定制权重会随定制语言模型一起保存权重。 您无需在使用该定制模型的每个识别请求中传递权重。
-
对于识别请求,以下示例在
0.7
方法中指定了定制权重POST /v1/recognize
:IBM Cloud
curl -X POST -u "apikey:{apikey}" \ --header "Content-Type: audio/flac" \ --data-binary @audio-file1.flac \ "{url}/v1/recognize?language_customization_id={customization_id}&customization_weight=0.7"
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?language_customization_id={customization_id}&customization_weight=0.7"
在语音识别期间设置定制权重会覆盖在训练期间随模型一起保存的权重。
对定制语言模型的使用进行故障诊断
如果将定制语言模型应用于语音识别,但发现服务似乎并未使用模型中包含的词,请检查是否有以下可能的问题:
- 确保正确地将定制标识传递给识别请求,如先前示例中所示。
- 确保定制模型的状态为
available
,这意味着该模型已经过完全训练并可供使用。 有关更多信息,请参阅列出定制语言模型。 - 检查为新词生成的读法,以确保这些读法正确。 有关更多信息,请参阅