我尝试录制我的声音并将其发送到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音频。
答案 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的示例。