1

作業中のアプリケーションは、デバイスのマイクからデバイスのヘッドフォンに出力されたサウンドをリアルタイムで再生します。アプリケーションは、サウンドが大きすぎる場合はサウンドレベルを自動的に下げ、小さすぎる場合はサウンドレベルを増幅する必要があります。

    AudioTrack track = null;
    track.setStereoVolume(2.0f, 2.0f);

setStereoVolume()音量レベルを変更できます。FFTを動的に使用せずに、生のPCM値とinc / decオーディオボリュームから最大振幅を確認できますこれは正しいアプローチですか?使用の遅れを避けるためsetStreoVolume()に、音が大きすぎるときにバッファ値を半分に分割することはできません静かすぎる場合は2に掛けますか?

4

1 に答える 1

2

特定のポイントでサンプルを半分/2倍にすると、出力信号に非常に顕著なドロップ/スパイクが発生する可能性があります。

必要なのはダイナミックレンジコンプレッサーです。電話機には、プラットフォームで実行される電話機がすでに搭載されている可能性があります。ただし、そのパフォーマンスに不満がある場合は、独自のソフトウェアDRCを追加できます。基本的な考え方は、信号が特定のしきい値に達すると、信号を徐々に減衰させることです。これにより最大信号レベルが低下する(音量の大きい部分が減衰する)ため、メイクアップゲインと呼ばれるものを追加できます。これにより、全体的な信号レベルが上がります(これにより、静かな部分が大きくなります)。

于 2012-12-13T18:42:53.670 に答える