我們有時候做演算法分析,需要自己給訊號新增雜訊來驗證自己演算法的魯棒性。
以語音頻號為例,給訊號新增指定訊雜比的高斯白雜訊程式如下:
data=xx(10000:26000); %讀入資料
%新增雜訊
snr = 10; %設定訊雜比,單位db
%輸出引數data是帶噪語音,noise為加在訊號上的白雜訊
[data,noise] = gnoisegen(data,snr);
新增雜訊的函式gnoisegen:
function [y,noise] = gnoisegen(x,snr)
noise=randn(size(x)); % 用randn函式產生高斯白雜訊
nx=length(x); % 求出訊號x長
signal_power = 1/nx*sum(x.*x); % 求出訊號的平均能量
noise_power=1/nx*sum(noise.*noise);% 求出雜訊的能量
noise_variance = signal_power / ( 10^(snr/10) ); % 計算出雜訊設定的方差值
noise=sqrt(noise_variance/noise_power)*noise; % 按雜訊的平均能量構成相應的白雜訊
y=x+noise; % 合成帶噪語音
MATLAB實現語音頻號分幀
為了分析讀入資料,通常進行分幀處理。在分幀中,往往設定在相鄰兩幀之間有一部分重疊,如下圖所示 設語音檔案的資料存放在y中,y的長度為n,取樣頻率為fs,取每幀長為wlen,後一幀對前一幀的位移量用inc表示,相鄰兩幀之間的重疊部分overlap wlen inc。f enframe x,win,in...
MATLAB實現語音頻號短時傅利葉變換
function d stftms x,win,nfft,inc iflength win 1 判斷有否設定窗函式 wlen win 否,設幀長 win hanning wlen 設定窗函式 else wlen length win 設幀長 endx x win win 把x和win都變為列陣列 s...
語音頻號處理
濁音的聲帶振動基本頻率 fundamental frequency 稱為基音頻率。濁音的基音頻率 pitch 語音生成系統和語音感知系統 語音頻號生成的數學模型 語音頻號的特性分析 語音頻號處理是以語音語言學和數字訊號處理為基礎的綜合性學科,是用數字訊號處理技術對語音頻號進行處理的一門學科。說話人識...