python 歸一化混音

wav音頻文件要求:

單通道、S16_LE、採樣率一致。

import scipy.io.wavfile as wav
import numpy as np

MAX = 2**15 - 1
MIN = -2**15

def mix(sr, ns, sigma=1.0):
    tmp = 0
    f = 1.0
    mix_audio = np.zeros((len(sr)), dtype=np.int16)
    for i, (s, n) in enumerate(zip(sr, ns)):
        tmp = s + n * sigma
        tmp *= f
        if tmp > MAX:
            f = MAX / tmp
            tmp = MAX            
        elif tmp < MIN:
            f = MIN / tmp
            tmp = MIN
        
        if f < 1:
            f += (1 - f) / 32.0

        mix_audio[i] = tmp
    return mix_audio



ns_fs, ns_audio = wav.read("pink_noise.wav")

sr_fs, sr_audio = wav.read("A11_100.wav")

print("ns_fs:", ns_fs)
print("sr_fs:", sr_fs)

ns_len = len(ns_audio)
sr_len = len(sr_audio)
print("ns_len:", ns_len)
print("sr_len:", sr_len)

ns_pad_audio = np.zeros((sr_len), dtype=np.int16)
ns_pad_audio[:sr_len] = ns_audio[:sr_len]

print("ns_audio:", ns_audio.shape)
print("sr_audio:", sr_audio.shape)
print("ns_pad_audio:", ns_pad_audio.shape)


mix_audio = mix(sr_audio, ns_audio, 0.1)
print("mix_audio", mix_audio)

wav.write("mix.wav", sr_fs, mix_audio)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章