在Python中,可以使用wave
模块来从振幅数据创建.wav文件。下面是一个完整的示例代码:
import wave
import struct
def create_wav_file(filename, amplitude_data, sample_width, sample_rate):
# 打开.wav文件并设置参数
with wave.open(filename, 'w') as wav_file:
wav_file.setnchannels(1) # 单声道
wav_file.setsampwidth(sample_width) # 设置样本宽度(字节数)
wav_file.setframerate(sample_rate) # 设置采样率
# 将振幅数据转换为二进制格式并写入.wav文件
for amplitude in amplitude_data:
# 根据样本宽度将振幅数据转换为二进制格式
if sample_width == 1:
packed_amplitude = struct.pack('b', int(amplitude))
elif sample_width == 2:
packed_amplitude = struct.pack('h', int(amplitude))
else:
raise ValueError("Unsupported sample width")
# 写入.wav文件
wav_file.writeframes(packed_amplitude)
# 示例用法
amplitude_data = [0.1, 0.2, 0.3, 0.4, 0.5] # 振幅数据
sample_width = 2 # 样本宽度(2字节)
sample_rate = 44100 # 采样率(每秒样本数)
filename = 'output.wav' # 输出文件名
create_wav_file(filename, amplitude_data, sample_width, sample_rate)
上述代码中,create_wav_file
函数接受振幅数据、样本宽度和采样率作为参数,并使用wave.open
打开.wav文件。然后,它将振幅数据转换为二进制格式,并使用writeframes
方法将数据写入.wav文件。最后,通过调用create_wav_file
函数,可以创建一个包含给定振幅数据的.wav文件。
这是一个简单的示例,你可以根据实际需求进行修改和扩展。
领取专属 10元无门槛券
手把手带您无忧上云