python代码已上传
close all;clear;clc;
SNR = 5;
[signal,fs] = audioread(inputpath);
signal = signal(1:10000);
[noise,fs_n] = audioread('white.wav');
signal_len = size(signal,1);
NOISE = noise(1: nx);
NOISE = NOISE - mean(NOISE);signal_power = 1/nx*sum(signal.*signal);
noise_variance = signal_power / ( 10^(SNR/10) );
NOISE=sqrt(noise_variance)/std(NOISE)*NOISE;Y = signal + NOISE;
t = (0: length(signal) - 1) / fs;
subplot(2,1,1); plot(t,signal); % 绘制原波形图
subplot(2,1,2); plot(t,Y); % 绘制加入噪音后波形图
import soundfile as sfsignal, fs = sf.read(input_path)
sf.write(output_path, signal_with_noise, fs)
待处理音频太长了,直接算的话会溢出,所以分成了100段。
import soundfile as sf
import osdef add_white1(input_path, output_path,SNR, num_of_group):signal, fs = sf.read(input_path)noise0, fs_n = sf.read('white.wav')noise = noise0 - np.mean(noise0)#分组nx = len(signal)h = 0group_len = int(nx / num_of_group)grouped_signal = []grouped_noise = []for i in range(num_of_group):obj_signal = signal[h:h + group_len]grouped_signal.append(obj_signal)h = h + group_lenobj_noise = noise[0:group_len]grouped_noise.append(obj_noise)grouped_signal_power = []grouped_noise_variance = []grouped_NOISE = []a = float(SNR / 10)for i in range(num_of_group):cur_signal = grouped_signal[i]cur_noise = grouped_noise[i] grouped_signal_power.append(1 / group_len * sum(cur_signal * cur_signal))grouped_noise_variance.append(grouped_signal_power[i] / (10 ** a))grouped_NOISE.append((cmath.sqrt(grouped_noise_variance[i]) / np.std(cur_noise)) * cur_noise)array_signal = np.array(grouped_signal).flatten()array_NOISE = np.array(grouped_NOISE).flatten()array_NOISE = alsignal_with_noise = (array_signal + array_NOISE)print(np.array(signal_with_noise).shape)sf.write(output_path, signal_with_noise, fs)maindir = ‘’
files = os.listdir(maindir)
for filename in files:add_white1(input + filename, output + filename , 5, 200)
本文发布于:2024-02-02 21:05:19,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170687911846440.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |