In this tutorial, we will introduce you how to combine several wav files to one big one by python. You can learn how to do by following our steps.
Preliminary
We will use python soundfile package to implement it, you can install it.
pip install SoundFile
There are two types of combining wav files: add or concatenate. We will introduce one by one.
Read wav file data
In order to combine wav files, we should read its data.
import random import soundfile as sf import numpy as np s1 = '1.wav' s2 = '2.wav' s1_wav_data, _ = sf.read(s1, dtype='float32') s2_wav_data, _ = sf.read(s2, dtype='float32')
In this example, s1 and s2 are two wav files, the sample rate of them are 8,000 and single channel.
You also can use scipy.io.wavfile.read() and librosa.load() to read a wav file, here is the tutorial:
The Difference Between scipy.io.wavfile.read() and librosa.load() in Python – Python Tutorial
Combine wav files by adding
We can add s1 and s2 to combine them.
For example, s1 is 60 seconds, s2 is also 60 seconds, the combined wav file s3 will also be 60 seconds.
s3_wav_data = s1_wav_data + s2_wav_data
However, if the length of them are different, we can cut the longer one.
s1_wav_len = s1_wav_data.shape[0] s2_wav_len = s2_wav_data.shape[0] min_length = min(s1_wav_len, s2_wav_len)
s1 and s2 are single channel audio files, we can use s1_wav_data.shape[0] and s2_wav_data.shape[0] to get their length.
Then, we can combine them by adding.
s3_wav_data = s1_wav_data + s2_wav_data
Save combined file
We can use code below to save combined wav file.
s3 = '3.wav' sf.write(s3, s3_wav_data, 8000, 'PCM_16')
Combine wav files by concatenating
It is very easy, we will concatenate s1 and s2
s3_wav_data = np.concatenate([s1_wav_data, s2_wav_data])
Then we can save s3_wav_data.