Аудио JS - audioBuffer переводит данные канала в частоту
BSD
Я пытаюсь добиться обнаружения высоты тона, и, кроме того, изучаю некоторые базовые аудиофизики по пути, на самом деле я новичок в этом и просто пытаюсь понять, как все это работает...
Мой вопрос: что такое audioBuffer и как данные, поступающие из getChannelData, связаны с частотами. и как я могу извлечь данные о частоте из AudioBuffer...
Кроме того, если кто-то может объяснить немного о частоте дискретизации и т. Д., Это также было бы здорово.
Спасибо!
1 ответ
AudioBuffer
просто представляет аудио-ресурс, а именно аудиосэмплы и дополнительную информацию об аудио.
Например, вы можете получить доступ к sampleRate
свойство AudioBuffer
объект, чтобы узнать о частоте дискретизации аудио, содержащегося в AudioBuffer
,
С помощью getChannelData
вернет вам массив аудио образцов. На каждом интервале, заданном частотой дискретизации, у вас есть число (от -1,0 до +1,0 для сэмплов аудио с плавающей запятой IEEE 32), соответствующее амплитуде звука сэмпла. Таким образом, этот массив выборок содержит аудиоинформацию во временной области.
Для обнаружения основного тона вам нужно работать в частотной области, а чтобы перейти от временной области к частотной области, вам нужно использовать преобразование Фурье. Если вы хотите понять основные принципы DSP (цифровой обработки сигналов), вы можете использовать чистую библиотеку FFT (например, node-fft). Если вы просто хотите добиться обнаружения высоты тона, проще использовать готовое решение, например pitch.js.