У нас есть настольное приложение c# wpf, работающее на планшете. Это приложение содержит измеритель рабочего объема с использованием Naudio. С помощью приведенного ниже кода я могу заставить измеритель объема правильно отображать высоту / объем, а полоса движется так, как должна, пока все хорошо!
float max = 0;
for (int index = 0; index < a.BytesRecorded; index += 2)
{
short sample = (short)((a.Buffer[index + 1] << 8) | a.Buffer[index + 0]);
// to floating point
var sample32 = sample / 32768f;
// absolute value
if (sample32 < 0) sample32 = -sample32;
if (sample32 > max) max = sample32;
}
//progressbar min 0 - max 100
PogressBarValue = Convert.ToInt32(100*max);
Моя новая работа требует, чтобы я отображал приблизительную получено правильное значение в дБ. (так что не dbFS или обычное значение индикатора выполнения) Я считаю, что мне нужно откалибровать микрофон вместе с измерителем дБ, чтобы иметь возможность правильно отображать эти значения. Я нашел этот действительно старый пост, в котором описываются шаги, которые необходимо предпринять, однако я не могу понять, как это сделать. (Может быть, я слишком долго вычислял числа?)
Как я могу использовать свой микрофон, чтобы получить громкость / амплитуду или «громкость» в c#
Пусть Скажем, мы воспроизводим звук, который измеряется измерителем дБ (рядом с планшетом mi c):
дБ, измеренным измерителем: 85 дБ
макс, рассчитанным по вышеуказанной функции: 0,95 (во время этого звука текущее значение шкалы прогресса, закодированное сейчас, равно 95 (должно отображаться 85 дБ?)
это было измерено с системной mi c входной громкостью 90
"тихий" (как можно меньше звука) шум был измерен на уровне около 30 дБ. Приглушенный шум был неизмеримым (всегда был некоторый объемный шум), но, допустим, 0 дБ
Итак, мой вопрос действительно двоякий: достаточно ли первого измерения для выполнения расчетов или мне нужно больше контрольных точек, таких как «тихий» и «приглушенный»? (другими словами: как мне выполнить калибровку?) И как можно рассчитать (приблизительно + -5 дБ) правильные децибелы для отображения на измерителе громкости с помощью эти значения калибровки? Было бы неплохо сделать несколько реальных примеров вычислений с числами, так как я не мог sh это сделать из текстового объяснения в сообщении выше.
Надеюсь, что кто-то с большим пониманием, чем я, сможет помочь!