截取音频中的其中一段(基于短时能量的方法)
元音音频截取
一、需求分析
现有一段元音音频,有无话段和语音段,现需要截取语音段的中间部分。
二、流程
三、具体步骤
1、能量归一化
求出整段音频的能量,再将这段音频的每个点除以a−−√a\sqrt{a}:
En=\sum\limits_{0}^{N}{{ x ^{2}}}
{x}= x/\sqrt{En}
%求出整个音频的能量,进行能量归一化
Ena=sum(x.*x);
x=x/sqrt(Ena);
2、分帧
帧长=256,帧移=256
信号长度N=length(x); 帧数fn=size(y,2);
信号的时间刻度和每帧对应的时间刻度为:
time=(0:N-1)/Fs; % 计算出信号的时间刻度
frameTime=(((1:fn)-1)*inc+wlen/2)/Fs; % 求出每帧对应的时间
3、计算短时能量
En=\sum\limits_{0}^{N}{{ y ^{2}}}
amp=sum(y.^2); %计算短时能量
4、确定截取信号端点
(1)从第一帧开始寻找短时能量大于0.03的起始点k1(第几帧)
(2)从最后一帧往回开始寻找短时能量大于0.03的终点k2
%开始寻找端点
for i1=1:fnif amp(i1)>0.03k1=i1;end
end
for i2=fn:-1:1if amp(i2)>0.03k2=i2;end
end
(3)根据k1、k2的值计算出对应的时间值
t1=((k1-1)*inc+wlen/2)/Fs; %计算两个端点的时刻值
t2=((k2-1)*inc+wlen/2)/Fs;
(4)根据时间值找到对应的波形点数
%寻找端点时刻值对应的波形点数
for m=1:Nif time(m)-t2<0.0001;n1=m;elseif time(m)-t1<0.0001n2=m;end
end
5、根据端点值截取对应的波形
time1=time(n1:n2);
x1=x(n1:n2);
元音i1的波形、短时能量和截取元音i1的波形如下图所示:
截取音频中的其中一段(基于短时能量的方法)相关推荐
- matlab截取5到10秒音频,如何截取音频中的一段
我们经常会在一些音乐播放器上听歌,有时候听到好听的歌曲时候都会将它下载到自己的手机中,自己没事的时候就会打开来听一听,有些人将自己的手机歌单中会设置很多的分组,把自己喜欢的歌曲都放在一起,但是也有用户 ...
- 基于短时能量的语音端点检测算法
1 带噪语音信号 日常生活中噪声无处不在,说话声.风声.雨声.打字声.机器运行的声音等都可定义为噪声.噪声的种类也很多,每种都有其各自的特点,对有用信息的影响程度也不同.噪音主要包括稳定噪音和非稳定噪 ...
- matlab 端点检测 能零比法_基于短时能量与过零率的端点检测的matlab分析
基于语音端点检测的方法有很多,从历史的发展来看. 首先是基于短时能量和短视过零率的端点检测=〉各变换域=〉人工神经网络=〉基于倒谱距离的检测算法=〉基于谱熵的方法=〉几何门限的方法=〉sigma函数= ...
- matlab能量谱分析检验,一种基于短时能量检测和频谱特征分析的地震波预警方法...
一种基于短时能量检测和频谱特征分析的地震波预警方法 [技术领域] [0001] 本发明涉及一种地震波预警技术,尤其涉及一种可以降低虚警概率的地震波预警 技术,更具体地涉及一种基于短时能量检测和频谱特征 ...
- ios去掉字符串中的某个字符_iOS 截取字符串中两个指定字符串中间的字符串方法...
例如,要截取一个字符串中,两个指定字符串中间的字符串,OC截取方法如下: // 要截取 "> 和 之间的汉字内容: @implementation ViewController - ( ...
- 怎么剪切音频的一部分 去掉音频中的某段内容
剪切音频中的一部分,简单点来说,就是把音频中的部分内容给去掉.比如说:一个音频有50秒,我想把其中20~40秒的内容去掉,只保留另外一部分内容.但是因为要去掉的视频部分精确到了秒,所以就需要设置相应的 ...
- Java截取字符串中某一段的字符串
之前做了前端以layui为准的后台开发,因为做模糊查询的时候数据我根本不需要管,我只需要接受参数就行,但后台已经有弄好的模糊代码,我的sql也没办法直接用这种的数据,所以我需要截取下面这一段字符串 S ...
- 横向比较图像标注中的两种基于近邻思想的方法 TagProp和SGSSL
利用近邻传递标签的思想进行图像标注在近几年的图像标注工作中取得了很好的效果,甚至有点难以超越的感觉了.其中最具有代表性的是09年ICCV上的 <TagProp:Discriminative Me ...
- java中测代码段运行时间及内存的方法
1.测运行时间 long startTime = System.currentTimeMillis(); //获取开始时间 代码段- long endTime = System.currentTime ...
最新文章
- 解读《德勤2017年全球CIO报告》:顶级CIO的炼成之道
- Shader 中的随机与噪声
- Py之xlwt:python库之xlwt的简介、安装、使用方法之详细攻略
- Python中局部变量和全局变量的详解
- 精准扶贫电商重整流通-农业大健康·李玉庭: 谋定功能农产品
- 计算点、线、面等元素之间的交点、交线、封闭区域面积和闭合集(续7)
- 运行时库例程-acc_get_num_devices
- 设计模式学习笔记——中介者(Mediator)模式
- linux 下vim文件乱码 cat文件正常处理方法
- java代码逆向工程生成uml
- linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了)(转)
- 取值方法_函数的定义域和参数的取值范围详解
- Precision、Recall、F计算:举例
- 马歇尔·卢森堡《非暴力沟通》——备忘
- 利用c#快速知道哪些qq好友空间屏蔽了自己
- MPA海洋捕食者算法学习笔记
- FFmpeg 出现错误 Invalida data found when processing input
- java mail 端口号_使用Javamail连接到Gmail smtp服务器将忽略指定的端口并尝试使用25...
- 厉害了,用Python破个世界纪录!
- Java网络编程(四)—— ServerSocket(一)