Я играл звук с веб-аудио API и использовал gainNode для изменения громкости. Когда я изменил значение gainNode, индикатор Decibel показал, что число не ожидается.Как откалибровать dbfs до db spl?
context.createGain();
var source=context.createOscillator();
source.frequency.value=1000;
source.start();
source.connect(gainNode);
gainNode.connect(context.destination);
gainNode.gain.value=Math.pow(10, dbfs/20));
when dbfs=0,the Decibel meter showed 90 dbspl;
when dbfs=-10,the Decibel meter showed 84 dbspl;
when dbfs=-20,the Decibel meter showed 78 dbspl;
when dbfs=-30,the Decibel meter showed 72 dbspl;
when dbfs=-40,the Decibel meter showed 62 dbspl;
when dbfs=-50,the Decibel meter showed 52 dbspl;
Фактический объем не изменился, как ожидалось, была ли какая-либо ошибка в генерации значения gainNode? Я хочу воспроизвести звук в формате 80 дБ или другие конкретные числа, каково значение dbfs и как сделать значение gainNode?
Большое спасибо за ваш ответ. Причина использования синусоиды - это мой реальный спрос, мне нужно играть звук разной частоты, чтобы проверить уровень слуха. В этом случае я использовал приложение, запущенное на iphone6 в качестве счетчика db, и использовал thinkpad x201 в качестве динамика. iphone6 находится на расстоянии 10 см от динамика. Значение db было очень устойчивым во время воспроизведения звука. за исключением всех inpact, если мой код работает в идеальных условиях, уменьшит ли dbspl 1db, когда dbfs уменьшит 1db? – user6731513
Я бы предложил начать с розового шума в любом случае, чтобы узнать, помогает ли это. Если это так, то это действительно касается отражений, которые у вас есть. Кстати, если вы говорите, что микрофон находится всего на расстоянии 10 см - они на поверхности стола или что-то в этом роде? Это даст много отражений. Попытайтесь хотя бы поместить устройства на подставки, чтобы убедиться, что нет отражающих поверхностей, достаточно близких к звуковому пути. –
Большое вам спасибо, ваши баллы в порядке, моя среда недостаточно хороша, чтобы сделать тест – user6731513