将WAV格式从32位浮点更改为16位PCM

时间:2018-01-08 04:49:11

标签: python numpy audio scipy signals

我正在尝试将我的32位浮点采样WAVE文件转换为16位整数WAVE文件。

我想从超声波正弦波生成16位整数WAV文件,范围从-1.414到1.414。在SciPy.io.wavfile中,输出格式根据我生成的类型数组而定。但是我通过将'32767'与转换相乘来将我的32位浮点格式数组更改为16位以获得整数格式值,但结果频率根本不相似。

有没有办法使用SciPy库将我的32位浮点数改为16位?

1 个答案:

答案 0 :(得分:0)

不确定为此使用SciPy,但是您可以轻松地将数据转换为16位整数,然后使用您喜欢的音频包将其写入wav文件。

将数据除以1.414,以使其在[-1,1]范围内,然后将其乘以32767,以使其在int16变量范围内。然后使用numpy.astype()进行投射。解决方案如下所示:

import numpy as np

float32_data /=1.414
float32_data *= 32767
int16_data = np.astype(np.int16)