当前课程知识点:计算机音乐 >  第二章 时域音频处理 >  2.4 端点检测 >  端点检测

返回《计算机音乐》慕课在线视频课程列表

端点检测在线视频

下一节:振幅包络

返回《计算机音乐》慕课在线视频列表

端点检测课程教案、知识点、字幕

同学们大家好

在有了音量计算的基础之后

我们来介绍一下端点检测的算法

音频信号中声音的起始点以及结束点的位置

我们就称之为端点

那么我们的位置就是设计检测的算法

来识别这些起始点以及结束点

我们可以在很多的音频处理软件中

直接观察到音频的信号的时域波形

那么从人眼

我们其实是能够看到音频的起始点以及

结束点的位置的

但是在时域的信号当中

音频的信号是上下进行剧烈的震动的

因此如果我们逐点的去来观察数据的话

我们很难去确定说

哪一点才是声音的起始点

哪一点是声音的结束点

那么如果我们从

RMS曲线也就是音量曲线的角度来看

因为RMS曲线是分窗处理之后

统计出来的局部音量值

它的变化比较均匀

这样的话我们就可以通过设定不同的阈值

Threshold

来确定到底什么地方是声音的起始点

什么地方是声音的结束点

那么这里的阈值的设定是非常有讲究的

那么如果阈值设定太低的话

我们就会过早的决定一个声音的起始点

反之如果我们阈值设定太高

那么这个起始点就会有所延迟

从而也不能达到一个很精确的一个效果

一般来说我们有几种方法可以确定阈值

比如说

我们可以使用音量的最大值的1/10

来作为阈值

也可以使用音量的中位数的10分之1来做阈值

甚至可以使用最小音量的十倍来做阈值

或者使用第一个采样点的五倍来作为阈值

当然不同的设定方法会有不同的效果

接下来我们将演示一下

如何在计算机程序中

实现简单的端点检测的方法

那么我们在刚才的RMS的计算的

基础之上完成端点的检测的程序

我们看到现在版本RMS比起

刚才那个版本是做一点修改的

我们在RMS的前面补充了

2分之1个窗口大小的这么多的采样点

等于说我们把RMS整体往后平移了

半个窗口的长度

目的是什么

目的是为了让他计算出的RMS之后

它的曲线更加能够贴合在

音频的振动上面

等于不会像前面的那样计算的结果一样

因为它是每个窗口起始点是

计算RMS的起始点

那么这样话RMS就会提早的上升

那么我们希望这个曲线能够更贴合在

音频的信号上面

那么在这基础上

首先我们需要去设定一个阈值th

那么这个阈值我们是设定成

RMS最大值的10分之1

然后我们就需要去遍历整个RMS

然后去判断一下每一个点的是不是端点

那么我们判断的一个依据是它的

RMS的这个值要小于th

而下一个值要大于等于th

大于等于这个阈值

这样的话它遍历的范围就必须是

Len RMS减1了

因为后面有个RMS i加1

如果不用减1的话它会产生数组的越界

这样话我们一旦检测出来

这RMS的端点之后

我们就往这个图像上去画一条直线

在i这个点上去画一个直线

那么这直线是从-1到1去画一条直线

那么我们运行一下

看起始点的位置找的是否准确

这样我们看到黑色竖线的位置就是

起始点的位置

那么目前看起来是可以的

显然这个起始点位置还是有点点偏离

原来这波形

因为它的RMS值还是会有点点提早

那么同理我们也可以去把

结束点的位置给画下来

那么只需要

同样的方法去判断一下就是

前面的一个值是大于th的

后面一个值是小于等于th的

那么我同样把这个地方用一条线画下

那么前面这条线我们给它设定一个颜色

橙色的颜色

后面的结束的位置

我们给它设定成红色的颜色

我们运行下看

这样话我们就能清楚地看到

橙色是起始位置

然后红色是结束位置

占橙色和红色的区间就是具有

语音信号的区间

那么橙色跟红色区间就是有语音信号区间

那么我们在做处理的时候

就可以把具有信号的这一段截下来

那么等于说把空白的部分进行舍弃

我们检测到的这样的一些

时间点也可以写到文件里面

那么我们可以放到

Sonic Visualiser里面去

更加清楚地一边听一边看这个结果

这里面我们只需要去

创建一个文件 叫做endpoint

这样端点的这样文件

就是一个txt文件的格式就可以了

