Есть ли способ получить значение децибела звука во время его записи? Я использую MediaRecorder
для записи звука в настоящий моментПолучите значения децибел во время записи звука?
Я не могу использовать какие-либо приложения на Торговой площадке, так как я не могу быть уверен, что пользователь установит его на своем телефоне, например. Audalyzer
Я использую следующие формулы, но не уверен, что они верны или мои результаты верны!
short data[] = new short[bufferSize];
read = recorder.read(data, 0, bufferSize);
double p2 = data[data.length-1];
System.out.println("p2: " + p2);
double decibel;
if (p2==0)
decibel=Double.NEGATIVE_INFINITY;
else
decibel = 20.0*Math.log10(p2/65535.0);
System.out.println("p2/65535: " + (p2/65535.0));
System.out.println("decibel: " + decibel);
Текущие результаты:
01-11 16:43:03.821: I/System.out(14530): p2: 0.0
01-11 16:43:03.821: I/System.out(14530): p2/65535: 0.0
01-11 16:43:03.821: I/System.out(14530): decibel: -Infinity
01-11 16:43:03.911: I/System.out(14530): p2: 0.0
01-11 16:43:03.911: I/System.out(14530): p2/65535: 0.0
01-11 16:43:03.911: I/System.out(14530): decibel: -Infinity
01-11 16:43:04.001: I/System.out(14530): p2: 0.0
01-11 16:43:04.001: I/System.out(14530): p2/65535: 0.0
01-11 16:43:04.001: I/System.out(14530): decibel: -Infinity
01-11 16:43:04.091: I/System.out(14530): p2: 0.0
01-11 16:43:04.091: I/System.out(14530): p2/65535: 0.0
01-11 16:43:04.091: I/System.out(14530): decibel: -Infinity
01-11 16:43:04.191: I/System.out(14530): p2: 0.0
01-11 16:43:04.191: I/System.out(14530): p2/65535: 0.0
01-11 16:43:04.191: I/System.out(14530): decibel: -Infinity
01-11 16:43:04.281: I/System.out(14530): p2: 0.0
01-11 16:43:04.281: I/System.out(14530): p2/65535: 0.0
01-11 16:43:04.281: I/System.out(14530): decibel: -Infinity
01-11 16:43:04.371: I/System.out(14530): p2: 0.0
01-11 16:43:04.371: I/System.out(14530): p2/65535: 0.0
01-11 16:43:04.371: I/System.out(14530): decibel: -Infinity
Я предполагаю, что вы пытаетесь получить уровень сигнала в дБ? В этом случае 0db является максимальным, а все остальное отрицательным. Однако, если вы пытаетесь измерить SPL, это невозможно. Ваше приложение не знает о микрофоне, структуре усиления в аудиоустройстве и т. Д. Вам нужно будет предоставить свой собственный метод калибровки. – Brad
Если все остальное отрицательно, как я могу получить от него значение дБ? – Neeta
это * есть * действительный, но не уровень звукового давления ... скорее, это уровень сигнала относительно номинального (0 дБ, наивысший отображаемый уровень сигнала). Уровень звукового давления, измеренный в дБ, полностью отличается от уровня сигнала, измеренного в дБ. Измерения в дБ являются просто измерениями относительно чего-то другого. Опять же, без калибровки микрофона/устройства вы не можете преобразовать уровень сигнала в SPL. – Brad