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

2024-06-10 08:49:49 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我想从-1.414到1.414的超声波正弦波生成16位整数WAV文件。在SciPy.io.wavfile中,根据我生成的类型数组,输出格式是固定的。但是我把我的32位浮点格式数组改为16位,方法是将32767乘以casting得到整数格式值,但是结果频率一点都不相似。在

有没有办法用SciPy库将my从32位浮点改为16位PCM?在


Tags: 文件方法io类型格式整数scipy数组
1条回答
网友
1楼 · 发布于 2024-06-10 08:49:49

不确定是否使用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)

相关问题 更多 >