2010-03-17 7 views

답변

17

범위는 -160 dB에서 0 dB입니다. -90 dB에서 0 dB까지 측정기에 표시하고 싶을 수도 있습니다. 데시벨로 표시하면 데시벨 대수 스케일 때문에 어느 것이 더 가깝게 우리는 음성 인식 방법에 가까운 큰 것을 의미 선형 오디오 레벨과보다 실제로 더 유용하다.

linear = pow (10, decibels/20);

과 역 :

당신은 선형 데시벨로 변환하려면이 옵션을 사용할 수 있습니다 말했다

decibels = log10 (linear) * 20;

위의 데시벨의 범위로 음의 무한대입니다 선형의 경우 0.0 ~ 1.0입니다. 선형 값이 0.0 인 경우, -inf dB입니다. 1.0의 선형은 0dB입니다.

+10

정확히 어떤 것은 '입니다 20' 여기? 공기 중 소리 세기를 측정 할 때 –

+0

는 기준치 컨벤션 20 micropascals (μPa) 건강한 젊은 인간 (1,000 Hz의 주파수)들을 수 평균 조용한 사운드 교과서 값 HTTPS의 음압이다 : //www.researchgate.net/post/Is_there_any_relationship_between_dB_decibel_and_dBA_how_to_convert_dB_to_dBA –

4

애플은 dB에서 선형 진폭 변환 클래스 MeterTable.cpp 및 MeterTable.h도 구현했습니다. SpeakHere 응용 프로그램 예제에서 찾아보십시오.

당신은

inline double DbToAmp(double inDb); 

또는

은 미리 계산 된 조회 테이블을 사용하는 MeterTable 인스턴스를 생성 "실행 중에"값을 계산하고 자신의 인라인 함수를 사용 할 수 있습니다. 이렇게하면 응용 프로그램에서 계산 수를 줄일 수 있도록 메모리에 변환 값이 저장됩니다.

float ValueAt(float inDecibels); 

참고 : 다른 계산을 많이가 동시에 일어나고있는 경우 조회 테이블은 아마 필요하거나 매우 빠른 처리가 필요합니다.

+1

SpeakHere app example link -> http://developer.apple.com/library/ios/#samplecode/SpeakHere/Introduction/Intro.html –

+0

DbToAmp 함수는 다음을 반환합니다.' 펑 (. 10, 0.05 * inDb)' – CharlesA

+0

또한 https://github.com/warrenburton/MeterTableOC 당신은 당신의 프로젝트 파일을 C++의 약간의 번거 로움을하지 않으려면 –