时频掩蔽技术。

掩蔽效应

声掩蔽(auditory masking)是指一个声音的听阈因另一个声音的存在而上升的现象。纯音被白噪声所掩蔽时,纯音听阈上升的分贝数,主要决定于以纯音频率为中心一个窄带噪声的功率。

声掩蔽主要决定于以纯音频率为中心一个窄带噪声的功率。这个窄带的频率宽度是随着纯音频率的不同而变化的,称为临界频带。在听觉频率尺度上,一个临界频带的宽度等于1巴克。临界频带的概念是美国科学家H.富来车在20世纪40年代提出来的。这些频带与听觉滤波器有关。在频率上一个强的低频纯音可掩蔽高频纯音。在时间上除了即时掩蔽外,还存在一个声音可对它后面的声音产生掩蔽,称为前向掩蔽;一个声音也可对它前面的声音产生掩蔽,称为后向掩蔽。复合纯音的掩蔽比较复杂,与它的频率组合与相位关系有关,有时产生“时间窗”效应,即在某一时段内产生的掩蔽很小。如果一侧耳输入信号,另一侧耳输入噪声,则可在中枢产生掩蔽。

声音信号大多数时候时非稳态的瞬时信号,声压级随着时间变化很快,即强音后面跟着弱音,弱音后面又可能跟着强音。比较强的声音往往会掩蔽随后到来的较弱音。

【应用】掩蔽效应看来是噪声对信号的一种干扰,但也可在语音通信中加以利用。如数字语音压缩通信中,可借助掩蔽效应使嵌入的加密密码听不出来,即不因密码而降低通话质量。

【应用】根据掩蔽效应的原理,才衍生出电声技术指标中的SNR(信号噪声比),以及THD(谐波失真)等。当噪声或者失真保持在一定范围内的时候,对听觉效果没有影响。

一个较弱的声音(被掩蔽音)的听觉感受被另一个较强的声音(掩蔽音)影响的现象称为人耳的“掩蔽效应。被掩蔽音单独存在时的听阈分贝值,或者说在安静环境中能被人耳听到的纯音的最小值称为绝对闻阈。

实验表明,3kHz—5kHz绝对闻阈值最小,即人耳对它的微弱声音最敏感;而在低频和高频区绝对闻阈值要大得多。在800Hz--1500Hz范围内闻阈随频率变化最不显著,即在这个范围内语言可储度最高。在掩蔽情况下,提高被掩蔽弱音的强度,使人耳能够听见时的闻阈称为掩蔽闻阈(或称掩蔽门限),被掩蔽弱音必须提高的分贝值称为掩蔽量。

BSS中的时频掩蔽

新近的研宄将语音分离看作一个有监督学习问题新近的研宄将语音分离看作一个有监督学习问题。

早期工作受到了计算听觉场景分析中时频掩蔽技术的启发。在计算听觉场景分析中的一个重要的目标是理想二值掩蔽(IBM)。

理想二值掩蔽在带噪语音的时频表示上标注出特定时频单元是否被目标语音主导,即目标语音的能量是否高于噪声的能量。根据人类听觉系统的掩蔽效应,时间、频率相近的(在同一个时频单元内的)两个声音信号中,能量低的那个信号会被能量高的那个掩蔽,听觉系统无法感知到被掩蔽掉的信号。利用理想二值掩蔽去除噪声主导的部分,人们就无法感知到噪声的存在了。

当把理想二值掩蔽作为计算目标时,语音分离就变成了一个二元分类问题。在训练的时候,把理想二值掩蔽作为训练目标,测试时再用训练好的模型来预测理想二值掩蔽。理想二值掩蔽是有监督的语音分离研究中使用的第一个训练目标。

汪德亮等人系统分析了以上的特征,使用拉索(Lasso)方式选择出了对语音分离最有效的特征组合为:梅尔倒谱系数、相对谱变换感知线性预测系数、振幅调制谱和语音基音特征。

目前,在有监督的语音分离中,最常使用的输入特征是语音短时傅里叶变换的振幅谱。

输出信号:目标语音或各种时域掩蔽。

【理想二值掩蔽】:理想二值掩蔽是最早使用的训练目标,在一个时频单元里,如果局部信噪比超过一个阈值,理想二值掩蔽在这个单元是1,否则是0。理想二值掩蔽里面的非零值标注出了目标语音主导的时频单元。

【理想浮值掩蔽】:

【整体模型】:

参考

https://blog.csdn.net/hi_zhengjian/article/details/78959194

https://blog.csdn.net/dream_bin123/article/details/80031447?utm_source=blogxgwz4

