Как вычислить dBFS?

Ответы:

13

Это действительно довольно просто для значений от 1 до -1:

valueDBFS = 20*log10(abs(value))

Если у вас есть значения между другим диапазоном, например, 16 бит, то это:

valueDBFS = 20*log10(abs(value)/32768)

(потому что 16-битный со знаком имеет значения между -32768 и +32767, например, 2 ^ 15 = 32768)

И так общая формула:

valueDBFS = 20*log10(abs(value)/maxValue)

Примеры кода приведены в коде MATLAB.

JustGoscha
источник
1
Это технически правильно, но большинство измерителей dBFS на самом деле отображают запас, поэтому вам часто нужно отображать отрицательные значения.
Бьорн Рош
1
Из всех стандартов, которые я прочитал, кажется, что dBFS является строго среднеквадратичным измерением, а не измерением пика, так что это было бы неправильно.
эндолит
2

Все стандарты определяют dBFS как среднеквадратичное измерение относительно среднеквадратичного уровня полномасштабной синусоидальной волны, поэтому вычисление:

value_dBFS = 20*log10(rms(signal) * sqrt(2)) = 20*log10(rms(signal)) + 3.0103
  • Полномасштабная синусоида составляет 0 дБFS
  • Полномасштабная прямоугольная волна составляет +3 дБFS

Аналогичная единица измерения дБов определяется в отношении коэффициентов мощности (так что это также среднеквадратическое измерение), так что полномасштабная постоянная или прямоугольная волна равна 0 дБов, так что расчет составляет:

value_dBov = 20*log10(rms(signal))
  • Полномасштабная синусоида -3 дБов
  • Полномасштабная прямоугольная волна равна 0 дБов
эндолиты
источник