音频事件监测当中的音频合成

许多音频事件监测实验可以使用公开的固定的数据集,但是某些情况下,使用公开的数据集会面临许多问题,因为我们无法对已经合成的音频进行进一步的处理以得到我们所需要的具有某种特征的音频样本集,这里有两种场景。

场景一、所需的事件音在现实当中非常的稀少,所以找到含有大量的这种事事件音的样本集会变得非常困难。比如一些非常罕见的异常事件,比如枪声,爆炸声,叫喊声,玻璃破碎的声音。这些音频事件一般都带有一定的恐怖性质,可能在许多恐怖电影当中会听到,但是现实当中却很少有机会去遇到这样的音频事件。但是对这些音频事件的监测却具有非常重要的意义,正是出于这些事件音的危害性。如何检测这些事件音是具有重大意义的。 在这种情况下,为了获取大量的样本数据集,必须使用合成的方式。

场景二、我们需要对多场景的情况进行评估。比如对于相同的事件音,我们要对其抵抗噪声的能力进行检测试验,这是我们需要获得对背景噪音的控制。如果使用现成的音频样本进行检测(一般是在单一噪声背景下录制的音频),将会是试验无法进行。

正式基于这样的考虑和需求,使用合成技术得到我们需要的音频流是进行相关研究工作的前提。下面我们对这个问题进行详细的讨论。

一、信噪比

reference:http://en.wikipedia.org/wiki/Signal-to-noise_ratio

所谓信噪比是非噪声信号与噪声信号的比例。一般我们会使用RMS信号能量统计作为每种信号的能力的大小的度量,使用分贝作为信噪比的表现形式。具体定义如下:

我们假设音频原始WAV信号为$wav=[v_{1},v_{2},v_{3},...,v_{n}]$,则

$RMS = sqrt(frac{sum_{i=1}^{n}}{n}wav(i)*wav(i))$

$SNR = 10log_{10}frac_{RMS(event)}^{RMS(noise)}$

这里需要注意的是在分贝的计算中log的底数使用的不是在计算机中常用的2,而是10。

二、音频合成

如何将事件音合成到背景音频上去?

事假音频为:

背景音频为:

我们现在的任务是要将事件音频叠加在背景音频上,但是原始两者的信噪比并不一定是符合我们的需要的,因此我们需要对其进行统一的线性变换,即在需要叠加的数字信号上乘以一个比例系数

下面我们来看一下这个比例系数和信噪比之间的关系。

假设对噪音信号乘以了比例系数$alpha$,假设我们需要的信噪比为$snr$

$RMS(event)/RMS(noise)=10^{snr/10}$

为了符号的简单,我们另 $10^{snr/10}$ 简记为ratio

$frac_{sum_{i=1}^{n1}(alpha*wavnoise{i})^{2}}^{sum_{i=1}^{n2}wavevent{i}^{2}}=ratio^2$

通过化简我们可以得到

$frac_{alpha^2}^{1}=ratio^2$

$alpha=frac_{ratio}^{1}$

因此我们得到了若要得到我们需要的信噪比,需要在噪声信号上所要乘积的系数。

为了防止溢出,需要在两种信号上分别乘以一个值,即

synthesis=a*event+b*noise;

并且a+b=1;

我们知道

$a=frac^{1}_{1+alpha}$

$b=frac^{alpha}_{1+alpha}$

问题得解

时间: 2024-11-17 05:20:30

音频事件监测当中的音频合成的相关文章

等待事件监测性能瓶颈

1. 会话等待事件性能视图:v$system_event, v$session_event, v$session_wait v$system_event: 查看整个系统级或者说最高级别的整体系统性能情况,这里面没有每个会话的相关信息,而是对每个事件总计了从系统启动以来在所有会话中发生过的情况.这个视图有5个字段: event: 列出所有发生的事件的名称. total_waits: 从数据库启动到现在这个等待事件总的等待次数. total_timeouts:总的等待超时次数. time_waite

16.刚体碰撞事件监测与处理

