语音识别-时域分析
參考:
https://blog.csdn.net/qq_39516859/article/details/80166842
語(yǔ)音分幀與加窗
語(yǔ)音具有時(shí)變特性,但在短時(shí)間范圍內(nèi),其特性基本保持不變即相對(duì)穩(wěn)定。所以具有短時(shí)平穩(wěn)性
語(yǔ)音信號(hào)分成一段一段來(lái)分析,每一段稱為一‘幀’,幀長(zhǎng)一般取為10~30ms。
前一幀和后一幀的交疊部分稱為幀移。
幀移與幀長(zhǎng)的比值一般取為0~1/2.
窗函數(shù)
分幀用可移動(dòng)的有限長(zhǎng)度窗口進(jìn)行加權(quán)的方法來(lái)實(shí)現(xiàn)。
窗口長(zhǎng)度:
采樣周期Ts=1/fsT_s=1/f_sTs?=1/fs?,窗口長(zhǎng)度N和頻率Δf\Delta fΔf之間的關(guān)系
Δf=1NTs\Delta f=\frac{1}{NT_s} Δf=NTs?1?
三種窗對(duì)比
[外鏈圖片轉(zhuǎn)存失敗(img-tjgqblFw-1563959674910)(assets/三種窗對(duì)比.jpg)]
時(shí)域分析
( 都用hamming窗
( 語(yǔ)音都為zj3.wav
幀長(zhǎng)為 200
幀移為 100
短時(shí)能量
設(shè)第n幀語(yǔ)音信號(hào)xn(m)x_n(m)xn?(m)的短時(shí)能量用EnE_nEn?
En=∑m=0N?1xn2(m)E_n=\sum^{N-1}_{m=0}x_n^2(m) En?=m=0∑N?1?xn2?(m)
短時(shí)平均幅度
算一幀語(yǔ)音信號(hào)能量大小
Mn=∑m=0N?1∣xn(m)∣M_n=\sum^{N-1}_{m=0}|x_n(m)| Mn?=m=0∑N?1?∣xn?(m)∣
短時(shí)過(guò)零率
表示一幀語(yǔ)音中語(yǔ)音信號(hào)波形穿過(guò)橫軸(零電平)的次數(shù)。(正負(fù)變化的次數(shù)
Zn=12∑m?0N?1∣sgn[xn(m)]?sgn[xn(m?1)]Z_n=\frac{1}{2}\sum^{N-1}_{m-0}|sgn[x_n(m)]-sgn[x_n(m-1)] Zn?=21?m?0∑N?1?∣sgn[xn?(m)]?sgn[xn?(m?1)]
sgn[x]={1,(x)≥0)?1,(x<0)sgn[x]=\begin{cases}1,&\text(x)\geq 0) \\ -1,&(x<0) \end{cases} sgn[x]={1,?1,?(x)≥0)(x<0)?
MATLAB 離散信號(hào)相鄰的取樣值改變符號(hào),其乘積為負(fù)
xi(m)×xi(m+1)<0x_i(m)\times x_i(m+1)<0 xi?(m)×xi?(m+1)<0
代碼:
%短時(shí)時(shí)域分析參數(shù)計(jì)算并顯示 clear all; clc; filedir=[];%設(shè)置路徑 filename='D:\matlab\music\zj3.wav'; file=[filedir filename]; [x,Fs]=audioread(file);wlen=200;%幀長(zhǎng) inc=100;%幀移 win=hamming(wlen);%海明窗 N=length(x);%信號(hào)長(zhǎng)度 time=(0:N-1)/Fs;%計(jì)算出信號(hào)的時(shí)間刻度%這些函數(shù)沒(méi)有 % En1=STEn(x,win,inc);%短時(shí)能量 % Mn1=STMn(x,win,inc);%短時(shí)平均幅度 % Zcr1=STZcr(x,win,inc);%短時(shí)過(guò)零率 %返回的不是向量而是矩陣,因?yàn)橐粠盘?hào)得到的不是一個(gè)數(shù)值X=enframe(x,win,inc)'; %分幀,一列是一幀 fn=size(X,2);%幀數(shù) frameTime=frame2time(fn,wlen,inc,Fs); %求出每幀對(duì)應(yīng)的時(shí)間 %這個(gè)公式得再看一下%短時(shí)能量for i=1:fny=X(:,i);%每一幀數(shù)據(jù)b=0;for m=1:1:200b=b+y(m).^2; endE(i)=b;end%短時(shí)平均幅度f(wàn)or i=1:fny=X(:,i);%每一幀數(shù)據(jù)b=0;for m=1:1:200b=b+abs(y(m)); endM(i)=b;end%短時(shí)過(guò)零率Z=zeros(1,fn); % 初始化for i=1:fny=X(:,i);%每一幀數(shù)據(jù)b=0;for m=1:1:199if y(m)*y(m+1)<0;b=b+1;endZ(i)=b;endend%短時(shí)自相關(guān)d=time*Fs; %采樣點(diǎn)數(shù)=時(shí)間乘上采樣頻率for k=2:fny=X(:,k);%每一幀數(shù)據(jù)ru=xcorr(y);R(k)=max(ru);end%短時(shí)平均幅度差for i=1:fny=X(:,i);%每一幀數(shù)據(jù)for k=1:wlenf(k)=sum(abs(y(k:end)-y(1:end-k+1)));endF(i)=max(f)end % %畫(huà)圖-短時(shí)能量 % figure(2) % subplot(211) % plot(time,x) % title('原始語(yǔ)音') % ylabel('幅值'); xlabel(['時(shí)間/s' 10 '(a)']); % subplot(212) % plot(frameTime,E); % title('短時(shí)能量'); % ylabel('幅值'); xlabel(['時(shí)間/s' 10 '(b)']);% % 畫(huà)圖-短時(shí)平均幅度 % figure(3) % subplot(211) % plot(time,x) % title('原始語(yǔ)音') % ylabel('幅值'); xlabel(['時(shí)間/s' 10 '(a)']); % subplot(212) % plot(frameTime,M); % title('短時(shí)平均幅度'); % ylabel('幅值'); xlabel(['時(shí)間/s' 10 '(b)']);% % 畫(huà)圖-短時(shí)過(guò)零率 % figure(4) % subplot(211) % plot(time,x) % title('原始語(yǔ)音') % ylabel('幅值'); xlabel(['時(shí)間/s' 10 '(a)']); % subplot(212) % plot(frameTime,Z); % title('短時(shí)過(guò)零率'); % ylabel('次數(shù)'); xlabel(['時(shí)間/s' 10 '(b)']);% % 畫(huà)圖-短時(shí)自相關(guān)-還不行 % figure(5) % subplot(211) % plot(time,x) % title('原始語(yǔ)音') % ylabel('幅值'); xlabel(['時(shí)間/s' 10 '(a)']); % subplot(212) % plot(time,R); % title('短時(shí)自相關(guān)'); % ylabel('復(fù)制'); xlabel(['點(diǎn)數(shù)' 10 '(b)']);短時(shí)自相關(guān)
對(duì)于濁音語(yǔ)音可以用自相關(guān)函數(shù)求出語(yǔ)音波形序列的基音周期。
線性預(yù)測(cè)分析時(shí),也用到自相關(guān)函數(shù)。
語(yǔ)音信號(hào)x(m),自相關(guān)函數(shù)R(k)
K是最大延遲點(diǎn)數(shù)
Rn(k)=∑m=0N?1?Kxn(m)xn(m+k)(0≤k≤K)R_n(k)=\sum^{N-1-K}_{m=0}x_n(m)x_n(m+k) \quad (0\leq k\leq K) Rn?(k)=m=0∑N?1?K?xn?(m)xn?(m+k)(0≤k≤K)
短時(shí)平均幅度差
跟自相關(guān)函數(shù)有類似作用的參量
Fn(k)=∑m=0N?1?k∣xn(m)?xn(m+k)F_n(k)=\sum^{N-1-k}_{m=0}|x_n(m)-x_n(m+k) Fn?(k)=m=0∑N?1?k?∣xn?(m)?xn?(m+k)
總結(jié)
- 上一篇: 去年计算机试题,微机去年试卷及答案,广东
- 下一篇: python编译器无法运行input_为