繁体   English   中英

Python wave:从* .wav文件中分别提取立体声通道

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM