完璧に動作するSciPyを使用する短いpythonスクリプトがありますが、実行可能ファイルに変換するのに問題があります。私はWindows764ビットとPython2.7を使用しており、ChristophGolkeのNumpy/ SciPyバージョン(http://www.lfd.uci.edu/~gohlke/pythonlibs、cx_freeze、py2exeもダウンロードされています)、すべて64ビットです。32ビットの4GBRAM制限のため、64ビットが必要です。
私はいくつかのことを試しました:pyinstaller、py2exe、cx_freeze(ここでも64ビット)。実行可能ファイルを実行するたびに、「インポートエラー:XXXという名前のモジュールがありません」というメッセージが表示されます。ここで、XXXはさまざまなもの(_validation、_csr、None、multiarray)に相当します。py2exeを使用して、「ImportError:DLLの読み込みに失敗しました:%1は有効なWin32アプリケーションではありません」というメッセージが表示されるように管理しました。
私はこの種のエラーを検索し、さまざまなモジュールを含めてみました(ここでも、上記の3つのスクリプトすべてを使用)が、それでも同じエラーです。
私のスクリプト:
#!/usr/bin/python
# easy.py
import scipy as sp
from scipy.io import wavfile
from scipy import signal
import numpy as np
rate,data = sp.io.wavfile.read('2.wav')
if data.ndim >= 2:
data = data[ : ,0]
min = data.min()
if min < 0:
data= np.multiply(data,0.5)
data= np.add(data,min/-2)
rate2,data2 = sp.io.wavfile.read('MVI_1849.wav')
if data2.ndim >= 2:
data2 = data2[ : ,0]
min2 = data2.min()
if min2 < 0:
data2= np.multiply(data2,0.5)
data2= np.add(data2,min2/-2)
data2=data2[::-1]
corr = signal.fftconvolve(data,data2)
max = np.argmax(corr)
offset = float(max-len(data2)) / float(rate)
print(offset)
これはNumPy/SciPyのインポートメカニズムに関係していると読みましたが、修正方法がわかりません。さらに詳しい情報が必要な場合は、お知らせください。みんなありがとう!