【声纹识别】matlab-辨别男女声

function man_or_woman(file)

[x,fs]=audioread(file); % 读入声音文件
%======时域图像======  随着时间声音赋值震荡图
data=x(:,1);            %取单声道
n=0:length(x)-1;        %建立一个信号等长的序列
time=n/fs;              %建立时间序列,作为横坐标
figure(1);              %图1:时域波形图
plot(time,data);        %作图
title('音频信号时域图')  %标题
xlabel('时间/s');       %标注横坐标
ylabel('幅值');         %标注纵坐标
grid on;                %打开网格线

%=======频域图======
N=length(data);         %取信号矩阵的长度
Y1=fft(data,N);         %N点傅里叶变换
mag=abs(Y1);            %取模
f=n*fs/N;               %频率序列
figure(2);              %图2:频谱图
plot(f(1:fix(N/2)),mag(1:fix(N/2)));
title('音频信号fft频谱图');%标题
xlabel('频率/Hz');       %标注横坐标
ylabel('幅度');          %标注纵坐标
grid on;                 %打开网格线

%======基音频率提取======
[~,index]=max(data);          % 返回最大值 最大值索引
timewin=floor(0.015*fs);
xwin=data(index-timewin:index+timewin);
[y,~]=xcov(xwin);
ylen=length(y);
halflen=(ylen+1)/2 +30;
yy=y(halflen: ylen);
[~,maxindex] = max(yy);
fmax=fs/(maxindex+30);
disp([file,'基音频率为 ', num2str(fmax), ' Hz'])
%======通过基音频率判断男女声======
if fmax<200;
    disp([file,' 是男声文件']);
else
    disp([file,' 是女声文件']);
end;

matlab 辨别男女声音

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SoWhat1412

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值