2016-09-30 159 views
1

我想一些wav文件是 48kHz的24位file.wav至48kHz的16位文件2.wav转换波24位到16位

import wave 
origAudio = wave.open("Sample_5073.wav","r") 
frameRate = origAudio.getframerate() 
nChannels = origAudio.getnchannels() 
sampWidth = origAudio.getsampwidth() 
nbframe=origAudio.getnframes() 
da = np.fromstring(origAudio.readframes(48000), dtype=np.int16) 
left, right = da[0::2], da[1::2] 

由于转换

回答

1

如果从转换文件24至16位的是你想做的事,你可以使用SoX的唯一的东西,它没有什么比这更简单:

sox file.wav -b 16 file-2.wav 

SOX也可以做很多事情,只是来看看它的man page

如果你想使用Python,我建议soundfile模块:

import soundfile as sf 

data, samplerate = sf.read('file.wav') 
sf.write('file-2.wav', data, samplerate, subtype='PCM_16') 

指定subtype='PCM_16'甚至不是绝对必要的,因为它是默认反正。

如果你真的想用内置的ẁave模块来做,请看我的tutorial about the wave module