2015-10-19 5 views
0

В Python у меня есть массив поплавков, представляющих напряжения аналогового сигнала.Python Преобразование массива в Wav

Может кто-нибудь объяснить, как я могу изменить массив в формате .wav? Я видел this Должен ли я сначала изменить формат данных с [1.23,1.24,1.25,1.26] (например) до 1.231.241.251.26 перед добавлением заголовков, чтобы он читался правильно? В конечном итоге я планирую использовать FFT для значений, чтобы получить основные частоты, есть ли лучший способ сохранить значения в этом случае?

Спасибо

+0

вы можете проверить модуль [wave] (https://docs.python.org/2/library/wave.html) – DreadfulWeather

+0

http://soledadpenades.com/2009/10/29/fastest-way-to- generate-wav-files-in-python-using-the-wave-module/ – KingMak

+0

Если вы в конечном итоге собираетесь выполнять БПФ, то в чем смысл писать wav-файл? Одна очевидная проблема заключается в том, что ваши аналоговые уровни напряжения будут потеряны, так как вам нужно будет перемасштабировать данные до -1,0 до 1,0, а wav не имеет собственного способа хранения информации масштабирования (если вы не вставляете ее в пользовательский фрагмент риффа) , – jaket

ответ

0

Если вы знаете частоту дискретизации вашего сигнала и данные уже масштабируется соответствующим образом max(abs(data)), то вы можете сделать это очень легко с помощью scipy:

from __future__ import print_function 
import scipy.io.wavfile as wavf 
import numpy as np 

if __name__ == "__main__": 

    samples = np.random.randn(44100) 
    fs = 44100 
    out_f = 'out.wav' 

    wavf.write(out_f, fs, samples) 

Вы также можете использовать стандарт wave модуль.

Смежные вопросы