Визуализация с волновыми данными PCM - PullRequest
0 голосов
/ 04 ноября 2011

У меня есть API, который дает мне данные волны PCM:

http://msdn.microsoft.com/en-us/library/ff966424.aspx

Формат буфера [], используемый в качестве параметра для SoundEffect конструктор, метод Microphone.GetData и Метод DynamicSoundEffectInstance.SubmitBuffer представляет собой данные волны PCM. Кроме того, формат PCM чередуется и имеет порядок байтов.

Аудиоформат имеет следующие ограничения:

  • Аудиоканалы могут быть моно (1) или стерео (2).
  • Волновой файл PCM должно иметь 16 битов на выборку.
  • Частота дискретизации должна быть в пределах 8000 Гц и 48 000 Гц.
  • Чередование стереофонических данных оставляется правый канал.

Я бы хотел сделать визуализацию на основе этих данных.

Я хочу разделить уровни звука на 3 и получить громкость / уровень каждого из них.

Итак, если я говорю низким голосом, я получу высокое значение, затем 2 низких значения, если я говорю нормально, я получу низкое значение, высокое значение и низкое значение, и если я говорю на высокий голос, я получаю 2 низких значения и высокое значение.

Как мне этого добиться? Я никогда не пробовал ничего, связанного со звуком, поэтому я на 1-м уровне и не знаю, с чего начать.

1 Ответ

4 голосов
/ 04 ноября 2011

Полный ответ, вероятно, будет слишком сложным, чтобы давать его здесь, но вам нужно взять временную область, выборочные данные ИКМ и извлечь из нее представление частотной области, чтобы вы могли затем оценить уровень сигнала в различных частотные диапазоны. Техника для этого известна как Быстрая передача Фурье (БПФ) . Самостоятельная реализация требует значительных знаний о DSP, поэтому, возможно, вашим лучшим подходом будет поиск библиотеки, предлагающей готовую реализацию FFT, которую вы можете использовать.

...