Smile Engineering Blog

ジェイエスピーからTipsや技術特集、プロジェクト物語を発信します

デジタル信号処理とは、Audacityでフィルタを使ってみる

今までデジタルオーディオに関して書いてきましたが、この辺でデジタル信号処理についても少し話をしたいと思います。

デジタル信号処理

f:id:jspnet:20191015234008p:plain:left デジタル信号処理とは、その名の通りデジタル化された信号を処理(加工)する技術ですが、今や専門用語ではなくなりつつあると感じます。デジタル信号処理を専門に行うプロセッサーで、DSP【Digital Signal Processor】というものをご存知でしょうか。。。
信号処理はもちろんアナログ回路でも出来ますが、半導体の進化によりDSPなどが普及し、アナログ信号をデジタル変換した後信号処理を行い、またアナログ信号に戻すようなプロセスをリアルタイムで行える時代です。

f:id:jspnet:20200131221644p:plain:right:w600 10年ほど前では、高品質を求めると、ハイスペックで高価なプロセッサーが必要だったり、処理時間や遅延が問題になり、リアルタイムではアナログ信号に比べ、その差を感じてしまうケースがありました。 近年では何と言ってもスマホの影響でその需要が高まり、私生活でも仕事でも関わらない日は無いと思います。

デジタル信号処理の応用例

分野 応用例(特にアナログ ↔ デジタル変換に関わるもの)
画像処理 デジタルカメラ、デジタルビデオ
映像動画 地上波デジタル放送、ネット動画配信
音声符号化 音声通信、携帯電話
音声認識 音声ナビ、AIスピーカ、ロボット工学
音響技術 エコーキャンセラ、ノイズキャンセラ、マイクロホンアレー

スマホは、ほぼ全部に関連しますね。。。

私は、音声や音響の分野で信号処理に携わり、過去は音声符号化を中心にやっていましたが、最近は音響の方を中心にやっています。今回は、Audacityを通じて、音響信号処理の代表的なアルゴリズムについて紹介したいと思います。何といっても、フィルタとFFTだと思います。

学問的には教科書に書かれているものだったと思いますが、仕事で実戦となると奥が深く製品の品質に直結するコアの技術と感じます。私はまじめに勉強してなかったので実戦で奮闘しています。

これらの技術はAudacityでも使われていると思います。今回はデジタルフィルタを少し紹介したいと思います。

デジタルフィルタ

信号処理のフィルタとは、信号から特定の成分を取り出したり、または除去したりすることです。デジタルフィルタとは、アナログ➞デジタル変換された信号を、デジタルでフィルタ処理することです。Audacityで簡単なフィルタ処理をしてみます。

Audacityでスイープトーンを生成してフィルタリングしてみる

【ジェネレータ】→【チャープ】

まずは、Audacityでフィルタリングを行う信号を生成してみます。今回はスイープトーン(Sweep tone)を使用してみました。スイープトーンとは連続的に周波数を変化させた信号です。Audacityでは、【ジェネレータ】→【チャープ】で生成できます(サンプリング周波数は48kHz)。

波形 サイン波 備考
周波数(Hz): 開始:1000 ~ 終了:20000 今回は、1000Hz~20000Hz にしてみます
振幅(0-1): 開始: 0.5 ~ 終了: 0.5 0.0~1.0を指定、信号の振幅です
補完: リニア

時間軸の波形:Sweep tone

サイン波の周期が時間と共に短く(周波数が高く)なって行きますが、この表示ではちょっと分かりにくいです。

f:id:jspnet:20200131224609j:plain

カーソルをAudacityの波形の上に置き、Ctrl+スクロールで波形が拡大されます。この表示も分かりにくいですが、表示の範囲を右にずらして行くと周期が短く(周波数が高く)なるのが分かります。

f:id:jspnet:20200131224913j:plain

スペクトログラム:Sweep tone

【ファイル名】➞【 スペクトログラム】(表示波形のファイル名のところを、プルダウン)Audacityで周波数分析 - Smile Engineering Blog

Audacityでスペクトログラムを選択すると、縦軸が周波数、横軸が時間で、周波数成分のレベルは色で表されます。この表示では時間と共に周波数が高くなって行くことが分かると思います。1kHz~20kHzに変化していきます。興味のある方は聞いてみて下さい(言葉で表すなら、ピーという音がどんどん高くなって行きます)。 皆さんは何Hzまで聞き取れるでしょうか。。。 ヘッドフォンで聞く場合は音量に注意して下さい。

f:id:jspnet:20200131224958j:plain

スペクトラム表示:Sweep tone

【解析】➞【 スペクトラム表示】(リニア周波数軸)Audacityで周波数分析 - Smile Engineering Blog

1000Hz~20000Hzの周波数成分が分かると思います。

f:id:jspnet:20200131225053j:plain

AudacityでHigh Pass Filter(高域通過フィルタ)

【エフェクト】→【High Pass Filter】

生成したスイープトーンに、ハイパスフィルタをかけてみます。

High Pass Filter 設定 備考
Frequency (Hz): 10000.0 20000Hzの半分の10000Hzにしてみました
Rolloff (dB per octave): 48 dB 違いがはっきり分かるように大きい減衰量を指定

スペクトログラム:Sweep tone → High Pass Filter

低い周波数が消えています。

f:id:jspnet:20200131225128j:plain

時間軸の波形:Sweep tone → High Pass Filter

【ファイル名】➞【波形】(表示波形のファイル名のところを、プルダウン)

こちらの波形でも、Sweep toneの最初の低い周波数が消えているのが分かります(振幅が小さくなります)。

f:id:jspnet:20200131225420j:plain

スペクトラム表示:Sweep tone → High Pass Filter

【解析】➞【 スペクトラム表示】(リニア周波数軸)

High Pass Filterで指定した10000Hzを境に低域が減衰していることが分かります。

f:id:jspnet:20200131225204j:plain

Audacityでホワイトノイズを生成してフィルタ特性を調べる

【ジェネレータ】➞【ノイズ】

フィルタの特性を見るには、ホワイトノイズ(White noise)という全ての周波数成分が同じ強度で含まれる雑音を使用すると良く分かります(言葉で表すなら、サーッとした音です)。

ノイズ 設定 備考
ノイズの種類: ホワイト 乱数によって生成できます
振幅(0-1): 0.5 0.0~1.0を指定、信号の振幅です

スペクトラム表示:White noise

【解析】➞【 スペクトラム表示】(リニア周波数軸)

全ての周波数成分があることが分かります。

f:id:jspnet:20200131225438j:plain

High Pass Filter(高域通過フィルタ)

【エフェクト】→【High Pass Filter】

スイープトーンの時と同じHigh Pass Filterを実行します。

スペクトラム表示

【解析】➞【 スペクトラム表示】(リニア周波数軸)

High Pass Filterで指定した10000Hzを境に、フィルタの特性が分かります。

f:id:jspnet:20200131225457j:plain

Low Pass Filter(低域通過フィルタ)

【エフェクト】→【Low Pass Filter】

逆にローパスフィルタでは次の特性です。10000Hzを境に、高域が減衰される特性が分かります。

f:id:jspnet:20200131225512j:plain

FFT高速フーリエ変換

ここで紹介したAudacityスペクトラム表示とは、FFTを使用して時間領域の信号から周波数領域へ変換を行い、周波数成分の解析を行ったものです。Audacityで周波数分析 - Smile Engineering Blog