我有一个csv数据文件,记录在频率为500Hz的数据采集中心,我正在尝试将其转换为wav格式。我已经熟悉Python并简单地提供数字(作为wave
包的16位整数),它不起作用。我应该如何从简单的数字流构造一个wav文件?
我尝试了以下代码,其中包括规范化,我将dtype
设置为float32,以便根据文档here使用32位浮点格式,它只是没有产生任何声音。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import numpy as np
import scipy.io.wavfile
from numpy import *
csv_array = np.loadtxt('trimmed.csv', delimiter=',', dtype=float32)
min = np.amin(csv_array)
max = np.amax(csv_array)
med = (max + min) / 2
def f(x):
return (x - med) * (1 - (-1)) / (max - min)
f = np.vectorize(f)
wav_array = f(csv_array)
scipy.io.wavfile.write('output.wav', 500, csv_array)
答案 0 :(得分:2)
问题在于您的采样率。尝试将数据重新采样为44100 Hz(参见下面的代码)。我不知道重新采样会对您的数据产生什么影响。
import numpy as np
from scipy.io import wavfile
from scipy.signal import resample
data = np.random.uniform(-1, 1, 500)
data_resampled = resample(data, 44100)
wavfile.write('output.wav', 44100, data_resampled)
尝试使用rate
中的sipy.io.wavfile.write
参数。随着速率降低,声音的频率降低。