1)当一个用刚体控制的物体与另外一个物体碰撞时,就会触发碰撞事件 注:目标物体必须带有 Collider 组件. 2)碰撞事件监测方法 1.OnCollisionEnter(Collision) 当碰撞开始时调用,只会调用该方法一次. 2.OnCollisionExit(Collision) 当碰撞结束时调用,只会调用该方法一次. 3.OnCollisionStay(Collision) 当碰撞进行中时,会持续调用该方法. 4.Collision 参数 碰撞,一个类.作用:用于传递碰撞信息. C

事件机制(事件冒泡与事件捕获)

<div id="outer"> <p id="inner">Click me!</p> </div> 事件冒泡 微软提出了名为事件冒泡(event bubbling)的事件流.时间冒泡就是指事件会从最内层的元素开始发生,一直向上传播,直到document对象. 因此上面的例子在事件冒泡的概念下发生click事件的顺序应该是p -> div -> body -> html -> document

克服 iOS HTML5 音频的局限

尽管 HTML5 音频表现出色,但作为一个仍在开发的规范,它仍有很多局限.移动版 Safari 甚至引入了更多的限制.在本文中,您将了解 HTML5 在移动版 Safari 方面的局限性.一些工作示例提供了相应的解决方案和全面的变通方法.通过本文您将了解在移动版 Safari 中使用 audio sprite 的好处,并尝试使用几个独到的解决方案来绕过 iOS 中的 HTML5 局限. 目录[-] 常用的缩略语 HTML5 音频的局限性 格式支持 表 1. HTML5 视频格式支持 清单 1.

监听当点击微信等app的返回按钮或者浏览器的上一页或后退按钮的事件

在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面或执行一些其它操作的 需求,那在代码中怎样监听当点击微信.支付宝.百度糯米.百度钱包等app的返回按钮或者浏览器的上一页或后退按钮的事件呢. 首先我们要了解浏览器的history.大家知道在页面中我们可以使用JavaScript window history,后退到前面页面,但是由于安全原因javascript不允许修改 history里已有的url链接,但可以使用pushStat

View的事件体系

一.什么是View?什么是ViewGroup? View是Android中所有控件的基类,不管是Button.ListView还是RelativeLayout,它们的基类都是View.View是一种界面层的控件的一种抽象,代表了一个控件. 而什么是ViewGroup,从字面上看,ViewGroup应该指的是一个控件组,即ViewGroup中可以包含许多控件.而ViewGroup继承自View,所以View本身就可以是单个控件也可以由多个控件组成的一组控件.这样就构成了View树. 二.View的

Android艺术开发探索第三章————View的事件体系(下)

Android艺术开发探索第三章----View的事件体系(下) 在这里就能学习到很多,主要还是对View的事件分发做一个体系的了解 一.View的事件分发 上篇大致的说了一下View的基础知识和滑动,现在我们再来聊聊一个比较核心的知识点,那就是事件分发了,而且他还是一个难点,我们更加应该掌握,View的滑动冲突一直都是很苦恼的,这里,我们就来一起探索一下 1.点击事件的传递规则 我们分析的点击事件可不是View.OnClickListener,而是我们MotionEvent,即点击事件,关于M

左右JAVA示例代码事件分发和监督机制来实现-绝对原创有用

文章标题:左右JAVA示例代码事件分发和监督机制来实现 文章地址: http://blog.csdn.net/5iasp/article/details/37054171 作者: javaboy2012Email:[email protected]qq:    1046011462 一.场景如果 如果有博客系统中须要实现例如以下功能: 系统中用户公布文章.改动文章.删除文章时,须要一些相关的操作须要运行. 公布文章后,给好友发送邮件通知.给用户加积分,对文章做全文索引. 改动文章后,给好友发送邮

很多人都不知道的监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法

在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面或执行一些其它操作的 需求,那在代码中怎样监听当点击微信.支付宝.百度糯米.百度钱包等app的返回按钮或者浏览器的上一页或后退按钮的事件呢. 我相信很多朋友像我一样,在百度.搜狗里面搜索很久都没找到方法.下面就来告诉大家怎样监听的方法: 首先我们要了解浏览器的history.大家知道在页面中我们可以使用javascript window history,后退到前面页面,但是由于安全