在音频文件中加入指定信噪比的白噪声(MATLAB/python)

阅读: 评论:0

在音频文件中加入指定信噪比的白噪声(MATLAB/python)

在音频文件中加入指定信噪比的白噪声(MATLAB/python)

python代码已上传

MATLAB

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); % 绘制加入噪音后波形图

python读取/写入wav

import soundfile as sfsignal, fs = sf.read(input_path)
sf.write(output_path, signal_with_noise, fs)

python

待处理音频太长了,直接算的话会溢出,所以分成了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小时内删除。

标签:噪声   音频文件   信噪比   python   MATLAB
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23