[英]Python wave: Extracting stereo channels separately from *.wav-file
我有一个32位* .wav文件44100Hz采样。 我使用use wave和python struct.unpack将数据传递给数组。 但是我希望将两个立体声通道中的每一个作为单独的阵列。 我该如何尽可能简单地做到这一点? 这是我的代码:
def read_values(filename):
wave_file = open(filename, 'r')
nframes = wave_file.getnframes()
nchannels = wave_file.getnchannels()
sampling_frequency = wave_file.getframerate()
T = nframes / float(sampling_frequency)
read_frames = wave_file.readframes(nframes)
wave_file.close()
data = unpack("%dh" % nchannels*nframes, read_frames)
return T, data, nframes, nchannels, sampling_frequency
您是否能够(1)修改代码,使其返回两个数组,每个通道一个,以及(2)解释波的结构,以及如何正确使用我错误使用的函数。
立体声文件中的左右声道是交错的。 您可以在线找到有关此内容的大量信息,例如,请查看此处的数字。
因此,如果你已经将整个音频数据放在一个列表中,你只需得到第二个立体声样本,每四个样本用于quadro等。你可以用列表拼接来做到这一点:
data_per_channel = [data[offset::nchannels] for offset in range(nchannels)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.