MATLAB說話人性別的簡單判斷(GUI介面)

2021-08-20 10:28:07 字數 2757 閱讀 7194

function varargout = gui(varargin)

gui_singleton = 1;

gui_state = struct('gui_name', mfilename, ...

'gui_singleton', gui_singleton, ...

'gui_openingfcn', @gui_openingfcn, ...

'gui_outputfcn', @gui_outputfcn, ...

'gui_layoutfcn', , ...

'gui_callback', );

if nargin && ischar(varargin)

gui_state.gui_callback = str2func(varargin);

end

if nargout

[varargout] = gui_mainfcn(gui_state, varargin);

else

gui_mainfcn(gui_state, varargin);

endfunction gui_openingfcn(hobject, eventdata, handles, varargin)

handles.output = hobject;

guidata(hobject, handles);

function varargout = gui_outputfcn(hobject, eventdata, handles)

varargout = handles.output;

function pushbutton1_callback(hobject, eventdata, handles)

set(handles.text1,'visible','off');

[filename pathname]=uigetfile(,'¿ªê¼'); %%讀取音訊檔案

str=[pathname filename];

[y,fs]=audioread(str);

l=length(y); %原訊號點數

n=fix(fs*0.015); %幀長

framen=fix(l/n); %幀數

y=y/max(abs(y)); %歸一化 %%

%%%%%%短時能量%%%%%%%%

en=zeros(1,framen);

mn=zeros(1,framen);

for i=1:framen

yn=y(((i-1)*n+1):i*n);

en(i)=sum(yn.*yn);

end%%

%%%%%%濁音提取%%%%%%%%

emax=max(en);

ref=0.08*emax;

for i=1:framen

if(en(i)>ref)

mn(i)=1;

endend%%

%%%%%%基音頻率%%%%%%%%

for i=1:framen

if(mn(i)==1)

yn=y(((i-1)*n+1):i*n);

yn0=yn;

r=relation(yn0,n);

[rmax1,rdot1]=max(r(18:160));

f1(i)=fs/(rdot1+17);

endend %%%%%%某幀取樣點%%%

for i=140:140

if(mn(i)==1)

yn=y(((i-1)*n+1):i*n);

yn0=yn;

r1=relation(yn0,n);

endendaxes(handles.axes1);

plot(y),xlabel('幀數'),ylabel('幅度'),title('原訊號');

axes(handles.axes2);

plot(en),xlabel('幀數'),ylabel('en'),title('短時能量');

axes(handles.axes3);

plot(f1),xlabel('幀數'),ylabel('f'),title('基音頻率');

axes(handles.axes4);

plot(r1),xlabel('幀數'),title('自相關');

%%%%男女聲判斷%%%%

sum1=0;

s=0;

for i=1:framen

if(mn(i)==1)

s=s+1;

sum1=sum1+f1(i);

endendfinal=mean(sum1);

if final>200

set(handles.text2,'string','判斷結果:女聲');

else

set(handles.text2,'string','判斷結果:男聲');

end

function pushbutton2_callback(hobject, eventdata, handles)

close;

自相關函式另外編寫(放在主程式裡執行時間長)

function re=relation(x,n)

for i=0:(n-1)

re(i+1)=0;

for n=1:(n-i)

re(i+1)=re(i+1)+x(n)*x(n+i);

endend

透過IT看人性

在逛lotus中文網的時候看到 dragonws 總結的東西覺得很又用,所以節選過來讓警示一下自己。人總會犯錯的 為什麼在修改程式結構的同時,又向系統新增新的功能時,總是會一波三折?問題就出在這裡。人總是健忘的 人的記憶能力的弱勢在軟體程式設計時往往暴露無遺。剛剛寫完乙個很複雜的function或m...

營銷與人性

亥爾波特討厭做重複的事情,他喜歡創新,喜歡挑戰別人認為 不可能實現的事情 有一次,我們路過一家賓士車的賣場,他看好其中的一款,非常喜歡,然後指著那輛車 詭異 地衝我說 克亞,你看到了嗎?那輛賓士車售價7萬美金,但我準備用5萬美金開回去。我有些吃驚,覺得他簡直是異想天開,因為賓士車是不打折的。我搖搖頭...

人性的弱點

第一篇 與人相處的基本技藝 01 如欲採蜜,勿蹴j蜂房 02 真誠地讚賞他人 03 激發他人的強烈需求 第二篇 平安快樂的要訣 04 保持自我本色 05 改變不良的工作習慣 06 學會放鬆,解除疲勞 07 倦怠導致身體的疲勞 08 活在今天的方格中 09 不要對敵人心存報復 10 不要指望別人感激你...