将大型WAV文件(或任何大型文件)读取/处理为python的最快方法

时间:2019-03-15 06:28:04

标签: python performance audacity

因此,我在一个学校项目中必须处理较大的wav文件(> 250Mgb),我想知道为什么为什么当我向audacity软件读取此文件时需要40秒钟才能读取和绘制,但是当使用script.io.wavfile.read将其读取到python时,它将永远持续下去。 所以我的问题是,Audacity软件如何使它这么快?我可以在python中做些什么使它这么快吗?

编辑:我在我的代码中添加了一个新部分,以进行计算并绘制wav文件的包络,但是问题是当尝试使用较大的wav文件时,这将需要数年时间。 有什么办法可以更快地读取和处理大型WAV文件 谢谢

这是我正在使用的代码:

import matplotlib.pyplot as plt
import numpy as np
from scipy.io.wavfile import read
from tkinter import filedialog

# Browse, read the signal and extract signal informations (fs, duration)
filename = filedialog.askopenfilename(filetypes = (("""
            Template files""", "*.wav"), ("All files", "*")))

fs, data = read(filename, mmap=True)

T = len(data) / fs        #duration
nsamples = T * fs       #number of samples
time = np.linspace(0, T, nsamples)


# Compute the envelope of the signal
from scipy.signal import hilbert, chirp, resample
analytic_signal = hilbert(data)
amplitude_envelope = np.abs(analytic_signal)
instantaneous_phase = np.unwrap(np.angle(analytic_signal))
instantaneous_frequency = (np.diff(instantaneous_phase) /(2.0*np.pi) * fs)


len_E = len(amplitude_envelope)
t2 = np.linspace(0,T,len_E)

# Plot the signal and its envelope
plt.figure()
plt.subplot(211)
plt.plot(time, data)

plt.subplot(212)
plt.plot(t2,amplitude_envelope)
plt.show()

0 个答案:

没有答案