私はPythonで何らかのオーディオエフェクトを実行する必要があります。例えば、最も単純なエコー効果式:これはIIRフィルタであり、scipy.signalにlfilter()により算出することができる係数の大部分がゼロのときにIIRフィルタを行う方法
y[n] = x[n] + k*y[n-1000]
:
import numpy as np
import time
import scipy.signal as signal
pulse = np.zeros(10000)
pulse[0] = 1.0
a = np.zeros(1000)
a[[0,999]] = 1, -0.7
start = time.clock()
out = signal.lfilter([1], a, pulse)
print time.clock() - start
import pylab as pl
pl.plot(out)
pl.show()
問題がある:係数の最もaの値はゼロであり、フィルタは非常に迅速に計算できますが、lfilter()はこれを認識できず、すべてのゼロ係数を使用します。
私は、この最も単純な例のためにいくつかの特定の計算をコーディングすることができますが、私は一般的な解決策を探しています。
ここで(lfilterのほかに)役立つnumpy/scipyには何もありません。これを行う他のパッケージについてはわかりません。 Cythonは最良の選択だと思う。 – user333700