信号の包絡線は、解析信号の振幅より得ることができます。
import sys import numpy as np import matplotlib.pyplot as plt import soundfile as sf from scipy.signal import hilbert filename = sys.argv[1] nstart = int(sys.argv[2]) nframes = int(sys.argv[3]) wav, fs = sf.read(filename,start=nstart,frames=nframes) analytic_signal = hilbert(wav) env = np.abs(analytic_signal) plt.plot(wav, color='green') plt.plot(env, color='red') plt.title("input signal") plt.xlabel("time") plt.ylabel("amplitude") plt.show()
私の以前の記事、Analytic Signals (2)では、同じことをC言語を用いて行っていました。