如何使用curl访问IBM语音到文本api?

我无法使用curl访问IBM Bluemix上的语音到文本API!我尝试使用curl的无会话请求的文档中的示例,但它不起作用;我收到了无效的用户ID /密码消息 .

这是我得到的错误:

“{”code“:401,”error“:”Not Authorized“,”description“:”2016-10-08T15:22:37-04:00,访问https://158.85时出现错误ERCDPLTFRM-DNLKUPERR . 132.94:443 / speech-to-text / api / v1 / recognition?timestamps = true&word_alternatives_threshold = 0.9&continuous = true,无效的UserId和/或密码 . 请确认您的凭据与您尝试访问的终端相匹配 . 一个常见错误是尝试使用针对GA版本的实验版或测试版发布的凭据,反之亦然“}”

任何人都可以向我展示一个如何通过curl获取api无会话请求到语音到文本api的工作示例吗?

回答(3)

2 years ago

无会话调用的文档可用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

2 years ago

我遇到了同样的问题 . 经过多次尝试,我发现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” - 输出hello_world.wav“https://stream-fra.watsonplatform.net/text-to-语音/ API / V1 /合成?接受=音频/ WAV和文字=你好%20world和语音= EN-US_AllisonVoice”

2 years ago

我的问题是我的凭据周围有大括号 . 教程说:

curl -X POST -u {username}:{password}

所以我输入了我的用户名和密码但是我留下了大括号 . 没有大括号,效果会更好!