Javascript-WAV文件数据到字节数组的转换问题-产生大量噪音

Javascript-WAV文件数据到字节数组的转换问题-产生大量噪音,javascript,arrays,audio,wav,Javascript,Arrays,Audio,Wav,我有一个返回WAV文件的API。在我的Javascript中,我试图将原始数据转换为字节数组。我在最后的音频中听到了很多噪音/静电。 有人能告诉我如何修复字节数组转换(getByteArray方法)。谢谢大家! var fileElem=document.getElementById('file-input'); fileElem.addEventListener('change',readSingleFile,false); 函数readSingleFile(e){ var file=e.t

我有一个返回WAV文件的API。在我的Javascript中,我试图将原始数据转换为字节数组。我在最后的音频中听到了很多噪音/静电。 有人能告诉我如何修复字节数组转换(getByteArray方法)。谢谢大家!

var fileElem=document.getElementById('file-input');
fileElem.addEventListener('change',readSingleFile,false);
函数readSingleFile(e){
var file=e.target.files[0];
如果(!文件){
返回;
}
var reader=new FileReader();
reader.onload=函数(e){
var内容=e.target.result;
播放音频(内容);
};
reader.readAsText(文件);
}
功能播放音频(dataStr){
var数组=getByteArray(dataStr);
var isWAV=array[0]==82&&array[1]==73&&array[2]==70&&array[3]==70&&
数组[8]==87&&array[9]==65&&array[10]==86&&array[11]==69;
log(“是有效的WAV文件吗?:”+isWAV);
var message=document.getElementById('message');
中频(isWAV){
message.innerHTML=“”;
//从Uint8Array和对象URL创建blob。
var blob=新blob([array]{
键入:“音频/wav”
});
var url=url.createObjectURL(blob);
//获取DOM元素。
var audio=document.getElementById('audio');
var source=document.getElementById('source');
//将blob对象URL插入音频元素并播放。
source.src=url;
load();
音频播放();
}否则{
message.innerHTML=“您选择了一个非WAV文件!!!”;
}
}
函数getByteArray(dataStr){
var数组=新的Uint8Array(dataStr.length);
对于(变量i=0;i
选择一个WAV文件

您的浏览器不支持音频标记。
现在解决了吗?还有为什么
.readAsText(文件)
而不是
.readAsBinary(文件)?谢谢@VC.One FileReader.readAsBinaryString()解决了此问题。在我最初使用API响应的主体作为字符串的情况下,也存在同样的问题。我通过在GET请求中使用responseType:ResponseContentType.Blob以Blob形式检索文件来解决这个问题。