Как захватить все частоты при записи на смартфоны с помощью javascript?

Я боролся с записью аудиоданных в Javascript.

На рабочем столе AudioContext работает безупречно и захватывает все частоты от 20 до 20 кГц при неизменной частоте дискретизации 44100 Гц.

Однако при записи на смартфон (Chrome на Android), даже если audioContext устанавливает частоту дискретизации на 48000 Гц (снова неизменяемой!), Он захватывает только частоты до 6000 Гц. Когда я рисую его спектрограмму на Audacity, она пуста более 6K Гц.

Я много искал решение в Интернете, но, похоже, не сталкивался с этим! Это меня бесит. Как может 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.

Я думаю, что лучше опубликовать исходный код .... Я думаю, проблема в том, что вы анализируете сжатый записанный файл, частота которого вырезана из процедуры сжатия.

emandt 31.10.2018 13:03

Привет, я добавил код и дополнительные пояснения. пожалуйста, пройдите через это!

sourabh gupta 31.10.2018 13:45

Однажды у меня был ноутбук с фильтром нижних частот высокого порядка перед АЦП (предположительно RLC фильтр, хотя, возможно, это был DSP), который производил поведение, подобное тому, что вы описали. Суть в том, что если вы получаете 48000 выборок в секунду, машина производит выборку на частоте 48 кГц! Но вы можете проверить, является ли это аппаратной проблемой, проверив спектр записи, сделанной с помощью стандартного приложения для записи.

greeble31 31.10.2018 15:05

да. как я уже упоминал в своей проблеме. AudioContext показывает, что частота дискретизации составляет 48 КБ, но отсутствуют частоты выше 7 КГц, когда я рисую спектрограмму в Audacity или любом другом программном обеспечении. Пожалуйста, пройдите через проблему для большей ясности.

sourabh gupta 02.11.2018 09:24

@sourabhgupta Я предполагаю, что практического способа решить вашу проблему нет. Более высокие частоты почти наверняка удаляются аппаратным обеспечением, а не программным обеспечением. Не существует комбинации настроек или вызовов функций, которые вы могли бы использовать для доступа или восстановления этой информации; Что касается машины, то ее никогда не существовало.

greeble31 04.11.2018 18:48
0
5
48
0

Другие вопросы по теме