%对语音信号采样分帧
clear
clc
X= audioread('mei.wav');
%对信号进行预加重
x=X;
x4=filter([1,-0.9375],1,x);
figure(1)
subplot(2,1,1),plot(x)
title('原始语音信号');
xlabel('样本序列n');
ylabel('幅值');
subplot(2,1,2),plot(x4)
title('原始语音信号的预加重');
xlabel('样本序列n');
ylabel('幅值');% 幅度归一化到[-1,1]
x=double(x);
x=x/max(abs(x));
% 常数设置
FrameLen=240; % 帧长取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;% 短时过零率(矢量法)
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('短时过零率');
ylabel('zcr')%计算短时能量
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('短时能量');
ylabel('amp')%调整能量门限
amp1=ll+(max(amp)-ll)/8;
amp2=ll+(max(amp)-ll)/16;
%开始端点检测
x1=0;
x2=0;
for n=1:length(zcr)
goto = 0;
switch status
case{0,1} % 0=静音,1=可能开始
if amp(n) > amp1 % 确信进入语音段
x1=max(n-count-1,1);
status=2;
silence=0;
count=count+1;
elseif amp(n) >amp2 | zcr(n) > zcr2 % 可能处于语音段
status=1;
count=count+1;
else % 静音状态
status=0;
count=0;
end
case 2, % 2=语音段
if amp(n) > amp2 | zcr(n) > zcr2 % 保持在语音段
count=count+1;
else
silence=silence+1;
if silence < maxsilence % 静音还不够长,尚未结束
count=count+1;
elseif count < minlen % 语音长度太短,认为是噪声
status=0;
silence=0;
count=0;
else % 语音结束
status=3;
end
end
case 3, % 3=语音结束
break;
end
end
count=count-silence;
x2=x1+count-1;
figure(3)
subplot(2,1,1)
plot(x)
title('语音信号的端点检测');
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的长度是4560
figure(3)
subplot(2,1,2)
plot(yy)
axis([1 length(yy) -1 1]) %将此处的横坐标改值就可以取不同的语音段现在是整个语音段,
title('原始语音信号进行端点检测后得到的有用的语音信号段')fs=11.025;%设定采样频率
y=fft(yy);%进行fft变换
mag=abs(y);%求幅值
f=(0:length(y)-1)'*fs/length(y);%进行对应的频率转换
figure(4);
plot(f,mag);%做频谱图
xlabel('频率(Hz)');
ylabel('幅值');
title('信号波幅频谱图');
grid;
z=0.1*rand(1,length(yy));
figure(5);
plot(z)
fs=11.025;%设定采样频率
Z=fft(z);%进行fft变换
mag=abs(Z);%求幅值
f=(0:length(Z)-1)'*fs/length(Z);%进行对应的频率转换
figure(6);
plot(f,mag);%做频谱图
xlabel('频率(Hz)');
ylabel('幅值');
title('噪声波幅频谱图')
grid;
m=yy'+z;
figure(7);
subplot(2,1,1);
plot(m)fs=11.025;%设定采样频率
M=fft(m);%进行fft变换
mag=abs(M);%求幅值
f=(0:length(M)-1)'*fs/length(M);%进行对应的频率转换
figure(8);
plot(f,mag);%做频谱图
xlabel('频率(Hz)');
ylabel('幅值');
title('混合信号波幅频谱图')
grid;

创建脚本:

function f=enframe(x,win,inc)
nx=length(x);
nwin=length(win);
if (nwin == 1)
len = win;
else
len = nwin;
end
if (nargin < 3)
inc = len;
end
nf = fix((nx-len+inc)/inc);
f=zeros(nf,len);
indf= inc*(0:(nf-1)).';
inds = (1:len);
f(:) = x(indf(:,ones(1,len))+inds(ones(nf,1),:));
if (nwin > 1)
w = win(:)';
f = f .* w(ones(nf,1),:);
end
end

结果:



