Я пытаюсь понизить частоту дискретизации, которую я получаю от audioContext. Я считаю, что он приходит в 44100, и я хочу, чтобы это было 11025. Я думал, что могу просто усреднить каждые 3 образца, и он воспроизводит правильную скорость, но высота слишком высока, как если бы мы все были на гелии ,Уменьшение дискретизации звукового буфера PCM в javascript
Каков правильный способ сглаживания float32Array от 44100 до int16Array с образцами 11025.
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;
}
Слава богу за это сообщение. Помог мне так сильно, что ты понятия не имел. –
Im рад, что он смог помочь кому-то :), который был беспорядок, чтобы решить. – Neablis
Вы экономите мой день: 'D – diewland