Làm thế nào để tính dBFS?


11

Tôi đã tự hỏi mình làm thế nào để tính dBFS (thang đo đầy đủ dB) từ giá trị mẫu trong khoảng từ 1 đến -1?

và nói chung?

Câu trả lời:


13

Nó thực sự khá đơn giản cho các giá trị từ 1 đến -1:

valueDBFS = 20*log10(abs(value))

Nếu bạn có các giá trị giữa một phạm vi khác, ví dụ 16 bit, thì đó là:

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

(vì 16 bit đã ký có các giá trị trong khoảng từ -32768 đến +32767, ví dụ 2 ^ 15 = 32768)

Và vì vậy, công thức chung là:

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

Các ví dụ mã được đưa ra trong mã MATLAB.


1
Điều này đúng về mặt kỹ thuật, nhưng hầu hết các mét dBFS thực sự hiển thị khoảng không, vì vậy bạn sẽ thường muốn hiển thị âm của các giá trị này.
Bjorn Roche

1
Từ tất cả các tiêu chuẩn tôi đã đọc, có vẻ như dBFS hoàn toàn là phép đo RMS, không phải là phép đo đỉnh, vì vậy điều này sẽ không chính xác.
endolith

2

Tất cả các tiêu chuẩn xác định dBFS là phép đo RMS , liên quan đến mức RMS của sóng hình sin toàn thang, do đó, phép tính là:

value_dBFS = 20*log10(rms(signal) * sqrt(2)) = 20*log10(rms(signal)) + 3.0103
  • Một sóng hình sin quy mô đầy đủ là 0 dBFS
  • Một sóng vuông quy mô đầy đủ là +3 dBFS

Đơn vị tương tự dBov được xác định liên quan đến các tỷ số công suất (do đó cũng là phép đo RMS), sao cho sóng DC hoặc sóng vuông quy mô đầy đủ là 0 dBov, do đó phép tính là:

value_dBov = 20*log10(rms(signal))
  • Một sóng hình sin quy mô đầy đủ là dB3 dBov
  • Một sóng vuông quy mô đầy đủ là 0 dBov
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.