1.dB와 dBFS 차이
1. dB(데시벨)
- 음향/전기 등에서 사용하는 무차원적 단위
- 데시벨은 어떤 수치 x에 대해 10* logX한 값이다.
- 사람은 보통 log적으로 소리를 듣는다.
- 작은 소리 변화에 민감하고 큰소리 변화에는 둔감하다.
- 데시벨은 비례적이다.
- 10dB와 20dB의 차이와 20dB와 30dB의 차이가 동일하게 10 dB이다.
- 그런데 dB는 10*logX로 계산하기 때문에 전압의 차이가 각각 90v와 900v이다.
- 10dB == 10v
- 20dB == 100v
- 30dB == 1000v
- 인간의 청력도 비례적이기 때문에 데시벨을 사용한다.
2. dBFS
- 디지털 오디오 시스템에서 사용하는 단위이며, 디지털 신호의 최대 크기에 대한 상대적인 값입니다.
- dB VS dBFS
- dB : 아날로그 소리 크기에 대해서 다룹니다.
- dBFS : 디지털 신호를 다룬다.
- dBFS의 최대값은 항상 0dBFS이다.
- dBFS가 최대값일 때 가장 찢어지는 현상인 클리핑이 발생한다.
- 최소 값은 해당 기기의 디지털 오디오 시스템이 지원하는 비트 깊이에 따라 달라집니다.
- 비트 깊이가 높을 수록 더 작은 신호도 표현이 가능해져 최소 dBFS가 더 낮아집니다.
- 비트에 따른 dBPS 범위
- 16비트 오디오 : 최대 0dBFS, 최소 -96 dBFS
- 24비트 오디오 : 최대 0 dBFS, 최소 -144 dBFS
- 32비트 오디오 : 최대 0 dBFS, 최소 - 192 dBFS(이론적, 실제로는 잘 사용되지 않음)
2. 아이폰이 dBFS를 사용하는 이유
- AVRecorder로 사람 목소리 같은 아날로그 신호를 아이폰 내에서 디지털 신호로 사용해야하기 때문이다.
- 그래서 아이폰에서는 디지털 신호를 다루는 dBFS를 사용한다.
3. 아날로그 신호를 dBFS로 변환하는 과정
- 아날로그 신호가 입력된다.
- ADC(Analog Digital Converter)변환을 거친다.
- 변환된 디지털 신호로 dBFS 단위로 측정한다.
- 이 값을 가지고 출력한다.
4. dBFS를 dB로 보여주는 방법
- 우리가 생각하는 데시벨은 dB보다는 dB SPL에 가깝다.
- dB SPL은 소리의 압력 레벨을 나타내는 절대적인 값이다.
- 소리의 압력을 기준 소리 압력과 비교해서 절대적으로 나타내는 것이다.
- dB SPL은 아날로그 신호의 소리 강도를 측정하는 데 쓰인다.
- 사람이 표준적으로 듣기에 귀가 아픈 수준인 0dBFS에 대해 94dB SPL이라 정햇다.
- 공연장, 공장 소음 == 114db SPL
- dB SPL의 공식
let db = self.audioRecorder.averagePower(forChannel: 0)
self.decibels = self.convertToDecibels(db)
AVRecorder에서 측정한 dBFS 값을 넘겨 받는 법
private func convertToDecibels(_ dbFS: Float) -> Float {
let referenceLevel: Float = 94.0
let dbSPL = referenceLevel + 20 * log10(pow(10, dbFS / 20))
return max(min(max(dbSPL, 0.0), 94.0), 0)
}
- max(dbSPL, 0.0): 계산된 dbSPL이 0보다 작을 경우 0으로 설정합니다. 이는 음압 레벨이 음수일 수 없기 때문입니다.
- min(..., 94.0): 이후 값이 94.0을 초과할 수 없도록 제한합니다. 이는 일반적으로 사용되는 기준 레벨로, 특정 시스템이나 환경에 따라 다를 수 있습니다.
- max(..., 0): 최종적으로 값이 0보다 작지 않도록 보장합니다.
출처
https://xerathcoder.tistory.com/314#dB?_dBFS?_%EA%B7%B8%EA%B2%8C_%EB%AD%94%EB%8D%B0?
'ios' 카테고리의 다른 글
유니티 iOS 오류 해결방법 공식문서 공부 (1) | 2025.06.10 |
---|---|
[iOS] 하나의 뷰컨트롤러에 iPad와 iPhone 두개의 xib 연결하기 (0) | 2025.02.26 |
[iOS] present VS addChild, dismiss (0) | 2025.02.25 |
rsa256, rs256 (1) | 2024.12.19 |
ios에서 적은 메모리로 이미지를 만들기(공부) (2) | 2024.12.13 |