动态配置 Speech to Text 服务或 Speech to Text Adapter
通过使用 IBM® Voice Gateway API,可以在呼叫期间动态配置 IBM® Speech to Text 服务或 Speech to Text Adapter。要更改配置,请在 Watson Assistant 对话树中的节点响应的 output 中定义 vgwActSetSTTConfig 操作。有关使用 API 的更多信息,请参阅定义操作标记和状态变量。
注意:更改 Speech to Text 服务的配置将导致从 Voice Gateway 到 Speech to Text 服务的连接先断开连接再重新连接,这可能导致 Voice Gateway 丢失发声的某个部分。通常,在音频从 Watson Assistant 响应传送到呼叫者时将重新建立连接,这样一来,除非呼叫者快速打断,否则可避免丢失发声的任何部分。
请参阅下列部分以获取定义 vgwActSetSTTConfig 操作的示例:
Speech to Text 服务
以下示例显示可以添加到 Watson Assistant 对话树中的节点响应的配置。这些设置以透明方式作为 JSON 属性传递到 Speech to Text 服务。
{
"output": {
"vgwAction": {
"command": "vgwActSetSTTConfig",
"parameters": {
"credentials": {
"url": "https://stream.watsonplatform.net/speech-to-text/api",
"username": "9h7f54cb-5epb-80d6-45c3-da41d2bf7a71",
"password": "asxNzDLpIJ6F"
},
"config": {
"x-watson-learning-opt-out": true,
"model": "en-US_NarrowbandModel",
"profanity_filter": true,
"smart_formatting": true,
"customization_id": "81d3630-ba58-11e7-aa4b-41bcd3f6f24d",
"acoustic_customization_id": "e4766090-ba51-11e7-be33-99bd3ac8fa93"
},
"confidenceScoreThreshold": 0.7,
"echoSuppression": true,
"bargeInResume": true,
"connectionTimeout": 30,
"requestTimeout": 15
}
}
}
}
| JSON 属性 | 描述 |
|---|---|
credentials |
IBM® Speech to Text 服务的凭证。如果未定义,那么将使用来自 Media Relay 配置的缺省凭证。您还可以通过配置 tokenAuthEnabled 凭证来为 V1.0.0.5a 和更高版本启用令牌认证,从而减少呼叫等待时间。请参阅为 Watson 服务启用基于用户名和密码的令牌认证。 |
config |
使用窄带音频时 Watson Speech to Text 服务的参数。有关参数的完整列表,请参阅 Watson Speech to Text 服务的 WebSocket API 参考。 |
broadbandConfig |
启用宽带音频时 Watson Speech To Text 服务的参数。仅当 bandPreference 设置为 broadband 时必需。至少,必须在 model 属性上定义语言模型。有关参数的完整列表,请参阅 Watson Speech to Text 服务的 WebSocket API 参考。V1.0.0.4
和更高版本。 |
bandPreference |
定义在会话中协商音频编码解码器时首选哪个音频频带。设置为 broadband 会尽可能使用宽带音频。缺省值为 narrowband。V1.0.0.4 和更高版本。 |
confidenceScoreThreshold |
来自 Speech to Text 服务的消息的置信度阈值。置信度分数低于阈值的消息将不会转发到 Watson Assistant。缺省值 0 表示将使用所有响应。建议值为 0 到 1 之间的值。 |
echoSuppression |
指示是否禁止由于回传 Text To Speech 合成而可能发生的 Speech To Text 的结果。V1.0.0.4c 和更高版本。 |
bargeInResume |
设置为 true 可在最终发声的置信度分数低于 confidenceScoreThreshold 属性指定的阈值情况下在打断后恢复回放音频。V1.0.0.5 和更高版本。 |
connectionTimeout |
Voice Gateway 等待与 Watson Speech to Text 服务建立套接字连接的时间(以秒为单位)。如果超过该时间,那么 Voice Gateway 将重新尝试与 Watson Speech to Text 服务进行连接。如果仍无法访问服务,那么呼叫将失败。V1.0.0.5 和更高版本。 |
requestTimeout |
Voice Gateway 等待与 Watson Speech to Text 服务建立语音识别会话的时间(以秒为单位)。如果超过该时间,那么 Voice Gateway 将重新尝试与 Watson Speech to Text 服务进行连接。如果仍无法访问服务,那么呼叫将失败。V1.0.0.5 和更高版本。 |
updateMethod |
可选。指定在设置语音配置时要选择的更新策略。可能的值:
请参阅使用 updateMethod。V1.0.0.7 和更高版本。 |
可以在 config 和 broadbandConfig JSON 属性下设置的参数反映可供 Speech to Text WebSocket 接口使用的参数。WebSocket API 发送两种类型的参数:查询参数(在
Voice Gateway 连接到服务时发送)和消息参数(在建立连接后作为 JSON 发送)。例如,model 和 customization_id 是查询参数,smart_formatting 是 WebSocket 消息参数。有关参数的完整列表,请参阅 Watson Speech to Text 服务的 WebSocket API 参考。
可以为 Media Relay 到 Speech To Text 服务的连接定义以下查询参数。在 config 或 broadbandConfig 下定义的任何其他参数都通过 WebSocket 消息请求进行传递。
modelcustomization_idacoustic_customization_idversion- V1.0.0.4c 和更高版本x-watson-learning-opt-out
注:无法修改 Speech to Text 服务中的以下参数,因为它们具有 Media Relay 所使用的固定值。
actioncontent-typeinterim_resultscontinuousinactivity_timeout
示例:将 Speech to Text 语言模型设置为西班牙语 (es-ES_NarrowbandModel)
在该示例中,语言模型将切换到西班牙语,并将启用智能格式化。由于未定义 credentials 属性,因此 Media Relay 将使用通过 Media Relay 配置(WATSON_STT_URL、WATSON_STT_USERNAME 和 WATSON_STT_PASSWORD)定义的凭证
{
"output": {
"vgwAction": {
"command": "vgwActSetSTTConfig",
"parameters": {
"config": {
"model": "es-ES_NarrowbandModel",
"smart_formatting": true
}
}
}
}
}
使用 updateMethod
您可以在动态配置中使用 updateMethod 属性来定义如何进行对配置的更改,方法是替换配置或合并新配置属性,并指定在呼叫或一个对话轮次期间是否会发生这些更改。
| JSON 属性 | 描述 |
|---|---|
| replace | 在呼叫期间替换配置。 |
| replaceOnce | 替换配置一次,以使该配置仅用于后续对话轮次。然后,它将还原为先前配置。 |
| merge | 在呼叫期间将该配置与现有配置合并。 |
| mergeOnce | 在一个对话轮次中合并配置,然后还原为先前配置。 |
示例:使用 mergeOnce 方法更新 Speech to Text recognizeBody 属性
以下示例显示 Watson Assistant 对话中 mergeOnce 方法的语法。通过将 updateMethod 设置为 mergeOnce,Watson Assistant 使用操作标记vgwActSetSTTConfig 将 recognizeBody 属性附加到 Voice Gateway JSON 配置文件中的 STT 配置。这些属性由 Voice Gateway 使用,直至下一个轮次事件。
{
"output": {
"text": "I can speak Spanish now",
"vgwAction": {
"command": "vgwActSetSTTConfig",
"parameters": {
"updateMethod": "mergeOnce",
"config": {
"recognizeBody": {
"contentType": "application/sgrs",
"body": "#ABNF 1.0 ISO-8859-1;\nlanguage en-US;\nmode voice;\nroot $pattern;\n$pattern = $alphanum <1-> ;\n$alphanum = $digit | $letter\n$digit = zero | one | two | three | four | five | six | seven | eight | nine;\n$letter = \\"A.\\" | \\"B.\\" | \\"C.\\" | \\"D.\\" | \\"E.\\" | \\"F.\\" | \\"G.\\" | \\"H.\\" | \\"I.\\" | \\"J.\\" | \\"K.\\" | \\"L.\\" | \\"M.\\" | \\"N.\\" | \\"O.\\" | \\"P.\\" | \\"Q.\\" | \\"R.\\"| \\"S.\\" | \\"T.\\" | \\"U.\\" |\\"V.\\" | \\"W.\\" | \\"X.\\" | \\"Y.\\" | \\"Z.\\" ;\n"
}
}
}
}
}
}
更新非根级别的字段
从 Watson Assistant 动态进行配置时,请务必注意,仅会更新根级别字段,例如 config 或 bargeInResume。如果在操作中省略这些配置,那么将持久保留原始配置设置。可以对 merge 和 mergeOnce 使用不同 updateMethod 属性,以将 config 字段与现有配置合并。
Voice Gateway Speech to Text Adapter
Cloud Speech API 的以下示例显示可以添加到 Watson Assistant 对话树中的节点响应的配置。这些设置以透明方式作为 JSON 属性传递到 Cloud Speech API。
{
"output": {
"vgwAction": {
"command": "vgwActSetSTTConfig",
"parameters": {
"config": {
"languageCode": "es-ES",
"profanityFilter": true,
"maxAlternatives": 2,
"speechContexts": {
"phrases": [ "Si", "Por supuesto", "Claro", "Si por favor"]
}
},
"thirdPartyCredentials": {
"type": "service_account",
"project_id": "my_google_project",
"private_key_id": "d2f36f96cb0c58309a5eba101cef4af0663d9465",
"private_key": "-----BEGIN PRIVATE ... \n-----END PRIVATE KEY-----\n",
"client_email": "developer1@my_google_project.iam.gserviceaccount.com",
"client_id": "100033083330209022330835",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/developer1@my_google_project.iam.gserviceaccount.com"
}
}
}
}
}
JSON 属性定义将更改的值。如果未定义属性,那么将使用现有值。
| JSON 属性 | 描述 |
|---|---|
| config | Google Cloud Speech API RecognitionConfig 请求的参数。有关参数的完整列表,请参阅 RecognitionConfig API 文档。 |
| thirdPartyCredentials | Google Cloud 项目服务帐户 JSON 文件的内容。如果省略此属性,那么将使用 GOOGLE_APPLICATION_CREDENTIALS 环境变量上指定的凭证。 |
注:无法修改 Cloud Speech API 中 RecognitionConfig 的以下字段,因为它们具有 Speech To Text Adapter 所使用的固定值。
encodingsample_rate_hertz
不推荐:通过定义状态变量配置 Speech to Text 服务
在 V1.0.0.2 中,不推荐通过定义状态变量来配置 Watson 语音服务,建议采用先前部分中描述的操作标记。
重要信息:虽然状态变量继续可用,但是无法在节点中定义这些不推荐使用的状态变量和操作标记。Watson Assistant 对话可以包含操作标记和不推荐使用的状态变量的混合,但是每个节点的 JSON 定义只能包含其中之一。
{
"context": {
"vgwSTTConfigSettings": {
"credentials": {
"url": "https://stream.watsonplatform.net/speech-to-text/api",
"username": "9h7f54cb-5epb-80d6-45c3-da41d2bf7a71",
"password": "asxNzDLpIJ6F"
},
"config": {
"x-watson-learning-opt-out": true,
"model": "en-US_NarrowbandModel",
"profanity_filter": true,
"smart_formatting": true
},
"confidenceScoreThreshold": 0.7
}
}
}
| JSON 属性 | 描述 |
|---|---|
credentials |
Watson Speech to Text 服务的凭证。如果未定义,那么将使用来自 Media Relay 配置的缺省凭证。 |
config |
Watson Speech to Text 服务的参数。请参阅 Watson Speech to Text 服务的 WebSockets API 参考。 |
confidenceScoreThreshold |
来自 Speech to Text 服务的消息的置信度阈值。置信度分数低于阈值的消息将不会转发到 Watson Assistant。缺省值 0 表示将使用所有响应。建议值为 0 到 1 之间的值。 |