0
votes

I have two audio files that I would like to mix in Python.

I'll refer to the original audio as "Audio A" and the audio to mix is "Audio B". I am able to add white noise at a specific SNR to an the Audio A signal as described here:

audio, sr = librosa.load(file_name, sr=None, res_type='kaiser_fast')
power = audio ** 2  # Calculate power
signalpower_db = 10 * np.log10(power)  # convert power to dB
#snr_dB = 0  # add SNR of specified dB
signal_average_power = np.mean(power)  # Calculate signal power)
signal_averagepower_dB = 10 * np.log10(signal_average_power)  # convert signal power to dB
noise_dB = signal_averagepower_dB - snr_dB  # Calculate noise
noise_watts = 10 ** (noise_dB / 10)  # Convert noise from dB to watts
# Generate sample of white noise
mean_noise = 0
noise = np.random.normal(mean_noise, np.sqrt(noise_watts), len(audio))

noise_signal = (audio + noise) / 1.3  #  To prevent clipping of signal

In the code given here, I have done a 0 dB SNR.

How do I now, instead of white noise, use "Audio B" as the noise source and obtain a SNR of 0dB. That is, how to replace np.random.normal noise with Audio B as the noise source injected in the original signal "Audio A" at a SNR = 0?

Any help and guidance is sincerely appreciated!