Bagaimana cara menghitung dBFS?

11

Saya bertanya pada diri sendiri bagaimana menghitung dBFS (skala penuh dB) dari nilai sampel antara 1 dan -1?

dan secara umum?

JustGoscha
sumber

Jawaban:

13

Ini benar-benar sangat sederhana untuk nilai antara 1 dan -1:

valueDBFS = 20*log10(abs(value))

Jika Anda memiliki nilai di antara rentang lain, misalnya 16bit, maka itu adalah:

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

(karena 16bit yang ditandatangani memiliki nilai antara -32768 dan +32767, misalnya 2 ^ 15 = 32768)

Maka rumus umumnya adalah:

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

Contoh kode diberikan dalam kode MATLAB.

JustGoscha
sumber
1
Secara teknis ini benar, tetapi sebagian besar meter dBFS sebenarnya menampilkan ruang kepala, jadi Anda sering ingin menampilkan negatif dari nilai-nilai ini.
Bjorn Roche
1
Dari semua standar yang saya baca, tampaknya dBFS hanyalah pengukuran RMS, bukan pengukuran puncak, jadi ini tidak benar.
endolith
2

Semua standar mendefinisikan dBFS sebagai pengukuran RMS , relatif terhadap tingkat RMS dari gelombang sinus skala penuh, sehingga perhitungannya adalah:

value_dBFS = 20*log10(rms(signal) * sqrt(2)) = 20*log10(rms(signal)) + 3.0103
  • Gelombang sinus skala penuh adalah 0 dBFS
  • Gelombang persegi skala penuh adalah +3 dBFS

Unit serupa dBov didefinisikan dalam kaitannya dengan rasio daya (jadi itu juga merupakan pengukuran RMS), sehingga DC skala penuh atau gelombang persegi adalah 0 dBov, sehingga perhitungannya adalah:

value_dBov = 20*log10(rms(signal))
  • Gelombang sinus skala penuh adalah d3 dBov
  • Gelombang persegi skala penuh adalah 0 dBov
endolit
sumber