サンプリングレート変換 その3 †本題のサンプリングレート変換の話に入りましょう. 1/n のサンプリング周波数にダウンコンバート †例として,サンプリング周波数 16 kHz の信号をサンプリング周波数 8 kHz,つまり 1/2 のサンプリング周波数に変換することを考えてみましょう. 16 kHz のサンプリング値を ( 1, 2, 3, 4, 5, 6, ... ) とします. これを 8 kHz のサンプリング周波数に変換するために,単純にサンプルを間引いてみましょう. ( 1, 3, 5, ... ) この操作を周波数領域で見てみましょう. サンプリング周波数 16 kHz の信号には,最大で 8 kHz までの信号が入っている可能性があります. この信号を単純に間引きして 8 kHz の信号に変換した場合,4 kHz 〜 8 kHz の成分が折り返し歪みとして現れることになります. 折り返し歪みが現れないようにするには,どうすればいいのでしょうか. サンプリングの時同様に間引き前に 4 kHz 〜 8 kHz の成分を除去すればいいのです. その後でサンプリング値を間引けば折り返し歪みは現れません. m 倍のサンプリング周波数にアップコンバート †今度は m 倍のサンプリング周波数に変換する場合について. 例として,8 kHz サンプリングの信号を 16 kHz サンプリングに変換する場合を考えてみます. まず,サンプル値を水増しします. その1で見たようにサンプリングとは「インパルス(ヒゲのように鋭い波形)列への変換」です. 8 kHz サンプリングの波形をそのまま 16 kHz サンプリングに持っていくには,間に 0 を挿入すればいいことになります. ( 1, 2, 3, 4, ... ) ↓ ( 1, 0, 2, 0, 3, 0, 4, 0, ... ) で,このままでは 8 kHz サンプリング時に現れた 4 kHz 〜 8 kHz の鏡像も実在する信号として扱われてしまうので,これを除去します. これで終了です. m/n 倍のサンプリング周波数に変換 †今度は m/n 倍のサンプリング周波数に変換する場合を考えてみます. 例えば,44.1 kHz サンプリングの信号を 48 kHz に変換する場合はこれに当たります. 48000 / 44100 = 160 / 147 倍の変換です. これは,上記の「m 倍に変換」と「1/n に変換」を組み合わせれば実現できます. 単純に処理をつなぎ合わせてみると
となります. が,「鏡像をカット」「高い周波数をカット」という2つの処理は1回の処理にまとめることができます. まとめてしまうと
となります. |