【问题标题】:How to add noise to wav file using python?如何使用python向wav文件添加噪声?
【发布时间】:2013-03-03 22:58:55
【问题描述】:

我有一个干净的 wav,和一个包含预先生成的噪音的 wav,我想将噪音添加到干净的 wav 文件中,以创建一个嘈杂的 wav。

我看到here这可以用matlab轻松完成。

如何用python做到这一点?

【问题讨论】:

    标签: python wav noise


    【解决方案1】:
    import numpy as np
    from scikits.audiolab import wavread, wavwrite
    
    data1, fs1, enc1 = wavread("file1.wav")
    data2, fs2, enc2 = wavread("file2.wav")
    
    assert fs1 == fs2
    assert enc1 == enc2
    result = 0.5 * data1 + 0.5 * data2
    
    wavwrite(result, 'result.wav')
    

    但是,如果您有不同的采样率 (fs*) 或编码 (enc*),那么您可能需要尝试更复杂的方法。 (来自here

    附加

    如果您data* 数组的大小不同,您可以将最短数组与较长数组的子集进行匹配:

    min_size = min(len(data1), len(data2))
    
    result = 0.5 * data1[:min_size] + 0.5 * data2[:min_size]
    

    或者您可以wrap 最短数组,使其与最长数组的长度相匹配:

    short, long = (data1, data2) if len(data1) < len(data2) else (data2, data1)
    n = len(long) / len(short)
    new_array = np.tile(short, n)
    
    result = 0.5 * long[:n] * 0.5 * new_array
    

    这些说明超出了您的问题范围。如果您还有其他问题,您可能应该将其标记为已解决并提出一个新问题。

    【讨论】:

    • 这不起作用。 data1 和 data2 的长度不同。所以我只取了数据[:100000],我得到的结果是一个非常短的文件(400KB),其中包含一个非常慢的样本。你可以自己尝试一下,你会看到的。
    • 您可能需要验证生成的波形文件是否具有正确的采样率、字长等。由于 danodonovan 的程序没有明确设置这些参数,因此很可能默认值不是你想要什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-09
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    相关资源
    最近更新 更多