转换器波24位到16位

时间:2016-09-30 09:44:33

标签: python signals wave pyaudio

我希望转换一些wavs 48kHz 24位file.wav到48kHz 16位文件-2.wav

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 个答案:

答案 0 :(得分:2)

如果您想要将文件从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