用Python从24位数据的立体声波形文件wave中读取单个通道的数据

mou*_*uba 4 python numpy scipy wave

我想阅读左右声道。

 import wave
 origAudio = wave.open("6980.wav","r")
 frameRate = origAudio.getframerate()
 nChannels = origAudio.getnchannels()
 sampWidth = origAudio.getsampwidth()
 nbframe=origAudio.getnframes()
 da = np.fromstring(origAudio.readframes(48000), dtype=np.int16)
 origAudio.getparams()
Run Code Online (Sandbox Code Playgroud)

参数

  (2, 3, 48000, 2883584, 'NONE', 'not compressed')
Run Code Online (Sandbox Code Playgroud)

现在我想用 24 位数据中的波形文件分隔左右声道

War*_*ser 5

您可以使用wavio,我编写的一个小模块,用于使用 numpy 数组读取和写入 WAV 文件。在你的情况下:

import wavio

wav = wavio.read("6980.wav")

# wav.data is the numpy array of samples.
# wav.rate is the sampling rate.
# wav.sampwidth is the sample width, in bytes.  For a 24 bit file,
# wav.sampwdith is 3.

left_channel = wav.data[:, 0]
right_channel = wav.data[:, 1]
Run Code Online (Sandbox Code Playgroud)

wavio在 PyPi 上,源在https://github.com/WarrenWeckesser/wavio上的 github 上。