2017-10-23 10 views
0

JavaScriptでは、recorder.jsを使用してマイク入力をキャプチャし、16kHzにサンプリングし、WAVファイルとしてエンコードしてblobを取得します。 次に、FileReader onload()コールバックを介してraw blobバイトを取得し、XMLHttpRequestを使用してBingにrawバイトを送信()します。 XMLHttpRequestには、次のヘッダーが含まれています。 'Ocp-Apim-Subscription-Key': 'xxxxxx' 'Content-Type': 'audio/wav;コーデック=オーディオ/ pcm; samplerate = 16000 ' サンプルのブロブサイズは62456バイトです。Azureビング認知サービスREST経由のjavascriptのテキストへのスピーチ

FireFoxネットワークトレースは2つの相互作用を示します。 https://speech.platform.bing.com/speech/recognition/interactive/cognitiveservices/v1?language=en-US&format=simple リクエスト方法:最初は リクエストURLでOPTIONS と第二 リクエストURL:https://speech.platform.bing.com/speech/recognition/interactive/cognitiveservices/v1?language=en-US&format=simple リクエスト方法:POST コンテンツ長:94476

はしかし、私は以下の回答 { "RecognitionStatus" を得続けます: "InitialSilenceTimeout"、 "Offset":29000000、 "Duration":0}

FWIW、なぜソースBLOBサイズが62456の場合、コンテンツ長さは94476になるのでしょうか?

同じraw blobバイトがAmazon Lexによって適切に処理されます。

JavaScriptのRESTfulな例はありますか? 多くのありがとうございます。

/--------------------------------------------- ----------------- 以下のテストケースをまとめると、私は次のことも成功しました。

console.log("Send to BING blob"); 
var self = this; 
console.log(blob); 
var msUrl = 'https://speech.platform.bing.com/speech/recognition/interactive/cognitiveservices/v1'; 
msUrl += '?language=en-US'; 
msUrl += '&format=simple'; 
console.log(msUrl); 
var xhr = new XMLHttpRequest(); 
xhr.onload = function(evt) { console.log('onload', xhr, evt);}; 
xhr.open('POST', msUrl, true); 
xhr.setRequestHeader('Accept', 'application/json;text/xml'); 
xhr.setRequestHeader('Ocp-Apim-Subscription-Key', 'xxx'); 
var bingContentType = 'audio/wav; codec=audio/pcm; samplerate=16000'; 
xhr.setRequestHeader('Content-Type', bingContentType); 
xhr.send(blob); 
+0

こんにちは、問題を再現できるように、[最小、完全、および検証可能な例](https://stackoverflow.com/help/mcve)を入力してください。 –

+0

こんにちはPaul、 例をまとめて https://s3.amazonaws.com/pmh.bingspeech.1/index.htmlに投稿しました マイクアクセスのためにHTTPSが必要でした。 ビングの呼び出しが範囲内である https://s3.amazonaws.com/pmh.bingspeech.1/scripts/conversation.js周り線112 varが=関数(状態)を送信することから始まる関数中の { ... 内にフォルダ全体があります。https://s3.amazonaws.com/pmh.bingspeech.1/bingSpeech.zip – john

+0

ウェブページに基本的なテスト手順を表示しました。 私はテストのためにWindows上でChromeとFirefoxを使用しています。 一般的な返信は {"RecognitionStatus": "InitialSilenceTimeout"、 "Offset":22000000、 "Duration":0} です。Bingはブラックボックスで、送信されるバイトは見た目(およびサウンド)が妥当です。 ご指導いただければ幸いです。 – john

答えて

0

Bingに送信するコードバージョンが短かったのは問題ありませんでした。問題は、レコーダー作業者のencodeWAV(サンプル)関数が に16000までのダウンサンプリングを考慮していないことでした。この関数は、キャプチャされたサンプリングレートをヘッダー値として誤って書き込んでいました。微調整される線である:それだけビングサービスに対し、16kHzのモノが送信されているサポートされるオーディオ形式のかを決定するために、ヘッダ情報を見なければならない期待よう

view.setUint32(24, downSampleRate, true); 
view.setUint32(28, downSampleRate * 2, true); /*MONO*/ 

明らかAWSレックスは、ヘッダ値を無視します。

関連する問題