日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

语音识别-时域分析

發布時間:2025/3/15 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 语音识别-时域分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考:
https://blog.csdn.net/qq_39516859/article/details/80166842

語音分幀與加窗

語音具有時變特性,但在短時間范圍內,其特性基本保持不變即相對穩定。所以具有短時平穩性

語音信號分成一段一段來分析,每一段稱為一‘幀’,幀長一般取為10~30ms。

前一幀和后一幀的交疊部分稱為幀移。

幀移與幀長的比值一般取為0~1/2.

窗函數

分幀用可移動的有限長度窗口進行加權的方法來實現。

窗口長度:

采樣周期Ts=1/fsT_s=1/f_sTs?=1/fs?,窗口長度N和頻率Δf\Delta fΔf之間的關系
Δf=1NTs\Delta f=\frac{1}{NT_s} Δf=NTs?1?
三種窗對比

[外鏈圖片轉存失敗(img-tjgqblFw-1563959674910)(assets/三種窗對比.jpg)]

時域分析

( 都用hamming窗

( 語音都為zj3.wav

幀長為 200

幀移為 100

短時能量

設第n幀語音信號xn(m)x_n(m)xn?(m)的短時能量用EnE_nEn?
En=∑m=0N?1xn2(m)E_n=\sum^{N-1}_{m=0}x_n^2(m) En?=m=0N?1?xn2?(m)

短時平均幅度

算一幀語音信號能量大小
Mn=∑m=0N?1∣xn(m)∣M_n=\sum^{N-1}_{m=0}|x_n(m)| Mn?=m=0N?1?xn?(m)

短時過零率

表示一幀語音中語音信號波形穿過橫軸(零電平)的次數。(正負變化的次數
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?0N?1?sgn[xn?(m)]?sgn[xn?(m?1)]

sgn[x]={1,(x)≥0)?1,(x&lt;0)sgn[x]=\begin{cases}1,&amp;\text(x)\geq 0) \\ -1,&amp;(x&lt;0) \end{cases} sgn[x]={1,?1?(x)0)(x<0)?

MATLAB 離散信號相鄰的取樣值改變符號,其乘積為負
xi(m)×xi(m+1)&lt;0x_i(m)\times x_i(m+1)&lt;0 xi?(m)×xi?(m+1)<0

代碼:

%短時時域分析參數計算并顯示 clear all; clc; filedir=[];%設置路徑 filename='D:\matlab\music\zj3.wav'; file=[filedir filename]; [x,Fs]=audioread(file);wlen=200;%幀長 inc=100;%幀移 win=hamming(wlen);%海明窗 N=length(x);%信號長度 time=(0:N-1)/Fs;%計算出信號的時間刻度%這些函數沒有 % En1=STEn(x,win,inc);%短時能量 % Mn1=STMn(x,win,inc);%短時平均幅度 % Zcr1=STZcr(x,win,inc);%短時過零率 %返回的不是向量而是矩陣,因為一幀信號得到的不是一個數值X=enframe(x,win,inc)'; %分幀,一列是一幀 fn=size(X,2);%幀數 frameTime=frame2time(fn,wlen,inc,Fs); %求出每幀對應的時間 %這個公式得再看一下%短時能量for i=1:fny=X(:,i);%每一幀數據b=0;for m=1:1:200b=b+y(m).^2; endE(i)=b;end%短時平均幅度for i=1:fny=X(:,i);%每一幀數據b=0;for m=1:1:200b=b+abs(y(m)); endM(i)=b;end%短時過零率Z=zeros(1,fn); % 初始化for i=1:fny=X(:,i);%每一幀數據b=0;for m=1:1:199if y(m)*y(m+1)<0;b=b+1;endZ(i)=b;endend%短時自相關d=time*Fs; %采樣點數=時間乘上采樣頻率for k=2:fny=X(:,k);%每一幀數據ru=xcorr(y);R(k)=max(ru);end%短時平均幅度差for i=1:fny=X(:,i);%每一幀數據for k=1:wlenf(k)=sum(abs(y(k:end)-y(1:end-k+1)));endF(i)=max(f)end % %畫圖-短時能量 % figure(2) % subplot(211) % plot(time,x) % title('原始語音') % ylabel('幅值'); xlabel(['時間/s' 10 '(a)']); % subplot(212) % plot(frameTime,E); % title('短時能量'); % ylabel('幅值'); xlabel(['時間/s' 10 '(b)']);% % 畫圖-短時平均幅度 % figure(3) % subplot(211) % plot(time,x) % title('原始語音') % ylabel('幅值'); xlabel(['時間/s' 10 '(a)']); % subplot(212) % plot(frameTime,M); % title('短時平均幅度'); % ylabel('幅值'); xlabel(['時間/s' 10 '(b)']);% % 畫圖-短時過零率 % figure(4) % subplot(211) % plot(time,x) % title('原始語音') % ylabel('幅值'); xlabel(['時間/s' 10 '(a)']); % subplot(212) % plot(frameTime,Z); % title('短時過零率'); % ylabel('次數'); xlabel(['時間/s' 10 '(b)']);% % 畫圖-短時自相關-還不行 % figure(5) % subplot(211) % plot(time,x) % title('原始語音') % ylabel('幅值'); xlabel(['時間/s' 10 '(a)']); % subplot(212) % plot(time,R); % title('短時自相關'); % ylabel('復制'); xlabel(['點數' 10 '(b)']);

短時自相關

對于濁音語音可以用自相關函數求出語音波形序列的基音周期。

線性預測分析時,也用到自相關函數。

語音信號x(m),自相關函數R(k)

K是最大延遲點數
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=0N?1?K?xn?(m)xn?(m+k)(0kK)

短時平均幅度差

跟自相關函數有類似作用的參量
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=0N?1?k?xn?(m)?xn?(m+k)

總結

以上是生活随笔為你收集整理的语音识别-时域分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。