2016-08-18 8 views
1

ウェブオーディオAPIで音を出し、gainNodeを使って音量を変えました。 gainNodeの値を変更したとき、デシベルメーターは期待されていない数値を示しました。dbfsをdb splにキャリブレーションするには?

context.createGain(); 
var source=context.createOscillator(); 
source.frequency.value=1000; 
source.start(); 
source.connect(gainNode); 
gainNode.connect(context.destination); 

gainNode.gain.value=Math.pow(10, dbfs/20)); 

when dbfs=0,the Decibel meter showed 90 dbspl; 
when dbfs=-10,the Decibel meter showed 84 dbspl; 
when dbfs=-20,the Decibel meter showed 78 dbspl; 
when dbfs=-30,the Decibel meter showed 72 dbspl; 
when dbfs=-40,the Decibel meter showed 62 dbspl; 
when dbfs=-50,the Decibel meter showed 52 dbspl; 

期待通りに実際のボリュームが変更されていなかった、そこにはgainNodeの値を生成する際に任意の間違いでしたか?私は80 db splまたはその他の特定の数値でサウンドを再生したいのですが、dbfsの値とgainNodeの値はどのようになりますか?

答えて

0

アプローチの1つの欠陥は、正弦波の音を使用していることです。ピンクノイズを使用する必要があります。そうしないと、部屋の反射によって音波のエネルギーが大きく変わる可能性があります。

理想的には、反射の干渉を避けるために、無響室または自由場で測定を行う必要があります。

もう1つの問題は、SPLメーターの不正確さやスピーカーシステムの非直線性に起因する可能性があります。たとえば、SPLメーターは較正されていますか?

SPL測定については、this articleを読むことを強くおすすめします。

一般に、デジタルドメインと電気ドメインのオーディオ(コンピュータとDACとアンプの内部)は、音響ドメインよりもはるかに線形で歪みがありません(つまり、部屋、スピーカー、マイク)ので、私は最初にソフトウェアではなく、それらの問題を探しています。 REWを参考にして試すことができます。また、サウンド/マイクシステムを最初にテストするツールとしてもお試しください。

+0

正弦波を使用する理由はあなたの返事にとても感謝します。それは私の本当の要求です。誰かの聴力レベルをテストするために、異なる周波数の音を再生する必要があります。その場合、私はdb meterとしてiphone6で実行されたアプリを使って、thinkpad x201をスピーカーとして使用しました。 iphone6はスピーカーから10cm離れています.dbの値は音の再生中に非常に安定していました。すべてのinpactを除いて、もし私のコードが理想的な条件で動くなら、dbfsが1dbを減らすとdbsplは1dbを減らすでしょうか? – user6731513

+0

私はそれが助けになるかどうかをピンクノイズから開始することを提案します。そうであれば、それは本当にあなたが持っている反射についてです。ところで、あなたがマイクがちょうど10cm離れていると言っているのであれば、それらはテーブルの表面かそのようなものですか?それは多くの反省を生み出すでしょう。少なくともスタンドにデバイスを置いて、サウンドパスに十分近い反射面がないことを確認してください。 –

+0

ありがとう、あなたのポイントは大丈夫です、私の環境はテストを行うのに十分ではありません – user6731513

関連する問題