Отображение уровня голоса (дБ SPL) - PullRequest
0 голосов
/ 27 мая 2019

Я работаю над уникальным проектом по распознаванию речи, в котором я хотел бы напечатать значение уровня голоса в дБ SPL для улучшения приложения.В проекте используется Kinect, поэтому я должен собрать его с помощью Kinect SDK в c #.В эти дни я много читал о децибелах, но я не уверен, что правильно понял концепцию в целом.Здесь я пишу соответствующую часть кода, который я сейчас пытаюсь (скажите, если вам нужна информация об остальной части кода)

float energy = 0;
rms= 0;
for (int i = 0; i < audioBuffer.Length; i += 4)
{
     float audioSample = BitConverter.ToSingle(audioBuffer, i);
     rms+= audioSample * audioSample;
}

float minvalue_db = (float)(20.0 * Math.Log10(1 / Math.Pow(2, 16)));
float minvalue_byte=(float)((audioBuffer.Length/4)* Math.Pow(10, minvalue_db/10));

energy = (float)(20.0 * Math.Log10(rms/ minvalue_byte));
Console.WriteLine("Energia audio: {0} dB (SPL)\n", energy);

В этом коде я хочу выполнить преобразование изаудио хранится в байтах и ​​уровень звукового давления в виде

среднеквадратичное значение: minvalue_byte = x: 20 мкПа -> x = (среднеквадратичное значение * 20 мкПа) / minvalue_byte

, а затем

энергия = 20 * log10 (x / 20µPA)

, что упрощенно равно

energy = 20 * log10 (rms / minvalue_byte)

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

...