Audio Javascript格式的Web音频API下采样44.1 khz

Audio Javascript格式的Web音频API下采样44.1 khz,audio,getusermedia,downsampling,recorder.js,Audio,Getusermedia,Downsampling,Recorder.js,我正在使用RecorderJS录制来自用户的麦克风流。默认导出为44.1 kHz、16位的WAV文件。我是否可以将采样频率降低到11kHz或16kHz,而不会让它听起来很奇怪? 我是否可以仅使用javascript从Web音频API getUserMedia流中获取16位16khz WAV文件 我试图减少文件大小,从而为用户节省大量带宽。谢谢。编辑:还有一件事,您也可以只发送一个频道,而不是同时发送两个频道 我不确定这是不是正确的方法,但我通过对从麦克风接收到的数据进行插值, 我猜,你是从麦克风

我正在使用RecorderJS录制来自用户的麦克风流。默认导出为44.1 kHz、16位的WAV文件。我是否可以将采样频率降低到11kHz或16kHz,而不会让它听起来很奇怪? 我是否可以仅使用javascript从Web音频API getUserMedia流中获取16位16khz WAV文件


我试图减少文件大小,从而为用户节省大量带宽。谢谢。

编辑:还有一件事,您也可以只发送一个频道,而不是同时发送两个频道

我不确定这是不是正确的方法,但我通过对从麦克风接收到的数据进行插值, 我猜,你是从麦克风中捕获数据的

this.node.onaudioprocess=函数(e){
如果(!录制)返回;
worker.postMessage({
命令:“记录”,
缓冲区:[
e、 inputBuffer.getChannelData(0),
e、 inputBuffer.getChannelData(1)
]
});
}
现在将其修改为

var oldSampleRate=44100,newSampleRate=16000;
this.node.onaudioprocess=函数(e){
var leftData=e.inputBuffer.getChannelData(0);
var rightData=e.inputBuffer.getChannelData(1);
leftData=InterpolatorRay(leftData,leftData.length*(newSampleRate/oldSampleRate));
rightData=InterpolatorRay(rightData,rightData.length*(newSampleRate/oldSampleRate));
如果(!录制)返回;
worker.postMessage({
命令:“记录”,
缓冲区:[
leftData,
rightData
]
});
}
函数插值array(数据、fitCount){
var linearinterpolite=函数(在点之前、之后、之后){
返回之前+(之后-之前)*点;
};
var newData=newarray();
var springFactor=新数字((data.length-1)/(fitCount-1));
newData[0]=数据[0];//用于新分配
对于(变量i=1;i