2016-12-05 3 views
0

데이터 수집 센터에 500Hz의 주파수로 기록 된 데이터의 CSV 파일이 있으며이를 wav 형식으로 변환하려고합니다. 나는 파이썬에 trie를 가지고 단순히 숫자를 (wave 패키지에 16 비트 정수로) 공급하고 작동하지 않습니다. 단순히 숫자의 스트림에서 wav 파일을 어떻게 작성해야합니까?500Hz csv 데이터 파일을 wav 오디오 파일로 변환하는 방법은 무엇입니까?

정규화가 포함 된 다음 코드를 시도했으며 을 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

관련 문제