动态配置 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
          }
    }
  }
}
表 1. Speech to Text 服务的 JSON 属性
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 可选。指定在设置语音配置时要选择的更新策略。可能的值:
  • replace
  • replaceOnce
  • merge
  • mergeOnce

请参阅使用 updateMethod。V1.0.0.7 和更高版本。

可以在 configbroadbandConfig JSON 属性下设置的参数反映可供 Speech to Text WebSocket 接口使用的参数。WebSocket API 发送两种类型的参数:查询参数(在 Voice Gateway 连接到服务时发送)和消息参数(在建立连接后作为 JSON 发送)。例如,modelcustomization_id 是查询参数,smart_formatting 是 WebSocket 消息参数。有关参数的完整列表,请参阅 Watson Speech to Text 服务的 WebSocket API 参考

可以为 Media Relay 到 Speech To Text 服务的连接定义以下查询参数。在 configbroadbandConfig 下定义的任何其他参数都通过 WebSocket 消息请求进行传递。

注:无法修改 Speech to Text 服务中的以下参数,因为它们具有 Media Relay 所使用的固定值。

示例:将 Speech to Text 语言模型设置为西班牙语 (es-ES_NarrowbandModel)

在该示例中,语言模型将切换到西班牙语,并将启用智能格式化。由于未定义 credentials 属性,因此 Media Relay 将使用通过 Media Relay 配置WATSON_STT_URLWATSON_STT_USERNAMEWATSON_STT_PASSWORD)定义的凭证

{
  "output": {
    "vgwAction": {
      "command": "vgwActSetSTTConfig",
      "parameters": {
        "config": {
                "model": "es-ES_NarrowbandModel",
                "smart_formatting": true
            }
        }
    }
  }
}

使用 updateMethod

您可以在动态配置中使用 updateMethod 属性来定义如何进行对配置的更改,方法是替换配置或合并新配置属性,并指定在呼叫或一个对话轮次期间是否会发生这些更改。

表 2. 使用 updateMethod 时可用于更新属性的选项。
JSON 属性 描述
replace 在呼叫期间替换配置。
replaceOnce 替换配置一次,以使该配置仅用于后续对话轮次。然后,它将还原为先前配置。
merge 在呼叫期间将该配置与现有配置合并。
mergeOnce 在一个对话轮次中合并配置,然后还原为先前配置。

示例:使用 mergeOnce 方法更新 Speech to Text recognizeBody 属性

以下示例显示 Watson Assistant 对话中 mergeOnce 方法的语法。通过将 updateMethod 设置为 mergeOnce,Watson Assistant 使用操作标记vgwActSetSTTConfigrecognizeBody 属性附加到 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 动态进行配置时,请务必注意,仅会更新根级别字段,例如 configbargeInResume。如果在操作中省略这些配置,那么将持久保留原始配置设置。可以对 mergemergeOnce 使用不同 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 属性定义将更改的值。如果未定义属性,那么将使用现有值。

表 3. Google Cloud Speech API 的 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 所使用的固定值。

不推荐:通过定义状态变量配置 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
        }
    }
}
表 3. Speech to Text 服务的 JSON 属性
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 之间的值。