如何将500Hz csv数据文件转换为wav音频文件?

时间:2016-12-05 21:31:44

标签: python csv audio wav

我有一个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)

1 个答案:

答案 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参数。随着速率降低,声音的频率降低。