如何为IBM Watson的语音转文本服务Web套接字端点找到必要的访问Web令牌?

时间:2019-01-11 12:05:05

标签: python audio websocket streaming ibm-watson

我是使用IBM Watson服务的新手。我想测试语音转文字服务。我已经创建了新的STT服务,并将其分配给创建的应用程序。根据{{​​3}},如果我想使用STT Web套接字端点,则需要Web令牌进行身份验证。我找到了有关如何接收IBM令牌的不同文章。 docs说,我需要从我的API密钥中创建它,但是当我使用该令牌时,我没有通过身份验证。另一种方法是按照建议的first来接收令牌,但是为此,我需要用户名并通过。 here说我可以在服务凭证中找到它们。但是我在服务凭证JSON中没有此类字段。

下一个我的服务凭证:

{
  "apikey": "my_api_key",
  "iam_apikey_description": "description",
  "iam_apikey_name": "key_name",
  "iam_role_crn": "my_role_crn",
  "iam_serviceid_crn": "my_serviceid_crn",
  "url": "my_url_endpoint"
}

请帮助我弄清楚如何使用api_key接收我的STT服务的访问令牌。

1 个答案:

答案 0 :(得分:0)

  

您可以使用以下命令访问IBM Watson服务API:   为服务实例生成的。您使用API​​密钥生成一个   IAM访问令牌。如果您正在开发一个   需要与其他IBM Cloud服务一起使用的应用程序

因此,您需要执行POST请求identity/token方法,以通过传递API密钥来生成IAM访问令牌。 cURL的一个示例:

curl -k -X POST --header "Content-Type: application/x-www-form-urlencoded" --header "Accept: application/json" --data-urlencode "grant_type=urn:ibm:params:oauth:grant-type:apikey" --data-urlencode "apikey={your apikey}" "https://iam.bluemix.net/identity/token"

响应将类似于:

 "access_token": "eyJhbGciOiJIUz......sgrKIi8hdFs",
 "refresh_token": "SPrXw5tBE3......KBQ+luWQVY",
 "token_type": "Bearer",
 "expires_in": 3600,
 "expiration": 1473188353

一个调用Watson Services的示例:

curl -X GET \
--header "Authorization: Bearer {token}" \
"https://gateway.watsonplatform.net/discovery/api/v1/environments?version=2017-11-07"

不好。我建议您使用Python SDK。 SDK接受API密钥并管理令牌的生命周期,请查看 this example ,您只需要传递令牌即可。

  • 有关使用Watson服务here的身份验证IAM的更多信息。