2016-12-05 398 views
0

我有一個數據的csv文件,記錄在數據採集中心,頻率爲500Hz,我試圖將其轉換爲wav格式。我對Python有特殊要求,只是將這些數字(16位整數提供給wave包)提供,並且不起作用。我應該如何從簡單的數字流構造一個wav文件?如何將500Hz csv數據文件轉換爲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) 

回答

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) 

嘗試在sipy.io.wavfile.writerate參數玩耍。隨着費率降低,聲音的頻率降低。

+0

謝謝你的回答,我試過你的方式,基本上我得到的是一個空白的,沒有聲音,我已經發布代碼作爲問題的更新,你介意看看嗎? – TPWang

+0

查看我的編輯。問題似乎與您的採樣率有關。 – Jakub

+0

儘管您的編輯是爲了創建隨機生成的聲音,但我的數據來自數據採集設備,但我會嘗試。 – TPWang