gpt4 book ai didi

matlab - 如何在matlab中对音频文件产生噪音

转载 作者:行者123 更新时间:2023-12-05 06:53:15 25 4
gpt4 key购买 nike

我想在音频文件上创建一个噪音,并且能够在我想做的音频文件的任何部分执行此操作。感谢您的帮助....

我写了这个但是它没有解决我的问题:

load handel.mat;
hfile= 'handel.wav';
wavwrite(y, Fs, hfile);
nsamples=Fs;

[y, Fs , nbits, readinfo]= wavread(hfile,nsamples);

sound(y(round(2.85/4*end):end),Fs);

最佳答案

向信号的特定部分添加噪声

在此示例中,名为 Start_TimeEnd_Time 的两个变量用于指示噪声开始和结束的位置(以秒为单位)。要转换这些时间以找到相应的样本索引,我们可以将 Start_TimeEnd_Time 除以 Sampling_Period1/Sampling/频率。找到这些索引 Start_SampleEnd_Sample 后,我们可以使用矩阵索引来提取范围之间信号的特定部分并添加我们的噪声模型。在本例中,我通过实现 rand() 函数简单地使用了一个范围从 -1 到 1 的随机向量。下面的代码还概述了一个注释掉的替代选项,该选项使用 awgn() 函数来应用加性高斯白噪声 (AWGN)。根据您的噪声模型,这可能会有所不同。希望概述如何提取/定位一部分音频的代码有所帮助。

Audio Plot Comparison

添加随机白噪声:

load handel.mat
File_Name = 'handel.wav';

audiowrite(File_Name,y,Fs);
[Original_Signal,Sampling_Frequency] = audioread('handel.wav');
Sampling_Period = 1/Sampling_Frequency;

%Selecting region to apply noise (1s to 3s)%
Start_Time = 1; %1 second%
End_Time = 3; %3 seconds%

Start_Sample = Start_Time/Sampling_Period;
End_Sample = End_Time/Sampling_Period;

%Random noise vector%
Noise_Strength = 0.1;
Noise_Vector = Noise_Strength.*(2*rand(1,End_Sample-Start_Sample+1)-1).';
Noisy_Signal = Original_Signal;

%Random Noise%
Noisy_Signal(Start_Sample:End_Sample) = Noisy_Signal(Start_Sample:End_Sample) + Noise_Vector;

%Additive White Gaussian Noise (AWGN)%
% Signal_To_Noise_Ratio = 20;
% Noisy_Signal(Start_Sample:End_Sample) = awgn(Noisy_Signal(Start_Sample:End_Sample),Signal_To_Noise_Ratio);

sound(Noisy_Signal,Sampling_Frequency);

扩展:通过绘图视觉化

Audio_Properties = audioinfo('handel.wav');
Total_Samples = Audio_Properties.TotalSamples;
t = (0: Sampling_Period: Sampling_Period*(Total_Samples-1));

clf;
subplot(2,1,1); plot(t,Original_Signal);
title("Original Audio Signal");
xlabel("Time (s)"); ylabel("Amplitude");
ylim([1.2*min(Original_Signal) 1.2*max(Original_Signal)]);

subplot(2,1,2); plot(t,Noisy_Signal);
line([Start_Time Start_Time],[1.2*min(Noisy_Signal) 1.2*max(Noisy_Signal)],'color','r');
line([End_Time End_Time],[1.2*min(Noisy_Signal) 1.2*max(Noisy_Signal)],'color','r');
text((End_Time + Start_Time)/2,(max(Noisy_Signal)-min(Noisy_Signal))/2,"Noisy Region",'color','r','HorizontalAlignment','center');
title("Noise Added to Portion of Audio Signal");
xlabel("Time (s)"); ylabel("Amplitude");
ylim([1.2*min(Noisy_Signal) 1.2*max(Noisy_Signal)]);

使用 MATLAB R2019b 运行

关于matlab - 如何在matlab中对音频文件产生噪音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65822313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com