如何使用 curl 访问 IBM 语音转文本 api?
How can I access IBM speech-to-text api with curl?
我无法使用 curl 在 IBM Bluemix 上访问语音转文本 API!我使用 curl 尝试了文档中的无会话请求示例,但没有成功;我收到无效的 userID/password 消息。
这是我得到的错误:
"{ "code" : 401 , "error" : "Not Authorized" , "description" :
"2016-10-08T15:22:37-04:00, Error ERCDPLTFRM-DNLKUPERR occurred when
accessing
https://158.85.132.94:443/speech-to-text/api/v1/recognize?timestamps=true&word_alternatives_threshold=0.9&continuous=true,
Invalid UserId and/or Password. Please confirm that your credentials
match the end-point you are trying to access. A common error is trying
to use credentials from an experimental or beta release against a GA
release or vice versa" } "
任何人都可以向我展示如何使用 curl 获得 api 语音转文本 api 无会话请求的工作示例吗?
无会话调用的文档可用here。
确保您创建了 Watson Speech-to-Text 服务的实例并使用来自该服务的凭证(而不是您的 Bluemix 用户 ID 和密码)。
您可以在 Bluemix UI 中创建服务并获取凭据,或者您可以通过命令行创建它:
$ cf create-service speech_to_text standard my_service
然后您可以创建服务凭证并获取它:
$ cf create-service-key my_service credentials-1
$ cf service-key my_service credentials-1
Getting key credentials-1 for service instance my_service as adasilva@us.ibm.com...
{
"password": "FJXUG6????",
"url": "https://stream.watsonplatform.net/speech-to-text/api",
"username": "147e438e-f633-4e40-8351-aaaaaaaaaa"
}
然后您可以在 curl 脚本中使用上面的用户名和密码。请参阅下面的 curl 命令和结果(为了安全起见,我屏蔽了用户名、密码和其他字段):
$ curl -X POST -v -u '80062070-1f88-4943-9a2a-aaaaaaa':'hwtTg???????' \
> --header 'Content-Type: audio/flac' \
> --data-binary @audio-file1.flac \
> 'https://stream.watsonplatform.net/speech-to-text/api/v1/recognize?timestamps=true&continuous=true'
* Trying 158.85.132.94...
* Connected to stream.watsonplatform.net (158.85.132.94) port 443 (#0)
* TLS 1.2 connection using TLS_RSA_WITH_AES_256_GCM_SHA384
* Server certificate: *.watsonplatform.net
* Server certificate: GeoTrust SSL CA - G3
* Server certificate: GeoTrust Global CA
* Server auth using Basic with user '80062070-1f88-4943-9a2a-aaaaaaa'
> POST /speech-to-text/api/v1/recognize?timestamps=true&continuous=true HTTP/1.1
> Host: stream.watsonplatform.net
> Authorization: Basic ODAwNjIwNzAtMWY4OC00OTQzLTlhMmEtYzE0OWVmOTJkM2IyOmh3dXXXXXX==
> User-Agent: curl/7.43.0
> Accept: */*
> Content-Type: audio/flac
> Content-Length: 48363
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
< X-Note: Gateway Ack
* We are completely uploaded and fine
< HTTP/1.1 200 OK
< X-Backside-Transport: OK OK
< Connection: Keep-Alive
< Transfer-Encoding: chunked
< Session-Name: LBBROMXYTJZKKEGE-en-US_BroadbandModel
< X-Content-Type-Options: nosniff
< Content-Disposition: inline; filename="result.json"
< X-XSS-Protection: 1
< Date: Sat, 08 Oct 2016 22:45:02 GMT
< Via: 1.1 c6a59f5, 1.1 022614b, HTTP/1.1 d941b9b
< Content-Type: application/json
< Server: -
< Set-Cookie: Watson-REMOVED; path=/speech-to-text/api; secure; HttpOnly
< X-Client-IP: 71.70.244.18
< X-Global-Transaction-ID: 775715492
< X-DP-Watson-Tran-ID: stream-dp02-775715492
<
{
"results": [
{
"alternatives": [
{
"timestamps": [
[
"the",
0.03,
0.09
],
[
"latest",
0.09,
0.6
],
[
"weather",
0.6,
0.85
],
[
"report",
0.85,
1.52
]
],
"confidence": 0.98,
"transcript": "the latest weather report "
}
],
"final": true
}
],
"result_index": 0
* Connection #0 to host stream.watsonplatform.net left intact
我遇到了同样的问题。经过多次尝试,我发现 URL 是错误的。记住服务凭证信息:
{
"url": "https://stream-fra.watsonplatform.net/text-to-speech/api",
"username": "xxxxx-xxxxx-xxxxx-xxxxx",
"password": "yyyyyyy"
}
然后,您必须使用该信息中提供的 URL。以下是对我的好要求:
E:/Curl/curl.exe -X GET -u "xxxxx-xxxxx-xxxxx-xxxxx":"yyyyyyy" --output hello_world.wav "https://stream-fra.watsonplatform.net/text-to-speech/api/v1/synthesize?accept=audio/wav&text=Hello%20world&voice=en-US_AllisonVoice"
我的问题是我的凭据周围有大括号。教程说:
curl -X POST -u {username}:{password}
所以我输入了我的用户名和密码,但我留下了大括号。没有大括号效果更好!
我无法使用 curl 在 IBM Bluemix 上访问语音转文本 API!我使用 curl 尝试了文档中的无会话请求示例,但没有成功;我收到无效的 userID/password 消息。
这是我得到的错误:
"{ "code" : 401 , "error" : "Not Authorized" , "description" : "2016-10-08T15:22:37-04:00, Error ERCDPLTFRM-DNLKUPERR occurred when accessing https://158.85.132.94:443/speech-to-text/api/v1/recognize?timestamps=true&word_alternatives_threshold=0.9&continuous=true, Invalid UserId and/or Password. Please confirm that your credentials match the end-point you are trying to access. A common error is trying to use credentials from an experimental or beta release against a GA release or vice versa" } "
任何人都可以向我展示如何使用 curl 获得 api 语音转文本 api 无会话请求的工作示例吗?
无会话调用的文档可用here。
确保您创建了 Watson Speech-to-Text 服务的实例并使用来自该服务的凭证(而不是您的 Bluemix 用户 ID 和密码)。
您可以在 Bluemix UI 中创建服务并获取凭据,或者您可以通过命令行创建它:
$ cf create-service speech_to_text standard my_service
然后您可以创建服务凭证并获取它:
$ cf create-service-key my_service credentials-1
$ cf service-key my_service credentials-1
Getting key credentials-1 for service instance my_service as adasilva@us.ibm.com...
{
"password": "FJXUG6????",
"url": "https://stream.watsonplatform.net/speech-to-text/api",
"username": "147e438e-f633-4e40-8351-aaaaaaaaaa"
}
然后您可以在 curl 脚本中使用上面的用户名和密码。请参阅下面的 curl 命令和结果(为了安全起见,我屏蔽了用户名、密码和其他字段):
$ curl -X POST -v -u '80062070-1f88-4943-9a2a-aaaaaaa':'hwtTg???????' \
> --header 'Content-Type: audio/flac' \
> --data-binary @audio-file1.flac \
> 'https://stream.watsonplatform.net/speech-to-text/api/v1/recognize?timestamps=true&continuous=true'
* Trying 158.85.132.94...
* Connected to stream.watsonplatform.net (158.85.132.94) port 443 (#0)
* TLS 1.2 connection using TLS_RSA_WITH_AES_256_GCM_SHA384
* Server certificate: *.watsonplatform.net
* Server certificate: GeoTrust SSL CA - G3
* Server certificate: GeoTrust Global CA
* Server auth using Basic with user '80062070-1f88-4943-9a2a-aaaaaaa'
> POST /speech-to-text/api/v1/recognize?timestamps=true&continuous=true HTTP/1.1
> Host: stream.watsonplatform.net
> Authorization: Basic ODAwNjIwNzAtMWY4OC00OTQzLTlhMmEtYzE0OWVmOTJkM2IyOmh3dXXXXXX==
> User-Agent: curl/7.43.0
> Accept: */*
> Content-Type: audio/flac
> Content-Length: 48363
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
< X-Note: Gateway Ack
* We are completely uploaded and fine
< HTTP/1.1 200 OK
< X-Backside-Transport: OK OK
< Connection: Keep-Alive
< Transfer-Encoding: chunked
< Session-Name: LBBROMXYTJZKKEGE-en-US_BroadbandModel
< X-Content-Type-Options: nosniff
< Content-Disposition: inline; filename="result.json"
< X-XSS-Protection: 1
< Date: Sat, 08 Oct 2016 22:45:02 GMT
< Via: 1.1 c6a59f5, 1.1 022614b, HTTP/1.1 d941b9b
< Content-Type: application/json
< Server: -
< Set-Cookie: Watson-REMOVED; path=/speech-to-text/api; secure; HttpOnly
< X-Client-IP: 71.70.244.18
< X-Global-Transaction-ID: 775715492
< X-DP-Watson-Tran-ID: stream-dp02-775715492
<
{
"results": [
{
"alternatives": [
{
"timestamps": [
[
"the",
0.03,
0.09
],
[
"latest",
0.09,
0.6
],
[
"weather",
0.6,
0.85
],
[
"report",
0.85,
1.52
]
],
"confidence": 0.98,
"transcript": "the latest weather report "
}
],
"final": true
}
],
"result_index": 0
* Connection #0 to host stream.watsonplatform.net left intact
我遇到了同样的问题。经过多次尝试,我发现 URL 是错误的。记住服务凭证信息:
{
"url": "https://stream-fra.watsonplatform.net/text-to-speech/api",
"username": "xxxxx-xxxxx-xxxxx-xxxxx",
"password": "yyyyyyy"
}
然后,您必须使用该信息中提供的 URL。以下是对我的好要求:
E:/Curl/curl.exe -X GET -u "xxxxx-xxxxx-xxxxx-xxxxx":"yyyyyyy" --output hello_world.wav "https://stream-fra.watsonplatform.net/text-to-speech/api/v1/synthesize?accept=audio/wav&text=Hello%20world&voice=en-US_AllisonVoice"
我的问题是我的凭据周围有大括号。教程说:
curl -X POST -u {username}:{password}
所以我输入了我的用户名和密码,但我留下了大括号。没有大括号效果更好!