2016-08-12 4 views
0

Ich verwende Bing Text zu Sprache api von Azure kognitive Dienste.So konvertieren Sie Rohdaten in Audio in JavaScript

post_option.headers = { 
     'content-type' : 'application/ssml+xml', 
     'Content-Length' : post_data.length, 
     'X-Microsoft-OutputFormat' : 'riff-8khz-8bit-mono-mulaw', 
     'Authorization': 'Bearer ' + OxfordAccessToken.access_token, 
     'X-Search-AppId': '', 
     'X-Search-ClientID': '', 
     "User-Agent": "TTSNodeJS" 
    }; 

var post_req = https.request(post_option, function(res){ 
     var _data=""; 
     res.on('data', function(buffer){ 
      //get the wave 
     _data += buffer; 
     }); 

     // end callback 
     res.on('end', function(){ 

     console.log('wave data.length: ' + _data.length); 
     }); 

     post_req.on('error', function(e) { 
     console.log('problem with request: ' + e.message); 
     }); 
    }); 

Ich habe die Rohdaten von Audio im String-Format erhalten. Ich möchte die Daten als .mp3 oder .mp4 Datei speichern. Ich konnte diese Rohdaten mit dem folgenden Code als .wav speichern.

var fs = require('fs') 
fs.writeFile('./audio.wav', data, 'binary', function(err) { 
if(err) console.log(err); 
else console.log("File saved"); 
}); 

Aber das Ende binäre Audiodatei ist voller Rauschen und konnte nicht verwendet werden. Wenn 16-Bit-Header verwendet wird, hat die Audiodatei mehr Rauschen.

Ich brauche Hilfe, um die Ausgabedaten zu .mp3/.mp4 Audiodatei ohne Rauschen zu speichern, bitte schlagen Sie einen Weg vor, fortzufahren.

Antwort

0

Ich nutze request Modul, um diese Funktionalität zu implementieren, die erstellte Audiodatei war ohne Rauschen wie von Ihnen erwähnt klar. Hier ist mein Test-Code-Schnipsel:

 var SsmlTemplate = "<speak version='1.0' xml:lang='en-us'><voice xml:lang='%s' xml:gender='%s' name='%s'>%s</voice></speak>"; 
     var post_data = util.format(SsmlTemplate, 'en-US', 'Female', 'Microsoft Server Speech Text to Speech Voice (en-US, ZiraRUS)', 'This is a demo to call microsoft text to speach service in javascript.'); 
     console.log('\n\ntts post_data: ' + post_data + '\n'); 

     var post_option = { 
      url: "https://speech.platform.bing.com/synthesize", 
      method: 'POST', 
      body :post_data 
     }; 
     post_option.headers = { 
      'content-type': 'application/ssml+xml', 
      // 'Content-Length': post_data.length, 
      'X-Microsoft-OutputFormat': 'riff-16khz-16bit-mono-pcm', 
      'Authorization': 'Bearer ' + OxfordAccessToken.access_token, 
      'X-Search-AppId': '07D3234E49CE426DAA29772419F436CA', 
      'X-Search-ClientID': '1ECFAE91408841A480F00935DC390960', 
      "User-Agent": "TTSNodeJS" 
     }; 

     var post_req = request.post(post_option).on('response', function(response) { 
      console.log(response.statusCode) // 200 
      console.log(response.headers) 
      }).pipe(fs.createWriteStream('audio.mp3',{defaultEncoding:'binary'})); 

Andernfalls könnten Sie bitte Ihre Testschablone und die lokale Umfeld. Jede Sorge, bitte zögern Sie nicht mich wissen zu lassen.

+0

Ich weiß, dass dies ein alter Beitrag ist, aber ich muss genau das tun, aber auf umgekehrte Weise. Ich muss eine mp3-Datei in Rohdaten umwandeln. Kennen Sie eine Lösung dafür? – cmarrero01

Verwandte Themen