Wit.ai POST /语音与HTTP请求

时间:2017-10-16 23:09:35

标签: javascript jquery ajax wit.ai

我尝试录制我的声音并将其发送到Wit.ai上的/ speech方法。所以,从我的浏览器中,我收集这样的blob并想要执行$ .ajax()请求:

      recorder && recorder.exportWAV(function (blob) {
            callback(blob);
            // Ajax request here !
            var data = new FormData();
                data.append('file', blob);

                $.ajax({
                  url :  "https://api.wit.ai/speech?v=20171010",
                  headers: {
                    'X-Requested-With': 'JSONHttpRequest',
                    'Content-Type': 'audio/wav',
                    'Authorization' : 'Bearer OHROML6TAXxxxxxxxxxxxxSRYOVFCC'
                  },
                  type: 'POST',
                  data: data,
                  contentType: false,
                  processData: false,
                  success: function(data) {
                    alert(data);
                  },
                  error: function(error) {
                    alert("not so boa!"+JSON.stringify(error));
                  }
                });

            recorder.clear();
        }, (AudioFormat || "audio/wav"));

我的所有结果都是400错误!错误的请求 !或“不匹配内容类型”。
这里有任何帮助。

我尝试没有成功:

recorder && recorder.exportWAV(function (blob) {
                    callback(blob);




                    $.ajax({
                      type: 'POST',
                      headers: {
                        'Authorization' : 'Bearer OHROML6TAEDFxxxx5W2SRYOVFCC'
                      },
                      url: 'https://api.wit.ai/speech?v=20171010',
                      data: blob,
                      contentType: 'audio/wav', // set accordingly
                      processData: false,
                      success: function(data) {
                        alert(data);
                      },
                      error: function(error) {
                        alert("not so boa!"+JSON.stringify(error));
                      }
                    });

                                      // Clear the Recorder to start again !
                    recorder.clear();
                }, (AudioFormat || "audio/wav"));

我还有同样的问题:
错误请求或Wit不会将示例识别为wav音频。

1 个答案:

答案 0 :(得分:0)

在您提供的示例代码中,您使用FormData向Wit提交请求。根据MDN Web Docs:

  如果编码类型设置为FormData,则

multipart/form-data使用与表单相同的格式。

但是在您的请求中,您指定Content-Type audio/wav。因此,您要发送一种类型的数据(multipart/form-data),但是说您要发送其他类型的数据(audio/wav)。

根据POST /speech的Wit API文档:

  

<强>车身
  将二进制数据(文件或流)放在正文中。

要将音频作为二进制数据发送,请按照this answer to "How can javascript upload a blob?"进行操作,其中包含使用jQuery的示例。