它是一个写入类型的

那么在检测到起始点之后

我们就去进行写入write

然后我们需要把这个时间点给进行写入

那么这个时间点我们需要进行一个转换

因为现在i是采样点的序号

那么我们需要把它转换成时间

然后我们把这个时间用九位有效的数字

.9f来进行写入

然后再加上一个制表符

并且写上这个标签是END1这样的一个标签

我写完之后就换一行

写完之后就换一行

那么同理我们可以去写END2的标签

我们需要做一个时间转换

然后去写END2的标签

格式化是不需要加逗号

然后我们去运行一下

在结束程序之前

我们需要用这Fclose来结束写入

然后他才能真正地写入到文件里面

最后我们运行一下

运行结束之后我们就能看到

在endpoint.txt里面

就写上了这样的一些标签

那么这里标注了每一个时间点

那么它是起始点还是这个结束点

现在我们就可以在Sonic Visualiser

里面去更方便的来看到端点

那么我们首先打开

我们刚才的test.wav这个文件

那么可以放大一点

那么我们可以把刚才的检测到这端点

以test的形式进行导入

我们可以通过导入

Import Annotation Layer这样的

指令去导入刚才的endpoint

它会让你确认一下

这些时间点以及这个标签

好 那么这样的话我们就导入了不同的标签

那么我们可以我们可以在播放过程中

能够听到这些标签是否正确的

我们播放一下

那么我们看到基本上

线确实是声音起始这个位置

我们听到

在Sonic Visualiser里面是以

类似脉冲信号的这种形式来展示端点的

这就是有关端点检测的一个演示

这便是有关端点检测的算法介绍

同学们可以在课下尝试使用

不同的阈值设定方法

来看一下是否有不同的效果

计算机音乐课程列表:

欢迎辞

-欢迎辞

第一章 基本概念

-1.1 计算机音乐导言

--计算机音乐导言

-1.2 计算机音乐课程主要内容

--计算机课程主要内容

-1.3计算机音乐课程资源

--计算机音乐课程资源

-1.4 音乐的基本表达

--音乐的基本表达

-第一章作业

第二章 时域音频处理

-2.1时域音频处理概述

--时域音频处理概述

-2.2 分窗处理1:OLA叠放

--分窗处理1: OLA叠放

-2.3 分窗处理2:音量计算

--分窗处理2 音量计算

-2.4 端点检测

--端点检测

-2.5 振幅包络

--振幅包络

-2.6 音频信号相乘

--音频信号相乘

-2.7 环形调制

--环形调制

-2.8 频率调制

--频率调制

-2.9 频率调制在音乐上的应用

--频率调制在音乐上的应用

-第二章作业

第三章 频域音频处理

-3.1 频谱概述

--频谱概述

-3.2 傅里叶变换

--傅里叶变换

-3.3 短时傅里叶变换

--短时傅里叶变换

-3.4 加法合成

--加法合成

-3.5 线性滤波器

--线性滤波器

-3.6 京剧锣鼓经分析

--京剧锣鼓经分析

-第三章作业

第四章 音色合成

-4.1 音色合成概述

--音色合成概述

-4.2 质点弹簧阻尼模型

--质点弹簧阻尼模型

-4.3 双线性滤波器

--双线性滤波器

-4.4 Modal合成

--Modal合成

-第四章测试

第五章 一维振动模型

-5.1 一维振动模型概述

--一维振动模型概述

-5.2 弦振动模型

--弦振动模型

-5.3 达朗贝尔的行波解

--达朗贝尔的行波解

-5.4 梳状滤波器

--梳状滤波器

-5.5 Karplus Strong算法

--Karplus Strong算法

-5.6 管状气鸣乐器模型

--管状气鸣乐器模型

-第五章作业

第六章 高音跟踪

-6.1 音高跟踪概述

--音高跟踪

-6.2 时域音高跟踪

--时域音高跟踪

-6.3 频域音高跟踪

--频域音高跟踪

-6.4 K歌评分

--K歌评分

-第六章作业

第七章 音频同步

-7.1 音频同步概述

--音频同步概述

-7.2 音乐特征提取 CQT

--音乐特征提取CQT

-7.3 音乐特征提取 Chroma

--音乐特征提取Chroma

-7.4 动态时间规划概述

--动态时间规划概述

-7.5 动态时间规划实现

--动态时间规划实现

-第七章作业

端点检测笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。