ノイズリダクションとは
ノイズリダクション(以下NR)とは、SSBモードなどのパックグランドノイズを低減するもので、他のSDRフリーソフト(Power SDR)などにも組み込まれているので、実際の
効果も確認することができます。
NRをONにすると、パックノイズが数db低下しますが、CWモードなど500Hz程度のフィルターを使っている場合はその効果は実感できません。
NRの技術解説などはKENWOODなどの技術解説に詳しく説明されていますが、内容としては、適応フィルターという考え方らしく、フィルター特性をノイズ状況に応じて可変するらしい。
それならば、帯域固定でもなだらかなカットオフ特性を持つAF BPFでも同様な効果が得られるはずで、重要なのは低域、高域をスパッと切るフィルターでは無く、お椀を伏せたような
特性のフィルター特性で、音声帯域に含まれるノイズ成分を緩やかに低減し、かつ音声は出来るだけカットしないようにします。
フィルター目標仕様
フィルターの仕様決定にはPowerSDRのイコライザ―特性を利用して、どの周波数をカットして、叉どの周波数をブーストすればいいのかカット&トライで決定しました。
その結果、中心周波数500Hz、-3db点はそれぞれ250Hzと1000Hzとすれば、音声がこもらずかつノイズが-3db程度の減衰が得られましたので、目標仕様として設定。
AF BPFをプロクラムに組み込む
AF BPFの組み込みは、Ver1までの処理で検波された信号をIFフィルターと同じようにもう一度デジタルフィルターに通せばOKです。IFフィルターにはFIRフィルターを組み込みましたが
TAP数が大きくなるので、処理時間分ディレーが生じます。
AFフィルターでは、急峻なカット特性はいらないので、特性がイメージし易いアナログOPアンプ2次フィルター相当のIIRフィルターを組み込むこととしました。
IIRフィルターの係数計算は、こちらのHS SOFT HPを利用させていたたきました。計算式は以下の様になります。
aY[n] = -bY[n-1] - cY[n-2] + dX[n] + eXn[n-1] + fX[n-2]
HPでは-cY[n-1]になっていますが-cY[n-2]のミスプリントと思われます。
ここでa〜fはフィルター係数、Y[n]は現在の出力信号、X[n]は現在の入力信号、[n-1]、[n-2]はそれぞれひとつ前のサンプリング信号と2つ前のサンプリング信号を意味します。たとえば
SDRStudyでは信号処理を[1024]ヶに分割しているので[10]番目の出力信号はaY[10] = -bY[9] - cY[8] + dX[10] + eX[9] + fX[8]で求められます。ちなみに[0]の1つ前の信号は[1023]になります。
後はプログラムで[0]〜[1023]まで繰り返し計算しその都度Y[n]を新たなサウンドデーターとして配列に保存していけばOKです。
ソースプログラム例(VC#)を以下に示します。Ver1のソースに新たにAFFilter classを追加しました。一部使用していない引数など入っていますが、後で帯域や中心周波数などを変更する際に
使用する予定です。
使用してみて
左の写真は、スピーカ出力をWaveSpectra(W.S)で確認した周波数特性です。左はAFBPF OFF、右はAFBPF ON。BPF ONで250Hzと1000Hz付近でほぼ-3db減衰し、聴感上もはっきりと違いが
実感できます。動画ではBPF OFF/ONを繰り返し、パックノイズが低減するのが確認できます。 SDRStudyにAF BPF組み込みデモ動画 (YOUTUBEへ) AF Filterの組み込み方法が判ったので、後はいくつもフィルターを並べればグラフィックイコライザ―や送信音質のイコライジングなどソフトだけで実現できるので、SDR本体のハード部 を一台製作しておけば、後はソフトの追加でどんどん機能アップが楽しめます。
|