matlab 清浊音判断+源代码相关推荐

  1. 判断清浊音 matlab,基于MATLAB的语音信号的清浊音分析.doc

    基于MATLAB的语音信号的清浊音分析 目录 1 语音信号概述1 1.1 语音信号的基本组成1 1.2 语音信号的"短时谱"1 1.3 基音周期2 1.4 短时分析技术2 2 语音 ...

  2. 判断清浊音 matlab,基于MATLAB的语音信号的清浊音分析.docx

    目录 TOC \o "1-5" \h \z HYPERLINK \l "bookmark0" \o "Current Document" 1 ...

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

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是我一个学长给的程序,他说里面要算得基本上已经实现了改一下就可以用了...但是i本人不是主攻matlab的说白了就是不怎么会,,想问下该怎么改来实现判断 ...

  4. matlab 小波 清浊音,matlab语音信号处理如何判别清浊音?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是我一个学长给的程序,他说里面要算得基本上已经实现了改一下就可以用了...但是i本人不是主攻matlab的说白了就是不怎么会,,想问下该怎么改来实现判断 ...

  5. matlab怎么选清浊音做短时谱,matlab语音信号处理如何判别清浊音?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是我一个学长给的程序,他说里面要算得基本上已经实现了改一下就可以用了...但是i本人不是主攻matlab的说白了就是不怎么会,,想问下该怎么改来实现判断 ...

  6. matlab实现简单清浊音检测

    清浊音检测原理公式 清浊音检测是在一段语音信号中区分出清音段.浊音段和静音段. 原理框图如下所示: 1.过零率: 2.对数能量 3.单位延迟自相关系数归一化 4.lpc系数 使用Leveson-Dur ...

  7. 信源编码技术作业(1)——使用Audacity软件绘制清浊音频谱图并进行分析

    实验准备 Audacity简介 Audacity是一款免费的音频处理软件.它是在linux下发展起来的,一款遵循GNU协议的免费软件.有着简单快捷的操作界面和专业的音频处理效果. 清浊音基础 根据维基 ...

  8. 使用Audacity软件对清浊音进行时频分析并描述其特点

    目录 一,实验内容 二,实验步骤 三,实验结果 四,实验总结 一,实验内容 语音学中,将发音时声带振动的音称为浊音,声带不振动的音称为清音.这里我们使用Audacity软件自行录入清音t和浊音u的音频 ...

  9. Audacity之清浊音频谱分析

    Audacity之清浊音频谱分析 实验介绍 清浊音介绍 清音分析 浊音分析 清浊音对比分析 实验介绍 通过Audacity分析浊音.清音的时域与频域,并进行比较. 清浊音介绍 清浊音: 我们一般把发音 ...

最新文章

  1. JS标签的各种事件的举例
  2. 关于Advertising Campaign
  3. python的字符串的转义
  4. 虚拟化模板新建虚拟机后 wsus控制台无法看到所有客户端计算机
  5. 搭建Servlet在线视频
  6. wordpress开放注册_WordPress.com开源,欧洲开放数据门户网站以及更多新闻
  7. oracle12c不能进入到http://localhost:5500/em的解决办法
  8. 算法工程师进化-基础理论
  9. 安卓系统曝root权限安全漏洞 已有软件利用
  10. XJOI 3877 红蓝字符串
  11. chromium浏览器开发系列第四篇:如何调试最新chromium源码
  12. 程序设计语言基础知识复习
  13. 哔哩哔哩点播码率优化实践
  14. 数字信号处理 实验一 时域采样与频域采样【实验报告】
  15. 基本共射放大电路的简单进化 阻容式耦合放大电路
  16. WordPress页面教程【2021】
  17. Windows搭建Deepmind的星际争霸2平台
  18. 2020版本idea 左视图跟随主视图定位操作
  19. SpringCloud的认识和基本入门使用
  20. LSF - 提交GUI应用到LSF无法运行,报错Failed to connect to socket /tmp/dbus-xxxxxxxxx: Connection refused

热门文章

  1. php导出word文件(二)
  2. VB 从零开始编外挂
  3. 睡眠助手APP开发解决方案
  4. HTML5七夕情人节表白网页(抖音-流动爱心表白)HTML+CSS+JavaScript 求婚示爱代码 520情人节告白代码 程序员表白源码 3D旋转相册 js烟花代码 爱心表白网页
  5. 清华大学 博士后 原来入的计算机科学与技术 现在能入软件工程吗,清华大学软件学院...
  6. 服务器显示屏 超出工作频率范围,win7电脑显示器超出工作频率范围的详细处理方法...
  7. 7-10 黑洞数(20 分)
  8. 如何使用netstat命令验证DDOS入侵?
  9. 电脑蓝屏造成的数据丢失如何恢复
  10. 古风尚婚纱摄影--决定