Usage¶
audiofile can read and get metadata information
for all files that are supported by
ffmpeg,
sox,
and mediainfo,
if those are available on your system.
In addition, it can create WAV, FLAC, MP3, or OGG files.
Write a file¶
First, let’s create a dummy signal containing noise:
import audiofile
import numpy as np
sampling_rate = 8000 # in Hz
noise = np.random.normal(0, 1, sampling_rate)
noise /= np.amax(np.abs(noise))
audiofile.write("noise.flac", noise, sampling_rate)
File information¶
Now you can get metadata information on that signal:
>>> audiofile.channels("noise.flac")
1
>>> audiofile.duration("noise.flac")
1.0
>>> audiofile.samples("noise.flac")
8000
>>> audiofile.sampling_rate("noise.flac")
8000
>>> audiofile.bit_depth("noise.flac")
16
Read a file¶
You can read the signal:
>>> signal, sampling_rate = audiofile.read("noise.flac")
>>> sampling_rate
8000
>>> signal.shape
(8000,)
If you prefer a workflow that returns a 2D signal with channel as the first dimension, enforce it with:
>>> signal, sampling_rate = audiofile.read("noise.flac", always_2d=True)
>>> signal.shape
(1, 8000)
If you just want to read from 500 ms to 900 ms of the signal:
>>> signal, sampling_rate = audiofile.read("noise.flac", offset=0.5, duration=0.4)
>>> signal.shape
(3200,)
Convert a file¶
You can convert any file to WAV using:
>>> import audeer
>>> wav_file = audiofile.convert_to_wav("noise.flac", "noise.wav")
Resample/Remix a file¶
audiofile does not directly support
resampling or remixing
of an audio file
during reading.
But it can be easily achieved with audresample.
>>> import audresample
>>> target_rate = 16000
>>> signal, sampling_rate = audiofile.read("noise.flac", always_2d=True)
>>> signal = audresample.resample(signal, sampling_rate, target_rate)
>>> signal = audresample.remix(signal, channels=[0, 0])
>>> audiofile.write("noise-remix.flac", signal, target_rate)
>>> audiofile.sampling_rate('noise-remix.flac')
16000
>>> signal.shape
(2, 16000)