2017-10-16 247 views
0

我尝试录制我的声音并将其发送到Wit.ai上的/ speech方法。所以,从我的浏览器,我收集像这样的斑点,并希望执行$。阿贾克斯()请求:Wit.ai POST /发送HTTP请求

 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")); 

我还是一样的问题:
坏请求或机智没有按“T识别样品为WAV音频

回答

0

在示例代码中你如果您使用FormData向Wit提交请求,请按照MDN Web Docs:

FormData使用如果编码类型设置为multipart/form-data,表单将使用相同的格式。

但在您的要求中,您指定了audio/wavContent-Type。所以你发送一种类型的数据(multipart/form-data),但是说你发送了一个不同的类型(audio/wav)。

每机智API文档POST /speech

身体
把你的二进制数据(文件或流)的身上。

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

+0

谢谢,你是对的!我编辑了我的问题。 –

+0

@PabloDelaNoche将'recorder.clear()'移到你的'success'和'error'回调中。你确定'blob'有你期望的数据吗? –