91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 25KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-25
  • 語言: C/C++
  • 標簽:

資源簡介

資源為一壓縮包有mfcc函數,端點檢測函數,分幀函數,說明文檔。該資源為本人學習說話人識別用matlab所寫,代碼附有詳細注釋,說明文件中展示了運行結果。(本人需在csdn下載幾個資源,苦于資源分已用盡,定價3分,求大家慷慨解囊~~~若有同樣遭遇者需要該資源,可私信我,記得留下郵箱哦~)

資源截圖

代碼片段和文件信息

%%——endpoint_detection.m???sound=endpoint_detection(x)——連續詞端點檢測————%%
function?sound=endpoint_detection_tiao_f(x)?%返回值sound是一個結構體.begin和.end分別代表
????????????????????????????????????????????%有用語音段的開始和結束幀,x為原始直接語音輸入
N=length(x);????????????????????????????????%在mfcc里面將其裝入一個矩陣
L=256;??????????????????????????????????????%短時窗長,窗長選用256即幀長
k=128;??????????????????????????????????????%幀移k一般取幀長的一半

E=sum((abs(enframe(xLk))).^2?2);?????????%計算短時能量

tmp1=enframe(x(1:length(x)-1)Lk);?????????%計算過零率
tmp2=enframe(x(2:length(x))Lk);
signs=(tmp1.*tmp2)<0;
diffs=(tmp1-tmp2)>0.02;
Z=sum(signs.*diffs2);

%端點檢測:系數值0.30.050.02要根據自己的語音設置
ZeroLevel=0.3;??????????????????????????????%設置短時過零率門限0.3是自已通過試驗設置的
ZL=max(Z)*ZeroLevel;
ET=0.05*max(E);?????????????????????????????%能量較高門限,用于能量第一次判決??????????????????????????????
EL=0.02*max(E);?????????????????????????????%能量較低(次高)門限,用于能量第二次判決

voiceIndex=find(E>=ET);?????????????????????%根據較高的門限ET初步判斷

kk=1;
sound(kk).begin=voiceIndex(1);??????????????%sound結構體:第kk段語音,begin和end標記起止位置
for?i=2:length(voiceIndex)-1????????????????%判斷條件:voiceIndex中連續幀
????if?voiceIndex(i+1)-voiceIndex(i)>1
????????sound(kk).end=voiceIndex(i);
????????sound(kk+1).begin=voiceIndex(i+1);
????????kk=kk+1;
????end
end
sound(kk).end=voiceIndex(end);
index=[];
for?i=1:length(sound)???????????????????????%忽略細節:sound語音剔除持續低于3個幀的話語段(認為是噪聲)
????if?sound(i).end-sound(i).begin<3????????%有變更,最初是3:持續低于4個幀
????????index=[indexi];
????end
end
sound(index)=[];

for?i=1:length(sound)???????????????????????%根據較低的門限EL進一步判斷:
?????head=sound(i).begin;???????????????????%E[sound(i).begin-1]>=EL則sound(i).begin=sound(i).begin-1;
?????while?(head-1)>=1&&E(head-1)>=EL???????%E[sound(i).end+1]>EL則sound(i).end=sound(i).end+1;
?????????head=head-1;
?????end
?????sound(i).begin=head;
?????tail=sound(i).end;
?????while?(tail+1)<=length(E)&&E(tail+1)>EL
?????????tail=tail+1;
?????end
?????sound(i).end=tail;
?end
?
?for?i=1:length(sound)??????????????????????%根據過零率門限ZL進一步判斷:
?????head=sound(i).begin;???????????????????%Z[sound(i).begin-1]>=ZL則sound(i).begin=sound(i).begin-1;
?????while?(head-1)>=1&&Z(head-1)>=ZL???????%Z[sound(i).end+1]>ZL則sound(i).end=sound(i).end+1;
?????????head=head-1;
?????end
?????sound(i).begin=head;
?????tail=sound(i).end;
?????while?(tail+1)<=length(Z)&&Z(tail+1)>ZL;
?????????tail=tail+1;
?????end
?????sound(i).end=tail;
?end

if?~isempty(sound)??????????????????????????%刪去重復的話語段:話語段起止幀均相等表示為重復話語段
????index=[];
????for?i=1:length(sound)-1
????????if?sound(i).begin==sound(i+1).begin&&sound(i).end==sound(i+1).end
????????????index=[indexi];
????????end
????end
????sound(index)=[];
end

if?~isempty(sound)??????????????????????????%sound話語段(以幀數為單位)處理為out話語段(以采樣點為單位)
????for?i=1:length(sound)
????????out(i).begin=(sound(i).begin-1)*(L-k)+1;
????????out(i).end=(sound(i).end)*(L-k)+k;
????end
else
????out=[];
end

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????3270??2015-04-27?16:22??endpoint_detection.m
?????文件????????5311??2014-07-24?16:49??enframe.m
?????文件????????3121??2015-04-27?16:18??mfcc.m
?????文件???????24922??2015-04-27?16:48??說明與運行結果.docx

評論

共有 條評論

相關資源