清浊音判别 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')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552010.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python upper_Python 3中的模块级string.upper函数在哪里?

如何让这段代码在3中运行&#xff1f; 请注意&#xff0c;我不是"foo".upper()在字符串实例级别询问。import string try: print("string module, upper function:") print(string.upper) foo string.upper("Foo") print("foo:%s" % …

python数据科学实践 常象宇_Python数据科学实践

章基于Python的数据科学环境搭建1.1Python是数据科学“大势所趋”1.2Anaconda入门——工欲善其事&#xff0c;必先利其器1.3JupyterNotebook入门1.4Markdown单元格的使用1.5Spyder入门1.6小结第2章Python基础2.1“火锅团购数据”简介2.2读写数据2.3Python数据类型与结构2.4控制…

matlab emd功率谱密度,【脑电信号分类】脑电信号提取PSD功率谱密度特征

脑电信号是一种非平稳的随机信号&#xff0c;一般而言随机信号的持续时间是无限长的&#xff0c;因此随机信号的总能量是无限的&#xff0c;而随机过程的任意一个样本函数都不满足绝对可积条件&#xff0c;所以其傅里叶变换不存在。不过&#xff0c;尽管随机信号的总能量是无限…

小甲鱼python课后题简书_Python练习题100道

1.有四个数字&#xff1a;1,2,3,4&#xff0c;能组成多少个互不相同且无重复数字的三位数&#xff1f;各是多少&#xff1f; 方法一&#xff1a;遍历所有可能&#xff0c;把重复的剃掉。 total0 for i in range(1,5): for j in range(1,5): for k in range(1,5): if((i!j)and(j…

决策算法python_GitHub - nxety/MachineLearning_Python: 机器学习算法python实现

机器学习算法Python实现目录1、代价函数其中&#xff1a;下面就是要求出theta&#xff0c;使代价最小&#xff0c;即代表我们拟合出来的方程距离真实值最近共有m条数据&#xff0c;其中代表我们要拟合出来的方程到真实值距离的平方&#xff0c;平方的原因是因为可能有负值&…

php7.1安装mysqli扩展,centos php7 安装mysqli扩展心得

在新配服务器时发现&#xff0c;php无法连接到mysql。通过phpinfo发现。根本没有显示mysqli的相关配置。经过一系列研究。总结了下。&#xff1a;第一步&#xff1a;在phpinfo里没有mysqli配置&#xff0c;原因是安装php7时没有configure mysqli安装php方法&#xff1a;wget ht…

组装服务器配置清单_2020年组装电脑配置清单列表

随着电脑技术的不断革新&#xff0c;越来越多的家庭都有各式各样的电子设备。而电脑现在基本上是家家都有的物品&#xff0c;可是在购买电脑的时候新手小白需要注意那些事项呢&#xff1f;今天我们就给告诉小白如何组装电脑以小白组装电脑配置清单。1、购买电脑&#xff0c;您首…

oracle 关于归档的视图,oracle 与归档日志相关的几个视图

归档日志占据的数据库举足轻重的位置&#xff0c;以下系统视图来了解归档日志情况V$ARCHIVEV$ARCHIVED_LOG 已归档日志详单V$ARCHIVE_GAP 归档日志丢失V$ARCHIVE_PROCESSES 归档进程信息V$ARCHIVE_DEST 查看备份路径情况V$ARCHIVE_DEST_STATUSv$recovery_f…

mysql python is not installed_最全的解决安装MySQL-Python出现的问题: pip install MySQl-Python 出现:下列问题...

问题 1&#xff1a;Microsoft Visual C 9.0 is required error: Microsoft Visual C 9.0 is required 在Windows下用pip安装MySQl-Python报如下错误&#xff0c;看错误提示就知道去http://aka.ms/vcpython27找解决方法了 error: Microsoft Visual C 9.0 is required (Unable to…

python旋转数组_Python3实现旋转数组的3种算法

一、试题给出一个数组&#xff0c;将数组中的元素往右边移动k个位置&#xff0c;当中k是非负数。比如说&#xff1a;输入:[1,2,3,4,5,6,7]和k3输出:[5,6,7,1,2,3,4]解释:往右边旋转1步:[7,1,2,3,4,5,6]往右边旋转2步:[6,7,1,2,3,4,5]往右边旋转3步:[5,6,7,1,2,3,4]*反映&#x…

