PythonとSciPy

信号の包絡線は、解析信号の振幅より得ることができます。

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言語を用いて行っていました。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.