Я боролся с записью аудиоданных в Javascript.
На рабочем столе AudioContext работает безупречно и захватывает все частоты от 20 до 20 КГц при неизменной частоте дискретизации 44 100 Гц.
Тем не менее, при записи на смартфон (Chrome на Android) даже считал, что audioContext устанавливает частоту дискретизации 48000 Гц (снова без изменений!), Он захватывает частоты только до 6000 Гц. Когда я строю его спектрограмму на Audacity, она пуста на частоте более 6 кГц.
Я много раз искал решение в интернете, но, похоже, никто с ним не сталкивался!
Это меня бесит. Как javascript может установить частоту дискретизации 48 Кб, но захватывает частоты до 6 КГц?
Буду очень признателен вам, ребята, если вы поможете мне и укажете мне правильное направление.
следующий код похож на https://developers.google.com/web/fundamentals/media/recording-audio/
<script>
var handleSuccess = function(stream) {
var context = new AudioContext();
var source = context.createMediaStreamSource(stream);
var processor = context.createScriptProcessor(1024, 1, 1);
source.connect(processor);
processor.connect(context.destination);
processor.onaudioprocess = function(e) {
// Do something with the data, i.e Convert this to WAV
console.log(e.inputBuffer);
};
};
navigator.mediaDevices.getUserMedia({ audio: true, video: false })
.then(handleSuccess);
</script>
Я не могу вставить свой оригинальный код, так как он для клиента.
Я нигде не сжимал код. Я генерирую файл wav из аудиосэмплов на серверной части и строю его спектрограмму на Audacity.