0

VoIP アプリでマイクのレベルを調整するソリューションを探しています。音のレベルを取得できますが、リアルタイムでマイクの「音量」が低すぎるか高すぎる場合にも調整したいと考えています。スカイプのように...

一見簡単に見えますが、レベルが上限/下限を超えたときに音量を変えるだけのアルゴリズムよりも、もう少しスマートにする必要があると思います。

Winプラットフォームで.Net 2.0を使用しています。.Net または C 用の準備ができているライブラリはありますか (移植できるので)、またはそのようなメソッド/アルゴリズムの説明だけですか? 私はグーグルを試みましたが、運がありません。

ありがとうございました!

4

4 に答える 4

0

これは一般的にAGC (Automatic Gain Control)と呼ばれ、思ったほど簡単ではありません。基本的な AGC スキームでは、高速な「アタック」があります。これは、入力レベルが増加するとゲインを非常に迅速に減少させ、入力レベルが低下すると、より大きな時定数を使用してゲインをよりゆっくりと増加させることを意味します。

于 2010-02-05T15:55:47.370 に答える
0

手始めにこれを試してください:ウェーブ サウンド ボリュームの取得と設定

P/Invoke を介して C# で Windows API を使用します。

于 2010-02-05T15:57:20.050 に答える
0

これには 2 つの部分があります。

まず、マイクからオーディオのキャプチャを開始し、その信号強度を測定する必要があります。人がマイクに向かって話している場合は、直前の数秒間で最高のピークを探すだけで済みます。-6dB (たとえば) 未満の場合はゲインを少し上げ、-3dB を超える場合は少し下げます。要点は、高い S/N 比が必要であるということですが、信号が大きすぎてクリッピングや歪みが発生することは何としてでも避けたいと考えています。

2 番目の部分は、ミキサー API によって返される多数のミキサー コントロールのどれがマイク ゲインを制御するものであるかを判断することです。これは、特にすべてのサウンド カードと XP および Vista/Win 7 で動作させたい場合は、本来よりもはるかに困難であることが判明しました。推奨される解決策については、この質問を参照してください。

どちらの部分にもNAudioを使用できます。これには、waveIn およびミキサー API のラッパーがあります。

于 2010-11-24T09:25:58.660 に答える
0

Speex-Pre-Processor の使用をお勧めします。おまけとして、ノイズ抑制が得られます。

私のXiphプロジェクトには、それへのバインディングが含まれています:
https://github.com/CodesInChaos/Xiph


特に、次の 2 つのファイルが必要です
。 .cs

それはおそらく生産品質ではなく、出発点です。それらを改善する場合は、変更を私に送ってください。

于 2010-11-24T09:27:13.307 に答える