python convert an array to wav

  • Last Update :
  • Techknowledgy :

If you know the sampling frequency of your signal and data is already scaled appropriately by max(abs(data)) then you can do it very easily using 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)

Suggestion : 2

To write multiple-channels, use a 2-D array of shape (Nsamples, Nchannels).,Writes a simple uncompressed WAV file.,The sample rate (in samples/sec).,The bits-per-sample and PCM/float will be determined by the data-type.

>>> from scipy.io.wavfile
import write
   >>>
   samplerate = 44100;
fs = 100 >>>
   t = np.linspace(0., 1., samplerate) >>>
   amplitude = np.iinfo(np.int16).max >>>
   data = amplitude * np.sin(2. * np.pi * fs * t) >>>
   write("example.wav", samplerate, data.astype(np.int16))

Suggestion : 3

I have audio data recorded from microphone like this : (ndarray of float),But when I play the audio it become broken, nothing but just noise… how to convert it into .wav audio file?,and maybe also convert your data to integers since I think wav files uses only integers values,replace your waveFile.writeframeswith this

> print(data)[-0.00762939 - 0.00817871 - 0.00714111...0.0265511 0.02484207 0.02377392]
while (recording):
   frames.append(data)

waveFile = wave.open(WAVE_OUTPUT_FILENAME + "_" + str(COUNT_FILE) + ".wav", 'wb')
waveFile.setnchannels(CHANNELS)
waveFile.setsampwidth(audio.get_sample_size(FORMAT))
waveFile.setframerate(RATE)
waveFile.wr(b ''.join(frames))
waveFile.close()
data = struct.pack('h' * len(frames), * frames)
waveFile.writeframes(data)

Suggestion : 4

wavio.write writes a numpy array to a WAV file, optionally using a specified sample width.,wavio.read reads a WAV file and returns an object that holds the sampling rate, sample width (in bytes), and a numpy array containing the data.,The following code (also found in the docstring of wavio.write) writes a three second 440 Hz sine wave to a 24-bit WAV file:,A Python module for reading and writing WAV files using numpy arrays.

The following code (also found in the docstring of wavio.write) writes a three second 440 Hz sine wave to a 24-bit WAV file:

import numpy as np
import wavio

rate = 22050 # samples per second
T = 3 # sample duration(seconds)
f = 440.0 # sound frequency(Hz)
t = np.linspace(0, T, T * rate, endpoint = False)
x = np.sin(2 * np.pi * f * t)
wavio.write("sine24.wav", x, rate, sampwidth = 3)

Suggestion : 5

Last Updated : 24 Jan, 2021,GATE CS 2021 Syllabus

First We Need To Install ffmpeg. It Is A Free Open Source Software Project Consist of a Large Suite Of Libraries And Programs For Handling Video, Audio, And Other Multimedia Files.

sudo apt - get install ffmpeg

So First Let Us Install pydub. This is an Audio Manipulation Module. Python Provides a Module Called pydub to Work With Audio Files. pydub is a Python library to work with only .wav files.

sudo apt - get install - y python - pydub