2016-12-05 17 views
0

データ収集センターに500Hzの周波数で記録されたデータのCSVファイルがあり、これをwav形式に変換しようとしています。私はPythonにトライを持っていて、数値を(waveパッケージに16ビット整数として)送り、それはうまくいかなかった。単純に数字のストリームからwavファイルを作成するにはどうすればよいですか?500Hz csvデータファイルをwavオーディオファイルに変換するには?

私はをドキュメントhereに従って32ビット浮動小数点形式を使用するようにfloat32に設定しましたが、それはサウンドを生成していません。

#!/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

関連する問題