4

Node.js から bing speech to text サービスを使用しようとしています。.wav ファイルのストリーミング中に以下のエラーが発生しました。助けていただければ幸いです。

events.js:154
      throw er; // Unhandled 'error' event
     ^
Error: read ECONNRESET
    at exports._errnoException (util.js:890:11)
    at TLSWrap.onread (net.js:550:26)

HTTP オプションは次のとおりです。

        var post_option = {
            hostname: 'speech.platform.bing.com',
            path: '/recognize',
            method: 'POST'
        };
        post_option.headers = {
            'Content-Type': 'audio/wav; samplerate=16000', //'audio/wav; codec=”audio/wav”; samplerate=16000; sourcerate=8000; trustsourcerate=false',
            // 'keepAlive': true,
            // 'Content-Length' : waveData.length,
            'Authorization': 'Bearer ' + OxfordAccessToken.access_token,
            // "User-Agent": "TTSNodeJS",
            'X-Search-AppId': '______',
            'X-Search-ClientID': '______'
        };

        post_option.qs = {
            'scenarios': 'ulm',
            'appid': '--------', // This magic value is required
            'locale': 'en-US',
            'device.os': 'wp7',
            'version': '3.0',
            'format': 'json',
            'requestid': '------', // can be anything
            'instanceid': '------' // can be anything   
        };

SpeechToText サービスへの NodeJS 呼び出し

            res.on('end', function(){
                OxfordAccessToken = eval ('(' + _data + ')');       
                var voiceStream = fs.createReadStream("voiceresponse.wav",{encoding: "binary"});
                var https = require('https');
                var post_req = https.request(getPostOptionsForSTT(OxfordAccessToken), (res) =>{
                    if(err){
                        console.log("Error during STT");
                    }
                    var sttResponse;
                    res.on('data', function(buffer){
                         sttResponse += buffer;
                    });
                    console.log("STT Results : "+sttResponse);
                });
                voiceStream.pipe(post_req,{ end: false });
4

1 に答える 1

0

raserside は自分自身で質問に答えましたが、時間を少し節約するためにコードを示します。

const querystring = require('querystring'); // or query-string, or qs

var params = {
    'scenarios': 'ulm',
    'appid': 'D4D52672-91D7-4C74-8AD8-42B1D98141A5',
    'locale': 'en-US',
    'device.os': 'wp7',
    'version': '3.0',
    'format': 'json',
    'requestid': '------', // can be anything
    'instanceid': '------' // can be anything   
};

var post_option = {
    hostname: 'speech.platform.bing.com',
    path: '/recognize?' + querystring.stringify(params),
    method: 'POST'
};

post_option.headers = {
    'Content-Type': 'audio/wav; samplerate=16000', // For example
    'Authorization': 'Bearer ' + OxfordAccessToken.access_token
};
于 2016-08-05T23:36:50.413 に答える