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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人工智能 > 循环神经网络 >内容正文

循环神经网络

清浊音判别 matlab,matlab语音信号处理如何判别清浊音?

發(fā)布時(shí)間:2025/3/11 循环神经网络 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 清浊音判别 matlab,matlab语音信号处理如何判别清浊音? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

該樓層疑似違規(guī)已被系統(tǒng)折疊?隱藏此樓查看此樓

這是我一個(gè)學(xué)長(zhǎng)給的程序,他說(shuō)里面要算得基本上已經(jīng)實(shí)現(xiàn)了改一下就可以用了。。。但是i本人不是主攻matlab的說(shuō)白了就是不怎么會(huì),,想問(wèn)下該怎么改來(lái)實(shí)現(xiàn)判斷清濁音的功能。

%對(duì)語(yǔ)音信號(hào)采樣分幀

clear

clc

X= wavread('E:\003\luyin.wav');

%對(duì)信號(hào)進(jìn)行預(yù)加重

x=X;

x4=filter([1,-0.9375],1,x);

figure(1)

subplot(2,1,1),plot(x)

title('原始語(yǔ)音信號(hào)');

xlabel('樣本序列n');

ylabel('幅值');

subplot(2,1,2),plot(x4)

title('原始語(yǔ)音信號(hào)的預(yù)加重');

xlabel('樣本序列n');

ylabel('幅值');

% 幅度歸一化到[-1,1]

x=double(x);

x=x/max(abs(x));

% 常數(shù)設(shè)置

FrameLen=240; % 幀長(zhǎng)取30ms,8kHz的采樣率

FrameInc=80; % 幀移取10ms,1/3

amp1=3;

amp2=2;

zcr1=10;

zcr2=5;

maxsilence=3; % 3*10ms=30ms

minlen=15; % 15*10ms=150ms

status=0;

count=0;

silence=0;

% 短時(shí)過(guò)零率(矢量法)

tmp1=enframe(x(1:length(x)-1),FrameLen,FrameInc);

tmp2=enframe(x(2:length(x)),FrameLen,FrameInc);

signs=(tmp1.*tmp2)< 0;

diffs=(tmp1-tmp2)> 0.02;

zcr=sum(signs.*diffs,2);

figure(2)

subplot(2,1,1)

plot(zcr);

title('短時(shí)過(guò)零率');

ylabel('zcr')

%計(jì)算短時(shí)能量

amp=sum(abs(enframe(filter([1-0.9375],1,x),FrameLen,FrameInc)),2);

inz=find(amp>1);

amm=amp(inz);

ll=min(amm);

figure(2)

subplot(2,1,2)

plot(amp);

title('短時(shí)能量');

ylabel('amp')

%調(diào)整能量門限

amp1=ll+(max(amp)-ll)/8;

amp2=ll+(max(amp)-ll)/16;

%開(kāi)始端點(diǎn)檢測(cè)

x1=0;

x2=0;

for n=1:length(zcr)

goto = 0;

switch status

case{0,1} % 0=靜音,1=可能開(kāi)始

if amp(n) > amp1 % 確信進(jìn)入語(yǔ)音段

x1=max(n-count-1,1);

status=2;

silence=0;

count=count+1;

elseif amp(n) >amp2 | zcr(n) > zcr2 % 可能處于語(yǔ)音段

status=1;

count=count+1;

else % 靜音狀態(tài)

status=0;

count=0;

end

case 2, % 2=語(yǔ)音段

if amp(n) > amp2 | zcr(n) > zcr2 % 保持在語(yǔ)音段

count=count+1;

else

silence=silence+1;

if silence < maxsilence % 靜音還不夠長(zhǎng),尚未結(jié)束

count=count+1;

elseif count < minlen % 語(yǔ)音長(zhǎng)度太短,認(rèn)為是噪聲

status=0;

silence=0;

count=0;

else % 語(yǔ)音結(jié)束

status=3;

end

end

case 3, % 3=語(yǔ)音結(jié)束

break;

end

end

count=count-silence;

x2=x1+count-1;

figure(3)

subplot(2,1,1)

plot(x)

title('語(yǔ)音信號(hào)的端點(diǎn)檢測(cè)');

axis([1 length(x) -1 1])

ylabel('Speech');

line([x1*FrameInc x1*FrameInc],[-1,1],'color','red');

line([x2*FrameInc x2*FrameInc],[-1,1],'color','red');

%n1=(x1*FrameInc-x2*FrameInc)+1;

yy=x(x1*FrameInc:x2*FrameInc);%x1*FrameInc=3760,x2=8320,

%yy的長(zhǎng)度是4560

figure(3)

subplot(2,1,2)

plot(yy)

axis([1 length(yy) -1 1]) %將此處的橫坐標(biāo)改值就可以取不同的語(yǔ)音段現(xiàn)在是整個(gè)語(yǔ)音段,

title('原始語(yǔ)音信號(hào)進(jìn)行端點(diǎn)檢測(cè)后得到的有用的語(yǔ)音信號(hào)段')

fs=11.025;%設(shè)定采樣頻率

y=fft(yy);%進(jìn)行fft變換

mag=abs(y);%求幅值

f=(0:length(y)-1)'*fs/length(y);%進(jìn)行對(duì)應(yīng)的頻率轉(zhuǎn)換

figure(4);

plot(f,mag);%做頻譜圖

xlabel('頻率(Hz)');

ylabel('幅值');

title('信號(hào)波幅頻譜圖');

grid;

z=0.1*rand(1,length(yy));

figure(5);

plot(z)

fs=11.025;%設(shè)定采樣頻率

Z=fft(z);%進(jìn)行fft變換

mag=abs(Z);%求幅值

f=(0:length(Z)-1)'*fs/length(Z);%進(jìn)行對(duì)應(yīng)的頻率轉(zhuǎn)換

figure(6);

plot(f,mag);%做頻譜圖

xlabel('頻率(Hz)');

ylabel('幅值');

title('噪聲波幅頻譜圖')

grid;

m=yy'+z;

figure(7);

subplot(2,1,1);

plot(m)

fs=11.025;%設(shè)定采樣頻率

M=fft(m);%進(jìn)行fft變換

mag=abs(M);%求幅值

f=(0:length(M)-1)'*fs/length(M);%進(jìn)行對(duì)應(yīng)的頻率轉(zhuǎn)換

figure(8);

plot(f,mag);%做頻譜圖

xlabel('頻率(Hz)');

ylabel('幅值');

title('混合信號(hào)波幅頻譜圖')

grid;

%wavwrite(m,'s01')

總結(jié)

以上是生活随笔為你收集整理的清浊音判别 matlab,matlab语音信号处理如何判别清浊音?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。