преобразователь формы сигнала Python в WAV - PullRequest
0 голосов
/ 24 ноября 2018

Я ищу способ преобразования формы волны, состоящей из времени по оси x и амплитуды по оси y, в формат wav или любой другой аудиофайл.Код или библиотека Python высоко ценится

Вот форма волны, которую я хочу преобразовать

1 Ответ

0 голосов
/ 24 ноября 2018

Вы можете использовать стандартную библиотеку wave.Вот функция, которую я использую.Вы можете изменить его дальше, если вам нужно больше каналов или другую ширину выборки.

import wave
import struct

def signal_to_wav(signal, fname, Fs):
    """Convert a numpy array into a wav file.

     Args
     ----
     signal : 1-D numpy array
         An array containing the audio signal.
     fname : str
         Name of the audio file where the signal will be saved.
     Fs: int
        Sampling rate of the signal.

    """
    data = struct.pack('<' + ('h'*len(signal)), *signal)
    wav_file = wave.open(fname, 'wb')
    wav_file.setnchannels(1)
    wav_file.setsampwidth(2)
    wav_file.setframerate(Fs)
    wav_file.writeframes(data)
    wav_file.close()

Некоторые ссылки на документацию:

https://docs.python.org/3/library/wave.html

https://docs.python.org/2/library/wave.html

...