7
audioContext에서 가져 오는 샘플 속도를 다운 샘플링하려고합니다. 나는 그것이 44100에오고 있다고 믿고, 나는 그것을 11025가되기를 원한다. 나는 매 3 개의 샘플을 평균 할 수 있다고 생각하고 정확한 비율로 재생하지만 피치는 너무 높다. 마치 우리가 모두 헬륨 .자바 스크립트에서 PCM 오디오 버퍼 다운 샘플링
float32Array를 44100에서 11016 샘플의 int16Array로 다운 샘플링하는 올바른 방법은 무엇입니까?
var context = new Flash.audioContext();
var audioInput = context.createMediaStreamSource(stream);
var recorder = context.createScriptProcessor(null, 1, 1);
recorder.onaudioprocess = onAudio;
audioInput.connect(recorder);
recorder.connect(context.destination);
var onAudio = function (e) {
var left = e.inputBuffer.getChannelData(0);
bStream.write(Flash.convertFloat32ToInt16(left));
}
var convertFloat32ToInt16 = function(buffer) {
var l = buffer.length;
var point = Math.floor(l/3);
var buf = new Int16Array(point);
for (var x = l; x > 0;) {
var average = (buffer[x] + buffer[x-1] + buffer[x-2])/3;
buf[point] = average*0x7FFF;
point -= 1;
x -= 3;
}
return buf.buffer;
}
이 게시물에 대한 하나님 감사합니다. 너 정말 잘 모르겠다. –
그것은 누군가를 도울 수있어서 기뻤습니다 :) 그것은 해결할 난장판이었습니다. – Neablis
당신은 내 하루를 저장합니다 : 'D – diewland