我通过 xmlhttprequest 从 Ispeech 检索文件,然后使用音频上下文对其进行解码!但是当我尝试将文件保存到 FS 时,它只会产生损坏的 wav 文件!
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var fs = require('file-system');
var AWS = require('aws-sdk');
var AudioContext = require('web-audio-api').AudioContext
console.log("audioContext:",AudioContext);
AWS.config.update({
accessKeyId: 'test',
secretAccessKey: 'test'
});
(function(){
//var source = audioContext.createBufferSource();
var xhr = new XMLHttpRequest();
xhr.timeout = 2000;
xhr.onreadystatechange = function(e){
console.log(this);
if (xhr.readyState === 4){
if (xhr.status === 200){
// debugger;
console.log("data:",xhr.response);
//$response.innerHTML = xhr.response;
let byteArray= [];
let data = xhr.responseText;
for (var i = 0; i < data.length; ++i) {
byteArray.push(data.charCodeAt(i) & 0xff)
}
writeFile("/Users/mac/documents/test.wav",data);
audioContext = new AudioContext();
audioContext.decodeAudioData(byteArray, function(buffer) {
console.log("decoded data:",buffer);
writeFile("/Users/mac/documents/test.wav",buffer._data);
enter code here
//source.buffer = buffer;
//source.connect(audioContext.destination);
//source.loop = true;
});
/*
} else {
console.error("XHR didn't work: ", xhr.status);
}
}
}
xhr.ontimeout = function (){
console.error("request timedout: ", xhr);
}
xhr.responseType = "arraybuffer";
xhr.open("get", "http://api.ispeech.org/api/rest?apikey=test&action=convert&text=This+is+the+text+I+want+to+convert&voice=usenglishfemale&format=wav&frequency=8000&Bitdepth=8&speed=-1&startpadding=0&endpadding=0&pitch=100&filename=myaudiofile", /*async*/ true);
// xhr.responseType = "text";
xhr.send();
})();
var writeFile = function (path, buffer, permission) {
console.log(buffer.length);
permission = permission || 438; // 0666
var fileDescriptor;
try {
fileDescriptor = fs.openSync(path, 'w', permission);
} catch (e) {
fs.chmodSync(path, permission);
fileDescriptor = fs.openSync(path, 'w', permission);
}
if (fileDescriptor) {
fs.writeSync(fileDescriptor, buffer, 0, buffer.length, 0);
fs.closeSync(fileDescriptor);
}
}
编辑:原始数据如下所示:
RIFFoC\u0000\u0000WAVEfmt \u0010\u0000\u0000\u0000\u0001\u0000\u0001\u0000@\u001f\u0000\u0000@\u001f\u0000\u0000\u0001\u0000\b\u0000dataKC\u0000\u0000�����������������������������������������������������������������������������~~}}}}}}~~�������������~{xutrqqrtvz��������������{uojgb`acfkqx�����������������zvqmhda`_]^`bejqx~������������������|tld^YVTSSUX]ahqz�������������������zskd^YVTSSUX\\ahq{�����������������{rib[UQPNLLMPT[dny�������������������xmbXNFB=84347>IVdr��������������û����|m`TI>61.*&\'+08CRbq��������������ǿ����{l^RG<3/,)&&)/6AQao}�������������������~naUK@71/,))+05>KZhv��������������������~pcWLA82/+))+/6@M[iw��������������ƽ����|nbWLB:40-+,.29BN\\jw��������������Ļ����{nbWMD<7310137>FQ]jw�������������ſ�����|pe\\RJC>:878:>DKT_jw��������������������~sjaXQLFB@@@BEJPW`jt��������������������wof^WRMIGGGHKOUZbir{�������������������xpcabQGGKKLKTWZ`jsz������������������qg]WQMGA;?KMO[flv�������������������ofbWMKHB8DVRZpz��������������������wrhWLG=\'&KMJt����������������������weVH5$\u0015\u0013<GR�����������������������weVI6$\u0015\u0013<GR����������������������~mZB/ \u000b\u0000-IH�������������}���������o[F/\u001b\u0011\u0000\u001aHIq�����ȼ�����~���������q_J2\u001c\u0012\u0000\u0013GFj�����ɾ�����|���������s`M5\u001d\u0016\u0002\u0012HFf�����Ȼ�����}���������sbP7\u001e\u0018\u0003\u0016HEi�����ļ�����~���������qbN1#\u0017\u0002-IFz����ʾ���������������ocH,$\u0011\f<CS�����ƻ���������������ygW;%\u001b\u0002!E<o����������������������l`J0&\r\u0011>:R�����ü���������������wdU>0\u001f\f2?>p����������������������vdV>0\u001f\f2?>q����������������������lYJ>)\u00133C:b����������������������q`TI:%1I@W{��������������������rbVL;(#<>Cm}������ù����������~zoaUOD6-7HFXt~������������������xmhbXSPF=JUSdu|������������������wqohdb]TTVX_fpw{�����������������}zwsjgg_X]]^fnsy������������������}yyuqopmgkmkjpvvz�������������������woooiinnoupxzz~�����������������}vxxrsttwzxwzy�{���������������}|y}vwv}uv|zzx�����������������~w��z{|ytz~yzx{{}����������������~~�||z{xv{yyz}}{�����������������}}|{{{zyz{z}}{~�����������������~|zzzzz{{z{~~��������������������~}{zzzz{{z{~~����������������~|}{|}{{|}}}�~~����������������}~||}}|}}}�������������������~}~~|}|||}���������������~}|~}~}}����������������}~~~}~~~}~�~~��������������~~~�~~�~��������}��~~~�~~����������������}�~~�~��~~��~~���|����~}�������|~��~�~~�������~~�����~���}|~~�}��������|~��~��~}����}~y��~~~�����{}~~��~��~�}���}��~������|�~���~��|��~��������~}�}~|{~|~�}���~�������������~|{zzwyzxxwwwuu{|{���������������}wlc_ZTMH?FV^q������������������������|wmd`ZUMH?FU]q��������������������}ul^N?4$\u001a2JIY{�����������������������yj`O:1\u001f\u00132GLd�����������������������{ph[G62\u0018\u0018ANTp������������������������ynhYB4-\u0017!DOZs�������������~����������{ni]J83\u001f\u001eALTm��������������|����������{wo_PB;"#FIPhz������������}�����������ysbMB=$\u001b<FHZq�������������������������}znZKD:"&@DG\\py������������������������~yn^TJC4+=EFSbov������������������������}yn^TJC4+=EFScnu�����������������������~xti^TQK@:EJLU_kqx����������������������|vume`\\YXQNRSV[`flt}���������������������yvtokhfa`]YYY\\_`dkpv}��������������������}zwtqnkgeec```aeglpty~���������������������~{wuqnljkkkkllloqstyz|���������������������~|zyxwvuuutuvvxxxz{|}~~����������������������~|~|{||zz{zzz{||||~}}~~�������������������������~~~}~~~~|~~}}~~~�����������������������~~~~~~~}}}}}}~~~������������������������~~~~}}~~~}~~~������������������������������~~~}}~~~}~~~���������������������������~������������������������~��������������������������~~~~~���������������������~~~~~~~~~~~���������������������~~~~~~~~~~~~���������������������~~~~~~~~~�����������������������~�����������������y{yww~{wwx}}|������������xvrz{vutvzz}��������~�����}�}���yx��z{}}~|}��}��~~���������������~xw��z{}}~|~��~��~~�������������~~�~yx}}y{�}yz|yqsstqsz{z�������������{y~}y{�|yy{wqstvtx~�����������������������|uwlb^ME4)LMPy�������������~���������������}z|{xomgSJ@&=RKi~������������}}����������������{y~xpqg]RJ<6PPVt|�����������������������������}}}|zvuqlkgfednsrx|~}~�������������������������������~{yywwwxxxyxxwvuussttvxz}��������������������~|{zyxyyzz|}}~~~~~~~}~����������������������~}}}}|}}}~~~~~~~~~~~���������������������~}}}}|}}}~~~~~~~~~~~��������������������~~}}}}}~~~��������������������������~~~~}~~�����������������������������������������������~~~~~~~~~������������������������~~~~~~~~~~~~~~~���������������������������~~������������������������������~~~~~~�����������������}�����~�|y|wvxy�{|~|~����}�}~~�}��~����}��}}�v~}�}�|~{||~|{}{{z|~y}�z�|}|{�z}�{~|{~{|}~~}�|�~����~��~�z���~�}~|}||{}|{z|~y}�z�|}|{�{}�z~|�{}|~�~�~�}���������~������������{}�~��|�}�~��~�}�����~�}�{�}��{�|��w��w�~{�|}����|��z��}����}�z}�|~��{��|�~~����z~yw�}��z}ysw�����u|x}���}~v|�~�y~vy�~���x�}|��~�|}y�~|���~�y|�~�~{~w{����x�~|��~�|}z�|����{|�|�{����|�{y�p��y��~�uyyy�~�{~�{�~y�~}|�{~��|}�~z��}�|{�v~�|���}{�}|��|��{�{~}x�z����~{�{���r������yt~{���}��y}��{��y��~u�|u�����ur���|��mw�~���yu��|~��}���yw|}���}t{}���{y�|��}�|t����|~�vy��{~�|yy��z��{x��~~��|~����z~|�~|��zx������}z��|���{~�~���}~�||��xv�yr|�xs|{pt�||������������������~yofgjcY[VNSp}}�����������������������}yoggjcZZVNSp~������������������uqrlghaD7.Cwqy�wkj�������������������vfXUN:&%K���{~]V��������������������zoXF:61<l���{dRc�������������{������jc^NHI9<f����^No������~������t�����xe^THR8*d����~VPx�����{�������o~�����s_\\XEX+/�����Bd������w������wq������j\\ZSKU*H�����mMr�������������x������{l^VDK5$r�����TU������������z������|m^VDK5$r�����UQ}������������y������uf]MDQ!:�����rGrz�������������������xiUDN9#bv����aV}|��������������������zcJJC):j|���{hswy��������������������q_TB,%@gq���j|yr|����������������}��zf[M4&6QWn�x�{x�����������������}}zrldVI<6CQ_qy���������������������{wvroof\\WNLV\\fmr{~�������������������}wvtrnkidbbchptt|�������������������~|{yzyxusurrtvx{~�����������������������~~~|}|}}}~~~�����������������~~~~}}~||}||}}~~~�����������������~~~~~}|||}~}}}}~������������������~}}}||}}|}}}~~�������������������~~~~~}~~}~~~~~���������������������~~~~~~~~~~����������������������~~~~~~~~~~���������������������~~~~~~~~~��������������������{ppz���{ww{����~}~���������������~~~~~���������������������������}wwy}�|}~����~}~���~��~~��~~�~~�}�����~��~~������~~��}~�~�������������������~~��~~��~��~�����~��~������|~��~}��~�~���}~������������������}�����~~��}~��~��|~��}~�~��~�~�����~���~~�����~���|���|��~��}�~}}��|��~~��~����~�~��~�~~����~~�����~����~�������������~������~~~��}���������~�~��������������~����������������������~�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������}�}|{z�{��}{|y�~u|xvy|zz��{��y���|vvopz||{�����}��{}}}��{|y{}|{��|���z���|vvopz||{�����~|�|�������~���������~}~�~�������~~�����~~��������������������~�����~~~~����~~~��������~�����~~~~����~~~���������~~�������������~���������������~~�������������~�������������������������������������������������������uttrux��vtw��}}~�~������������|}|}|vqsy}����|{�������������zx|�~x���}nklig]{���ket�������z��������������wrvuvtskZPQt���rslqy�������������������}���{ssj_D8\u001f-��͒I1M�������s��������������up~�����|���pdaa[O?,E|��{URm����������������������tv�����qgcfffY?\u001c4z���W[s�|�����z��������������yy���|qpkmfcWH)\u001d_���XF]�������}��������������z{���}qpkmfdXH)\u001d_���VE\\�������y��������������z}���}|th`_c\\N4"Iy��rZ]x{���������������������|vx}��w^RS]PJ,!M|��iZ]s���������������~�������znx��pV\\c`D7()V{��wQQr����������������������|yxz~sd`_YB<#&[���cZbi��������������z�������un'