matlab怎么选清浊音做短时谱,matlab语音信号处理如何判别清浊音?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这是我一个学长给的程序,他说里面要算得基本上已经实现了改一下就可以用了。。。但是i本人不是主攻matlab的说白了就是不怎么会,,想问下该怎么改来实现判断清浊音的功能。
%对语音信号采样分帧
clear
clc
X= wavread('E:\003\luyin.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;
%wavwrite(m,'s01')
matlab怎么选清浊音做短时谱,matlab语音信号处理如何判别清浊音?相关推荐
- matlab怎么选清浊音做短时谱,语音信号处理实验三
实验三语音信号的同态处理 一.实验目的 1.熟悉语音信号求其倒谱与复倒谱的方法: 2.计算一段语音信号的频谱与倒谱: 3.比较由加窗语音信号求得的对数幅度谱与倒谱域滤波后得到的对数幅度谱的各自特点. ...
- 清浊音判别 matlab,matlab语音信号处理如何判别清浊音?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是我一个学长给的程序,他说里面要算得基本上已经实现了改一下就可以用了...但是i本人不是主攻matlab的说白了就是不怎么会,,想问下该怎么改来实现判断 ...
- matlab 小波 清浊音,matlab语音信号处理如何判别清浊音?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是我一个学长给的程序,他说里面要算得基本上已经实现了改一下就可以用了...但是i本人不是主攻matlab的说白了就是不怎么会,,想问下该怎么改来实现判断 ...
- matlab车牌识别毕设论文,MATLAB小白一个,毕设做一个基于MATLAB的车牌识别系统,出现索引超出矩阵维度的错误。主函数和自定义函数都写出来了(书上找的),希望大神帮助...
[fn,pn,fi]=uigetfile('AD.jpg','选择图片'); I=imread([pn fn]); figure, imshow(I); title('原始图像'); Im1=rgb2 ...
- MATLAB 长度和像素_Matlab中短时傅里叶变换 spectrogram和stft的用法
在Matlab中,做短时傅里叶变换需要使用函数spectrogram,而在Matlab2019中,引入了一个新的函数stft,下面我们就来看下这两个函数都如何使用. 短时傅里叶变换的基本原理就是将数据 ...
- 语音信号处理频域语谱图matlab实验,语音信号的频域分析
实验二:语音信号的频域分析 实验目的:以MATLAB 为工具,研究语音信号的频域特性,以及这些特性在<语音信号处理>中的应用情况. 实验要求:利用所给语音数据,分析语音的频谱.语谱图.基音 ...
- Matlab应变片仿真,一种基于Matlab/Adams联合仿真的真实路谱再现系统和方法与流程...
本发明属于汽车系统动力学仿真技术领域,特别是一种基于Matlab/Adams联合仿真的真实路谱再现系统和方法. 背景技术: 汽车系统动力学仿真技术是汽车设计制造中一项不可或缺的技术,尤其是在汽车操纵稳 ...
- matlab中单独存图_奇怪的Matlab画图技巧系列1–保存高清大图
毕业季马上要到了,给大家总结一些我平常用到的奇特但是好用的Matlab画图技巧 保存高清大图 很多朋友保存Matlab图片时会选择jpg保存或者截图,然后放到论文发现特别模糊尤其文字部分是进行缩放调整 ...
- MATLAB处理信号得到频谱、相谱、功率谱
MATLAB处理信号得到频谱.相谱.功率谱 第一:频谱 一.调用方法 X=FFT(x): X=FFT(x,N): x=IFFT(X); x=IFFT(X,N) 用MATLAB进行谱分析时注意: (1) ...
最新文章
- 微服务平台的发展趋势
- 某阿里程序员女朋友吐槽男友整天玩失踪!早晨问候一声,晚上十一点才回信息!中间完全消失!阿里加班真的这么恐怖吗?...
- PL/SQL Developer连接本地Oracle 11g 64位数据库
- 【旧文章搬运】Windows中全局钩子DLL的加载过程
- centos刻录工具_centos u盘引导制作工具下载|
- Constructor sap.ui.core.ComponentContainer has been called without new operator
- iOS中下载大型文件的原理解析二
- [ 深度学习 ] —— 图卷积神经网络 GCN
- (转)清华学霸演讲稿:永远不要说你已经尽力了
- VC++程序设计与应用--数据库编程
- RS-485半双工延时问题
- pip卸载旧版本后安装新版本(我是Python3)
- Pytorch:目标检测网络-人体关键点检测
- 数据库实验1---创建数据库和表
- 异常:Handler sending message to a Handler on a dead thread
- 如何批量将 PPT 幻灯片文档转换为 XPS 格式
- Hibernate注解 @Enumerated
- http://www.2cto.com/ 红黑联盟
- 7. Java8新特性-并行数据处理(parallel)
- mysql与gbase获取行号_mysql/gbase数据库全库库表记录数统计
热门文章
- 【华为机试真题 JAVA】火星文计算-100
- 对于互联网广告投放,为何CPA受企业欢迎,CPM却占主流?
- PyTorch深度学习60分钟闪电战:01 PyTorch概览
- 一北京人面对媳妇上网和别人私奔写下的感言
- 计算机组成原理平均等待时间,计算机组成原理课后习题答案(一到九章)
- WiFi断网后禁止自动连接移动网络的解决办法
- Spring Boot 2.x基础教程:使用LDAP来管理用户与组织数据
- Linux中结束kettle挂起进程,linux停使用crond定时执行kettle的job
- 数据就是生产力,四大引擎打造卓越流程管理系统
- TCP的socket编程中“全双工的字节流”含义的深刻理解