Аудио JS - audioBuffer переводит данные канала в частоту

BSD

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

Мой вопрос: что такое audioBuffer и как данные, поступающие из getChannelData, связаны с частотами. и как я могу извлечь данные о частоте из AudioBuffer...

Кроме того, если кто-то может объяснить немного о частоте дискретизации и т. Д., Это также было бы здорово.

Спасибо!

1 ответ

AudioBuffer просто представляет аудио-ресурс, а именно аудиосэмплы и дополнительную информацию об аудио.

Например, вы можете получить доступ к sampleRate свойство AudioBuffer объект, чтобы узнать о частоте дискретизации аудио, содержащегося в AudioBuffer,

С помощью getChannelData вернет вам массив аудио образцов. На каждом интервале, заданном частотой дискретизации, у вас есть число (от -1,0 до +1,0 для сэмплов аудио с плавающей запятой IEEE 32), соответствующее амплитуде звука сэмпла. Таким образом, этот массив выборок содержит аудиоинформацию во временной области.

Для обнаружения основного тона вам нужно работать в частотной области, а чтобы перейти от временной области к частотной области, вам нужно использовать преобразование Фурье. Если вы хотите понять основные принципы DSP (цифровой обработки сигналов), вы можете использовать чистую библиотеку FFT (например, node-fft). Если вы просто хотите добиться обнаружения высоты тона, проще использовать готовое решение, например pitch.js.

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