python数字大小写转换代码_用python实现把数字人民币金额转换成大写的脚本程序...

# -*- coding: utf-8 -*- def Num2MoneyFormat( change_number ): """ .转换数字为大写货币格式( format_word.__len__() - 3 2位小数 ) change_number 支持 float, int, long, string """ format_word ["分", "角", &quo…

count数据库优化oracle,迷惑性SQL性能问题排查与优化

&#xff1a;数据科学、人工智能从业者的在线大学。数据科学(Python/R/Julia)数据分析、机器学习、深度学习作者简介戴秋龙&#xff0c;拥有超过八年的电信、保险、税务行业核心系统ORACLE数据库优化&#xff0c;优化经验&#xff0c;具备丰富的行业服务背景。对Oracle数据库有…

python getopt参数参数自动补全_如何在Python中使用getopt / OPTARG?如果给出过多的参数(9),如何转移参数?...

How to use getopt/optarg in Python?解决方案This is an example of how I do it, I usually use the same basic template:import sysimport getopttry:opts, args getopt.getopt(sys.argv[1:], m:p:h, [miner, params, help])except getopt.GetoptError:usage()sys.exit(2…

python读取数据库数据类型_Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】...

本文实例讲述了Python实现从SQL型数据库读写dataframe型数据的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a; Python的pandas包对表格化的数据处理能力很强&#xff0c;而SQL数据库的数据就是以表格的形式储存&#xff0c;因此经常将sql数据库里的数据直接读取为…

oracle客户端三种连接,客户端连接ORACLE的几种方法

一、HOSTNAME方法对于网络结构比较单一&#xff0c;Oracle服务器比较少的情况下&#xff0c;可以使用HOSTNAME方法。不过这种方法有几个限制&#xff1a;1、 必须使用TCP/IP协议2、 不能使用高级管理工具&#xff0c;比如Oracle Connection Manager3、 客户端必须有相应的扩展命…

swiper.js pagination指示点不变_电缆故障点的四种实用测定方法

一、电缆故障的种类与判断无论是高压电缆或低压电缆&#xff0c;在施工安装、运行过程中经常因短路、过负荷运行、绝缘老化或外力作用等原因造成故障。电缆故障可概括为接地、短路、断线三类&#xff0c;其故障类型主要有以下几方面&#xff1a;①三芯电缆一芯或两芯接地。②二…

oracle undo段的作用,Oracle数据库中Undo数据段的作用及类型

Undo数据段的作用&#xff1a;事务回滚(Transaction Rollback)&#xff1a;程序执行rollback操作。事务修复(Transaction Recovery)&#xff1a;rollback是recovery的一部分。读取一致(Read Consistency)&#xff1a;根据SCN(system change number)来保证读取数据的一致性。Und…

wampserver php扩展openssl 不可用_PHP基础及WAMP集成基础

PHP语言编写的基础框架 PHP语言的编写框架与HTML5的一致&#xff0c;都是一下框架&#xff1a;<!DOCTYPE html> <html><head></head><body> </body> </html>PHP的主要表达语句在body里面&#xff0c;主题内容在<?p ?>标签中…

python expect模块_Python尚学堂高淇|第二季0408P119P123with上常见的异常的解决tryexcept...else结构,...

P119 04&#xff1a;try ...except...else结构try..except...else结构增加了"else快"如果try快当中没有抛出异常&#xff0c;则执行else快&#xff0c;如果try快当中抛出异常&#xff0c;则执行except快&#xff0c;不执行【实例】try....except...else结构执行测试…

oracle 31693,ORACLE expdp备份与ORA-31693、ORA-02354、ORA-01555

近期&#xff0c;某综合网管系统expdp备份出现异常&#xff0c;报错信息如下&#xff1a;Export: Release 10.2.0.4.0 - 64bit Production on 星期二, 12 4月, 2016 11:30:00Copyright (c) 2003, 2007, Oracle. All rights reserved.;;;连接到: Oracle Database 10g Enterpris…