2012-05-05 2 views
1

У меня есть wav-файл, и все, что мне нужно, - это выполнить функцию, когда замечательная интенсивность звука воспроизводится.Как получить амплитуду звука моего wav-файла относительно времени?

Например: если звук звуковой интенсивности 10 (предположительно) воспроизводится, так что я хочу, чтобы, когда уровень интенсивности звука увеличивается с 10, необходимо вызвать событие, чтобы сказать мне, что есть замечательный звук ,

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

Надеюсь, мой вопрос совершенно ясен. , пожалуйста, мне нужны ваши предложения/идеи и рекомендации.

ответ

3

Для этого вам не нужен БПФ - вы можете просто вычислить кратковременную мощность RMS, и когда это превысит заданный порог, тогда вы получите «громкий» звук.

power_RMS = sqrt(sum(x^2)/N) 

где х значение выборки и N это число образцов, по которому вы хотите, чтобы вычислить мощность RMS - я предложил бы использовать период, скажем, 10 мс, что дает N = 441 выборок в образце 44,1 кГц ставка.

+0

, пожалуйста, уточните эту строку: «Я бы предложил использовать период, скажем, 10 мс = 441 образец при частоте дискретизации 44,1 кГц». – azeem

+0

Простой - вы просто вычисляете power_RMS по каждому блоку из N выборок в вашей форме волны. Я предложил использовать N = 441, если у вас есть частота дискретизации 441 кГц, но вы можете поэкспериментировать с размером блока, в зависимости от вашего конкретного приложения. –

+0

позвольте мне попробовать. – azeem

Смежные вопросы