2017-10-16 11 views
0

私は自分の声を録音して、Wit.aiの/ speechメソッドに送ろうとします。だから、私のブラウザから、私はこのようなブロブを集めると$アヤックス()リクエストを実行したい:Wit.ai POST/speech wth 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オーディオとしてサンプルを認識doesnのを

答えて

0

のサンプルコードで使用しますあなたがFormDataを使用してウィットするための要求を提出している、提供MDNのWebドキュメントごと:。

FormDataを使用していますエンコーディングタイプがmultipart/form-dataに設定されている場合にフォームが使用するのと同じフォーマット。

ご希望の場合は、のContent-Typeをご指定ください。つまり、あるタイプのデータ(multipart/form-data)を送信していますが、別のタイプ(audio/wav)を送信しているとします。

POST /speechのためのウィットのAPIドキュメント毎

ボディ
ボディにあなたのバイナリデータ(ファイルまたはストリーム)を置きます。

オーディオをバイナリデータとして送信するには、this answer to "How can javascript upload a blob?"(jQueryを使用した例)があります。

+0

ありがとうございます!私は私の質問を編集しました。 –

+0

@PabloDelaNoche 'recorder.clear()'を 'success'と' error'コールバックに移動します。 'blob'にはあなたが期待するデータがありますか? –