产生音频噪音

问题描述 投票:0回答:2

我想用 python 生成音频背景噪音并将其保存在 mp3 中。理想情况下,我还可以调整幅度和频率。有我可以使用的软件包吗?

谢谢 拉兹鲁

python audio noise
2个回答
6
投票

使用 scipy,您可以将 numpy 数组保存为

.wav
文件。您只需要从均值为零的正态分布生成一系列随机样本。
truncnorm
是截断正态分布,确保样本值不会太大或太小(
+- 2^16
如果是 16 位
.wav
文件)

from scipy.io import wavfile
from scipy import stats
import numpy as np

sample_rate = 44100
length_in_seconds = 3
amplitude = 11
noise = stats.truncnorm(-1, 1, scale=min(2**16, 2**amplitude)).rvs(sample_rate * length_in_seconds)
wavfile.write('noise.wav', sample_rate, noise.astype(np.int16))

0
投票

我认为这是对马克 2021 年 2 月 10 日的答案的轻微改进:

from scipy.io import wavfile
from scipy import stats

sample_rate = 44100
length_in_seconds = 3
noise = stats.truncnorm(-3, 3, scale = 0.3).rvs(size = sample_rate * length_in_seconds)
wavfile.write('noise float64 -3 +3 0.3).wav', sample_rate, noise)

改进之处在于我将 float64 样本保存到 WAV 文件中,而不是 int16。这提供了更好的分辨率,但文件也增大了 4 倍。 :-) 你可以选择 float32 作为妥协。

我个人使用scale = 0.2,因为在生成噪声文件后,我将其导入Audacity并使用高通和低通滤波器,并且出于某种原因 - 在https://forum.audacityteam.org/t中提到/extracting-Frequency-ranges-without-causing-amplification/42073/1 - 这会放大信号。因此,如果我使用scale = 0.3,我会得到裁剪。

3月17日补充:

我又改进了一点。如果您使用这个新版本,结果会好一点,因为每个频率的信号量变化会稍微小一些:

from scipy.io import wavfile
from scipy import stats
import numpy

sample_rate = 44100
length_in_seconds = 3
no_of_repetitions = 10
noise = numpy.array( stats.truncnorm(-1, 1, loc=0, scale=1).rvs(size = sample_rate * length_in_seconds * no_of_repetitions) )
if no_of_repetitions > 1:
    slices = []
    for i in range(no_of_repetitions):
        slices.append(
            numpy.array(noise[i * sample_rate * length_in_seconds:(i + 1) * sample_rate * length_in_seconds - 1]))
    added_up = numpy.zeros(len(slices[0]))
    for i in range(no_of_repetitions):
        added_up = added_up + slices[i]
else:
    added_up = noise
peak_value = numpy.max(numpy.abs(added_up))
numpy.abs(peak_value2))
added_up /= peak_value

wavfile.write('Quick noise float64 -1 +1 scale 1 rep 10.wav', sample_rate, added_up)

但是我发现了另一种更复杂的方法来创建“噪声”,该方法使每个频率的信号“量”变化稍小一些 - 请参阅如何使用 numpy 在频率范围内生成噪声?

© www.soinside.com 2019 - 2024. All rights reserved.