一些语音特征--学习笔记
- 常用的语音特征:
- 语谱图(spectrogram):输入语音,预加重,分帧,加窗,FFT,幅值平方,对数功率
- Fbank:输入语音,预加重,分帧,加窗,FFT,幅值平方,mel滤波器,对数功率
- MFCC:输入语音,预加重,分帧,加窗,FFT,幅值平方,mel滤波器,对数功率,离散余弦变换
- PLP:输入语音,预加重,分帧,加窗,FFT,幅值平方,bark滤波器,等响度预加重,强度-响度转换,逆傅里叶变换,线性预测
- CQCC:输入语音,预加重,分帧,加窗,CQT,幅值平方对数功率,均匀采样,离散余弦变换
- 主要的声学特征分为三种:MFCC,PLP,CQCC。
- MFCC:是一组用来建立梅尔倒频谱的关键系数,对语音当中的片段,我们可以得到一组足以代表此语音的倒频谱,而梅尔倒频谱系数即是从这个倒频谱中推得的倒频谱(也就是频谱的频谱)。与一般的倒频谱不同 ,梅尔倒频谱最大的特色在于梅尔倒频谱上的频带是均匀分布于梅尔刻度上的,也就是说,这样的频带会较一般我们所看到线性的倒频谱表示方法,和人类非线性的听觉系统(audio system)更为接近。PLP (Hermansky, JASA 1990)这家伙呢利用等响度预加重以及立方根压缩(由感知的结果),而不是MFCCs用到的对数压缩;利用线性预测自回归模型获得倒谱系数。已经被证明的是PLP跟MFCCs比较,其具有更好的语音识别准确度以及更好的噪声鲁棒性。
- PLP:
- 具体实现:将语音信号通过傅立叶变换得到频谱,再对幅度求平方,然后进行临界频带积分(critical-band intergration),接着进行等响度预加重,接着求立方根(对强度进行等响度压缩),然后是进行逆傅立叶变换,最后再经过线性预测即可得到PLP。
- PLP特征有时候效果比MFCC要好,但是它的提取过程比较复杂。
- MFCC和PLP的主要区别为解卷积的过程。
- 根据语音生成的理论模型,语音信号是由激励信号和信道冲激响应信号卷积产生的,根据任务需求,强化或提取某种信号是有必要的。
- 判断某段是浊音还是清音,或要求出基音频率,就必须获取激励信号;要获取能反映信道特性的频谱包络,就要去掉激励信号。
- 解卷积就是把卷积信号的各种分量分开,主要有两种方式:
- 非参数卷积(又称为同态解卷积),即倒谱分析
- 代表:MFCC
- 同态解卷积:把卷积(非线性问题)转换到线性问题上解决,具体:在频谱(时域卷积转为频谱乘积)上做log(乘积转加性),再在加性的对数频谱上做DCT或DFT,即可得到所谓的倒谱
- 参数解卷积,即线性预测分析
- 代表:PLP
- 线性预测分析:在p阶上能通过若干个语音采样信号的线性组合逼近原始信号,使得与原始信号的最小均方误差最小,求得一组唯一预测稀疏。
- 非参数卷积(又称为同态解卷积),即倒谱分析
- 谱估计的方法:
- 自回归AR,全极点模型
- 移动平均MA,全零点模型
- 自回归-移动平均ARMA,同时含极点与零点模型
- 关于p阶和零点:
- p阶的选择应和共振峰个数吻合,一般是两个极点对应一个共振峰。
- 但摩擦音是同时包含极点和零点的,所以在AR模型中为满足全极点假设,会用多个极点近似一个零点来套用AR模型,所以p阶会稍大于两倍共振峰个数,而PLP基于这种假设,当遇到含有零点的音时,就不能很好拟合(使用极点逼近),当阶数不够,就逼近较差了。
- MFCC和PLP的区别:
- 频谱映射的方式不同:Mel滤波器组和log对数与Bark滤波器组和cube root立方根;
- 解卷方式不同:倒谱分析与线性预测分析;
- 对噪声的鲁棒性:PLP对噪声的鲁棒性更高(可能与AR有关)
- other:
- 音色与基音频率有关,最好提取带上pitch特征,例如mfcc+pitch
- mel滤波器对于8khz以下的部分比较注重,特别是人耳可听范围,基音都是100多hz,mel会弱化掉的
- 最原始的特征才能提供更多细节的信息,被太多滤波器平滑过的特征反而缺失了分辨粒度
- 宽带语谱图spectrogram就能表征音频包络
#---------------2022.10.11更新------------------------
对于所列举以及还没列举的特征进行了代码复现,放置在仓库wsywsywsywsywsy979/speech_feature: 放置一些常用语音特征的抽取代码 (github.com)
欢迎讨论和学习~
#-----------------2022.11.6 add--------------------
- 过零率(Zero Crossing Rate,ZCR)是指在每帧中,语音信号通过零点(从正变为负或从负变为正)的次数。 这个特征已在语音识别和音乐信息检索领域得到广泛使用,是对敲击的声音的分类的关键特征。
特性:- 一般而言,清音(unvoiced sound)和环境噪音的ZCR都大于浊音(voiced sound);
- 由于清音和环境噪音的ZCR大小相近,因而不能够通过ZCR来区分它们;
- 在实际当中,过零率经常与短时能量特性相结合来进行端点检测,尤其是ZCR用来检测清音的起止点;
- 有时也可以用ZCR来进行粗略的基频估算,但这是非常不可靠的,除非有后续的修正(refine)处理过程。
谱质心:
描述音色属性的重要物理参数之一,是频率成分的重心,是在一定频率范围内通过能量加权平均的频率,其单位是Hz。它是声音信号的频率分布和能量分布的重要信息。在主观感知领域,谱质心描述了声音的明亮度,具有阴暗、低沉品质的声音倾向有较多低频内容,谱质心相对较低,具有明亮、欢快品质的多数集中在高频,谱质心相对较高。该参数常用于对乐器声色的分析研究。
谱质心就是基于能量分布的频率一阶矩,能够反映信号中主谐波的基频值的特性
一些语音特征--学习笔记相关推荐
- ISUP5.0语音对讲学习笔记
ISUP5.0语音对讲学习笔记 文章目录 ISUP5.0语音对讲学习笔记 准备阶段 CMS初始化 SMS初始化 CMS监听 CMS注册事件回调 SMS语音对讲监听 工作阶段 发送对讲命令 发送推流命令 ...
- 特征学习笔记Chapter1-Chapter4
特征学习阅读笔记 Chapter1 机器学习流程 机器学习从业者有一个共识,那就是建立机器学习流程的绝大部分时间都耗费在特征工程和数据清洗上. 正确的特征要视模型和数据的具体情况而定,而模型和数据千差 ...
- 语音分离--学习笔记(2)
根据说话人(麦克风)的数目,通常将语音分离任务分为单通道(Singlechannel)语音分离和麦克风阵列(Multi-channel)的语音分离. 对于时频域的语音分离需要将时域的语音信号进行短时傅 ...
- MATLAB神经网络语音去噪-学习笔记
这里写自定义目录标题 MATLAB神经网络语音去噪例程学习 创建语音数据存储 MATLAB神经网络语音去噪例程学习 此笔记属于随记,参考资料: 使用深度学习网络对语音去噪例程 创建音频数据存储audi ...
- 语音分离---学习笔记(1)
语音分离任务可分为3类: 当干扰为噪声信号时,可以称为"语音增强" 当干扰为其他说话人时,可以称为"多说话人分离" 当干扰为目标说话人自己声音的反射波时,可以称 ...
- 数字语音信号处理学习笔记——语音信号的同态处理(1)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013538664/article/details/33855467 5.1 概述 同态处理方 ...
- 数字语音信号处理学习笔记——语音信号的短时时域分析(4)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013538664/article/details/26141939 3.7 基于能量和过零率 ...
- 数字语音信号处理学习笔记——语音信号的短时时域分析(2)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013538664/article/details/26068797 3.3 短时平均能量 由 ...
- 数字语音信号处理学习笔记——绪论(2)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013538664/article/details/25060123 1.2.2 语音编码 语 ...
最新文章
- 配置Spring数据源c3p0与dbcp
- 12.流水线设计方式
- rac下asm管理的表空间-数据文件的重命名
- boost::container_hash模块实现哈希信息
- python解题软件哪个好_笔试 - 高德软件有限公司python问题 和 答案
- JavaSE各阶段练习题----多线程-垃圾回收
- Pricing in SAP CRM and Cloud for Customer
- Unity 2017 Game Optimization 读书笔记 Dynamic Graphics (4)
- 小程序 --- 项目小练手Ⅰ
- linux下用c语言打印hellword,用C语言写一个Helloworld_实现第一步编译运行
- 阿里云 服务器 系统 php mysql_阿里云服务器配环境(Ubuntu 16.04+Nginx+MySQL+PHP)并部署hexo博客...
- 苹果手机显示iphone已停用连接itunes_iphone忘记密码怎么办 iphone忘记密码解决方法【详细步骤】...
- python中list 和array的区别
- 使用 session_destroy() 销毁session文件时 报 Trying to destroy uninitialized session 错误解决办法
- python网页提交表单_Html表单——使用python在web页面上显示用户提交的数据
- saltstack event配合websocket客户端实时推送结果
- ubuntu安装transmission下载BT
- Uva 437 巴比伦塔 UVA10003
- 读《哈佛大学》纪录片 后感
- 七天玩转Redis | Day5、Java操作Redis