0

我正在尝试使用 Nuance 将语音转换为文本,因此我正在尝试发送此请求

curl "https://dictation.nuancemobility.net:443/NMDPAsrCmdServlet/dictation?appId=[INSERT YOUR APP ID]&appKey=[INSERT YOUR 128-BYTE STRING APP KEY]&id=C4461956B60B" -H "Content-Type: audio/x-wav;codec=pcm;bit=16;rate=16000" -H "Accept-Language: ENUS" -H "Transfer-Encoding: chunked" -H "Accept: application/xml" -H "Accept-Topic: Dictation" -k --data-binary @audio_16k16bit.pcm  

需要上传音频文件(.pcm)格式。

我正在使用 okhttp3 库以下是构建器

RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM)
                .addFormDataPart("file", "audio_16k16bit.pcm", RequestBody.create(MEDIA_TYPE_PNG, "audio_16k16bit"))
                .build();


    httpBuider.addQueryParameter("appId", "NMDPTRIAL_XXXXXXX_XXX_com20161122071457").addQueryParameter("appKey", "fadaed7b801e10d84272c0a75317d8cee13ab86ae902ab322cd6e1219fcbe79aa5d41526f225fe3497bfdbead6b4b9b7ee7122d773cd0a9fa3ebc042b7a7dc5c");
    Request request = new Request.Builder().addHeader("Content-Type","audio/x-wav;codec=pcm;bit=16;rate=16000").addHeader("Accept-Language","eng-GBR").addHeader("Transfer-Encoding","chunked").addHeader("Accept","application/xml").addHeader("Accept-Topic","Dictation").post(requestBody).url(httpBuider.build()).build();

我收到以下日志

HTTP 错误 500

访问 /NMDPAsrCmdServlet/dictation 时出现问题。原因:

    服务器错误

缺少什么?

4

2 回答 2

0

我刚刚使用泽西岛也经历过同样的事情。对我来说问题是,Jersey 覆盖了内容类型标题(我尝试使用Application_Octet_Stream)。

这是我最终让它工作的请求:

Response myResponse = target.
request().
accept(MediaType.TEXT_PLAIN_TYPE).
header("Accept-Language","DEDE").
header("Accept-Topic", "Dictation").
header("Transfer-Encoding","chunked").
post(Entity.entity(speechStream, "audio/x-wav;codec=pcm;bit=16;rate=16000"));

我建议使用 fiddler 之类的东西来找出真正发布的内容并将其与 curl 帖子进行比较。这就是我最终发现我的请求有什么问题的方式。

于 2017-10-02T10:38:47.550 回答
0

删除标题"Transfer-Encoding","chunked"。我的错误是通过删除它来修复的。

于 2018-08-06T15:32:13.453 回答