通常,wav 文件是或需要是 24 位的,但我看不到使用 scipy 模块写入或读取 24 位 wav 文件的方法。wavfile.write() 的文档指出 wav 文件的分辨率由数据类型决定。这一定意味着不支持 24 位,因为我不知道 24 位整数数据类型。如果需要替代方案,那么如果它很常见,这样文件就可以轻松交换,而不需要其他使用 scipy 的人安装额外的模块。
import numpy as np
import scipy.io.wavfile as wavfile
fs=48000
t=1
nc=2
nbits=24
x = np.random.rand(t*fs,nc) * 2 - 1
wavfile.write('white.wav', fs, (x*(2**(nbits-1)-1)).astype(np.int32))