Моя цель - записать высококачественное музыкальное аудио на моей веб-странице, работающей в Chrome на Android
Для этой цели я возился с API getUserMedia.
Я передаю следующее ограничение для get media:
constraints = {echoCancellation: {exact: false},
autoGainControl: {exact: false}};
navigator.mediaDevices.getUserMedia({audio: constraints}).then(record_processor);
И вот как я обрабатываю поток, полученный в обратном вызове getusermedia:
function record_processor(stream){
console.log('in record_processor');
context = new AudioContext();
var source = context.createMediaStreamSource(stream);
buffer_size = 1024*16;
var processor = context.createScriptProcessor(buffer_size,1,1);
source.connect(processor);
processor.connect(context.destination);
sample_rate = context.sampleRate;
console.log('sample rate: ' + sample_rate);
total_iterations = ((TOTAL_RECORDING_TIME*sample_rate)/(1000*buffer_size));
console.log('total iterations: ' + total_iterations);
counter = 0;
var chunks = [];
processor.onaudioprocess = function (e){
var buffer = new Float32Array(e.inputBuffer.getChannelData(0));
chunks.push(buffer);
//console.log('buffer: ', buffer);
console.log(counter);
counter +=1;
if(counter > total_iterations){
console.log('iterations complete');
context.close();
//stopStreaming();
console.log('audiochunks: ', chunks);
data = mergeBuffers(chunks, chunks.length*buffer_size);
console.log('data', data);
wav_view = encodeWAV(data);
var audioBlob = new Blob([wav_view], {type: 'audio/wav'});
//forceDownload(audioBlob, 'recording.wav');
console.log(audioBlob);
get_song(audioBlob, sample_rate);
}
};
}
Проблема в том, что это дает мне предварительно обработанные, а не необработанные аудиоданные. По всей видимости, Chrome применяет некоторое обнаружение фонового шума и пытается отменить любой шаблон, длительность которого превышает полсекунды.
Не могли бы вы, ребята, спросить меня, как попросить Chrome не применять фильтрацию / предварительную обработку звука и предоставить мне чистые необработанные данные, полученные аппаратным обеспечением микрофона?
Ниже приведены форма волны и спектрограмма микрофонных данных, которые я получаю:
форма сигнала хромированного выхода
Спектограмма хромированного выхода