0


0

マイクの自動レベル

VoIPアプリでマイクのレベルを調整するソリューションを探しています。 音のレベルを得ることができますが、マイクの「ボリューム」をリアルタイムで低すぎるまたは高すぎるときに調整したいです。 Skypeのように…​

事実上は簡単に見えますが、レベルが上限/下限を超えたときに音量を変えるだけで、アルゴリズムは少し賢くなるはずです。

Winプラットフォームで.Net 2.0を使用しています。 準備ができているライブラリはありますか .Net or even on C (so I can port it) or even just description of such メソッド/アルゴリズム? 私はグーグルを試みましたが、運はありませんでした。

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

4 Answer


0


これによく使用される名前はhttp://en.wikipedia.org/wiki/Automatic_gain_control[AGC(自動ゲイン制御)]であり、見た目ほど簡単ではありません。 基本的なAGCスキームでは、高速の「攻撃」があります。つまり、入力レベルが増加するとゲインが非常に速く低下し、入力レベルが低下するとより大きな時定数を使用してゲインがゆっくり増加します。


0


試してみてください:http://www.geekpedia.com/tutorial176_Get-and-set-the-wave-sound-volume.html[waveの音量を取得して設定]

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


0


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

まず、マイクから音声のキャプチャを開始し、その信号強度を測定する必要があります。 人がマイクに向かって話しかけて調整する場合は、過去数秒間で最も高いピークを探すだけで済みます。 (たとえば)-6dBを下回る場合はゲインを少し上げ、-3dBを上回る場合はゲインを少し下げます。 重要なのは、高い信号対雑音比が必要なことですが、どんな場合でも、信号が大きすぎる場合のクリッピングや歪みを避けたいということです。

2番目の部分は、ミキサーAPIによって返される多数のミキサーコントロールのうち、マイクゲインを制御するものがどれかを判断することです。 これは、特にすべてのサウンドカードとXPおよびVista / Win 7で動作させたい場合、本来よりもはるかに困難であることが判明しました。 推奨される解決策については、https://stackoverflow.com/questions/3022981/how-to-adjust-microphone-gain-from-c-needs-to-work-on-xp-w7 [この質問]を参照してください。

両方の部分にhttp://naudio.codeplex.com [NAudio]を使用できます。 waveInおよびミキサーAPIのラッパーがあります。


0


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

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

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

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