2016-09-30 196 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