0

聴覚テストで AudioContext() を使用していますが、音量を x dB 上げ​​る/下げる方法を知りたいと思っていました。それは可能ですか?

現時点では、AudioContext に接続された gainNode があります。これは (要するに) 次のようになります。

var context = new AudioContext(), gainNode;
context.decodeAudioData(req.target.response, function(buffer) {
    gainNode = context.createGain();
    ...
}

音量を変更するには、次のようにします。

gainNode.gain.value = {-1 to 1}

ここでは、dB 値を正確に定義する機会がありません。他の方法はありますか?

問題は、ブラウザがスピーカーから出てくる音の正確な音量を決して知らないことだと思います。したがって、新しい dB 音量を計算するためのベースがありません。

現在の dB 値を決定する方法は、テスト音 (ホワイト ノイズ) と話された数字などの 2 つの音の違いによるものです。差を計算するために、次の式を見つけました。

20 * Math.log10(gainNoise / gainSpeech);

次に、スピーチが-0.6でノイズが-0.3の場合、たとえば-6 dBの基準があります。しかし、この値を特定の dB 値だけ上げるにはどうすればよいでしょうか?

例: -6 dB を 5 dB 上げ​​て -1 dB にします。音声/ノイズを再計算するにはどうすればよいですか?

4

2 に答える 2

5

ゲインは一般に、信号の振幅の直線的な増加または減少を指します。たとえば、元の信号レベルに関係なく、2 を掛けることで信号の振幅を 2 ​​倍にすることができます。同様に、0.5 を掛けることで信号を半分にすることができます。デジタルでは、ゲインは、入力信号の各サンプルに目的の比率を乗算することによって適用されます。ゲインは信号とノイズに等しく適用されます。

あなたの質問は、ゲインの範囲が -1 から 1 であることを暗示しています。ドキュメントを読みましたが、そのような証拠は見つかりません。私はそれが0からNに似ていると思います.-1のゲインは、信号を反転させる効果があるだけなのでナンセンスです. 0 ~ 1 のゲイン範囲では、ゲインを下げることしかできません。

ゲインについて dB で説明するのが一般的です。比率のゲインと dB のゲインの間には簡単な変換があります。

dB = 20 * log10(ratio)
ratio = 10^(dB/20)

dB 単位の値からゲインを設定するには、比率への変換を適用するだけです。

dBgain = 20;
gainNode.gain.value = 10^(dBgain/20);
于 2014-12-04T06:00:43.850 に答える