Time Frequency (T-F) Masking Technique的更多相关文章

  1. [Mathematics][MIT 18.03] Detailed Explanation of the Frequency Problems in Second-Order Differential Equation of Oscillation System

    Well, to begin with, I'd like to say thank you to MIT open courses twice. It's their generosity that ...

  2. Libfilth(一个滤波器C库)使用

    Libfilth使用说明 winshton 2009年2月 (*本文大部分翻译自libfilth,还有一部分是个人使用实践 *时间水平均有限,翻译的不完整,尤其第二章可以忽略) 版本历史修改记录 版本 ...

  3. ffmpeg full help

    Hyper fast Audio and Video encoder usage: ffmpeg [options] [[infile options] -i infile]... {[outfile ...

  4. C++高精度计算代码运行时间(转载)

    转载:http://blog.csdn.net/rrrfff/article/details/6583410 //在定时前应该先调用QueryPerformanceFrequency()函数获得机器内 ...

  5. Cisco IOS IP Service Level Agreementv (IP SLA)

    Responder and Control Protocol 1.Responder内嵌在思科目标路由器中的一个组件,用来对IP SLA请求包做应答,通过对应达包添加时间戳属性,以提高测量计算的准确性 ...

  6. openstack中运行定时任务的两种方法及源代码分析

    启动一个进程,如要想要这个进程的某个方法定时得进行执行的话,在openstack有两种方式: 一种是通过继承 periodic_task.PeriodicTasks,另一种是使用loopingcall ...

  7. 一个matlab数字图像处理程序的解释

    clc; %clc是清除command window里的内容 clear all; %clear是清除workspace里的变量 close all; %close all来关闭所有已经打开的图像窗口 ...

  8. LoRa术语

    ADR      Adaptive Data Rate          自适应数据率 AES      Advanced Encryption Standard        高级加密标准 AFA  ...

  9. 10个重要的算法C语言实现源代码

    包括拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔 .都是经典的数学算法,希望能开托您的思路.转自kunli.info 1.拉格朗日插值多项式 ,用于离散数 ...

随机推荐

  1. DRF框架(四)——单整体改(put)、单局部改(patch)、群局部改(patch)

    单整体改   单指的是单独一条数据,整体指这条数据的所有字段都必须传值修改 基于上篇文章的代码修改,序列化层不用变,只修改views.py 1) 单整体改,说明前台要提供修改的数据,那么数据就需要校验 ...

  2. git 学习笔记--Feature分支

    软件开发中,总有无穷无尽的新的功能要不断添加进来. 添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合 ...

  3. Linux生产环境上,最常用的一套“AWK“技巧【转】

    最有用系列: <Linux生产环境上,最常用的一套“vim“技巧> <Linux生产环境上,最常用的一套“Sed“技巧> <Linux生产环境上,最常用的一套“AWK“技 ...

  4. 使用poi调整字体格式、添加单元格注释、自动调整列宽

    1 创建新的工作铺 import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFCell; import org ...

  5. WinForm下开发插件DevExpress安装及使用

    WinForm下开发插件DevExpress安装及使用在Visual Studio中安装DevExpress开发插件插件的使用方法简单的Demo介绍下载链接:https://pan.baidu.com ...

  6. 获取本机的IP地址和mac地址

    1. 以前一直用ipconfig来查看ip地址,哈哈哈,现在发现挺好玩 #获取本机的IP地址和mac地址 import uuid import socket def get_mac_address() ...

  7. 自学Python编程的第十天(希望有IT大牛看见的指点小弟我,万分感谢)---------来自苦逼的转行人

    2019-09-20-23:24:15 今天逛论坛.逛知识星球时.逛b站up主时,都说到低学历,非科班的人最好不要去自学Python 他们都说:如果我们学python是为了找工作,最好不要把pytho ...

  8. Java自学-数组 创建数组

    Java 如何创建一个数组 数组是一个固定长度的,包含了相同类型数据的 容器 步骤 1 : 声明数组 int[] a; 声明了一个数组变量. []表示该变量是一个数组 int 表示数组里的每一个元素都 ...

  9. nginx反向代理前后端分离项目(后端多台)

    目前软件架构都比较流行前后端分离,前后端的分离也实现了前后端架构的分离,带来的好处 —— 整个项目的开发权重往前移,实现真正的前后端解耦,动态资源和静态资源分离,提高了性能和扩展性. 通常Spring ...

  10. scrapy 爬虫中间件 deepth深度

    源码 class DepthMiddleware(object): def __init__(self, maxdepth, stats, verbose_stats=False, prio=1): ...