gpt4 book ai didi

Python wave : Extracting stereo channels separately from *. wav 文件

转载 作者:行者123 更新时间:2023-11-30 23:14:49 24 4
gpt4 key购买 nike

我有一个 32 位 *.wav 文件 44100Hz 采样。我使用 wave 和 python struct.unpack 将数据获取到数组。不过,我想将两个立体声 channel 中的每一个作为单独的数组。我该如何尽可能简单地做到这一点?这是我的代码:

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)修改代码,使其返回两个数组,每个 channel 一个数组,以及(2)解释波形的结构,以及如何正确使用我错误使用的函数。

最佳答案

立体声文件中的左声道和右声道是交错的。您可以在网上找到很多有关此的信息,例如看数字here .

因此,如果您已经将整个音频数据存储在列表中,则只需获取立体声的第二个样本、四重奏的每第四个样本等。您可以通过列表拼接来完成此操作:

data_per_channel = [data[offset::nchannels] for offset in range(nchannels)]

关于Python wave : Extracting stereo channels separately from *. wav 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28604955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com