pythonで音を扱う~波の包絡線を求める~

AMやASKのように振幅変化を使って変調させた信号を復調するための方法として包絡線検波があります

これは観測された波の情報から振幅のみを取り出す操作になります

ja.wikipedia.org

具体的には、観測された信号に対してヒルベルト変換を行うことによって可能になります

ヒルベルト変換

ヒルベルト変換の導出や詳しい内容に下記を参照していただき、概要だけ簡単に紹介します

https://www.onosokki.co.jp/HP-WK/eMM_back/emm180.pdf

各周波数が一定の場合、振幅の信号の変化が、振幅の変化によるものなのか波の周期性によるものなのか知る必要があります

そこで、観測されたデータの位相90°遅らせることによって入力が一つで、複素関数として表現できる解析信号を作成します

この解析信号の振幅を求めることによって、各瞬間における振幅をもとめ、包絡線を求めることができます

包絡線の検出

具体的な包絡線の検出は、scipyを用いると簡単に求めることができます

Desktop/PPP/python/audio/envelop_detector.ipynb

図を見て分かるように包絡線が求められていることがわかります

内部的にフーリエ変換を用いられているからか、振幅が大きく変わるタイミングで包絡線が安定していないのも見て取れる。