Python实现BP网络并进行语音识别(三)

news/2024/11/6 15:14:48/

title: Python实现BP网络并进行语音识别(三)
date: 2019-06-09 20:45:40
tags: [python, BP, 语音识别]

前言

在深度学习领域,一份好的数据决定了成功的一半。为了得到优质的声音样本,我特意选取了三位相声大师的单口相声,音频样本简单纯粹,每一位都选取了十分钟以上的音频信息。将音频信息安装停顿切成一个个不超过10s的小声音片段,然后对每一段音频进行MFCC特征提取,获得数百个带标签的音频样本。

MFCC简介

MFCCs(Mel Frequency Cepstral Coefficents)是一种在自动语音和说话人识别中广泛使用的特征。它是在1980年由Davis和Mermelstein提出。
在任意一个Automatic speech recognition 系统中,第一步就是提取特征,把音频信号中具有辨识性的成分提取出来,然后把其他的无关的信息丢弃,例如背景噪声、情绪等等。
[外链图片转存失败(img-qRq3Wguz-1562727863940)(https://ltengy.github.io/images/BPVoice/2019-07-10_102153.jpg)]
搞清语音是怎么产生的对于我们理解语音有很大帮助。人通过声道产生声音,声道的构造决定了发出怎样的声音。声道的构造包括舌头,牙齿等。如果我们可以准确的知道这个形状,那么我们就可以对产生的音素进行准确的描述。声道的构造在语音短时功率谱的包络中显示出来。而MFCCs就是一种准确描述这个包络的一种特征。
传统方法对一段音频信号进行倒谱分析,提取频谱包络(连接所有共振峰值的包络),但是,对于人类听觉感知的实验表明,人类听觉的感知只聚焦在某些特定的区域,而不是整个频谱包络。
而Mel频率分析就是基于人类听觉感知实验的。实验观测发现人耳就像一个滤波器组一样,它只关注某些特定的频率分量(人的听觉对频率是有选择性的)。也就说,它只让某些频率的信号通过,而压根就直接无视它不想感知的某些频率信号。但是这些滤波器在频率坐标轴上却不是统一分布的,在低频区域有很多的滤波器,他们分布比较密集,但在高频区域,滤波器的数目就变得比较少,分布很稀疏。
(https://ltengy.github.io/images/BPVoice/2019-07-10_102435.jpg)]
[外链图片转存失败(img-nano6Ohl-1562727905391)(https://ltengy.github.io/images/BPVoice/2019-07-10_102404.jpg)]
人的听觉系统是一个特殊的非线性系统,它响应不同频率信号的灵敏度是不同的。在语音特征的提取上,人类听觉系统做得非常好,它不仅能提取出语义信息, 而且能提取出说话人的个人特征,这些都是现有的语音识别系统所望尘莫及的。如果在语音识别系统中能模拟人类听觉感知处理特点,就有可能提高语音的识别率。
梅尔频率倒谱系数(Mel Frequency Cepstrum Coefficient, MFCC)考虑到了人类的听觉特征,先将线性频谱映射到基于听觉感知的Mel非线性频谱中,然后转换到倒谱上。将普通频率转化到Mel频率的公式是:
m e l ( f ) = 2595 × l o g 10 ( 1 + f 700 ) mel\left(f\right)=2595\times log_{10}\left(1+\frac{f}{700}\right) mel(f)=2595×log10(1+700f)
由下图可以看到,它可以将不统一的频率转化为统一的频率,也就是统一的滤波器组。
[外链图片转存失败(img-fhm2C02Y-1562727927866)(https://ltengy.github.io/images/BPVoice/2019-07-10_102435.jpg)]

在Mel频域内,人对音调的感知度为线性关系。举例来说,如果两段语音的Mel频率相差两倍,则人耳听起来两者的音调也相差两倍。
我们将频谱通过一组Mel滤波器就得到Mel频谱。公式表述就是:
l o g X [ k ] = l o g ( M e l − S p e c t r u m ) logX\left[k\right]=log\left(Mel-Spectrum\right) logX[k]=log(MelSpectrum)
这时候我们在 l o g X [ k ] log X[k] logX[k]上进行倒谱分析:
1)取对数: l o g X [ k ] = l o g H [ k ] + l o g E [ k ] logX\left[k\right]=logH\left[k\right]+logE\left[k\right] logX[k]=logH[k]+logE[k]
2)进行逆变换: x [ k ] = h [ k ] + e [ k ] x\left[k\right]=h\left[k\right]+e\left[k\right] x[k]=h[k]+e[k]
在Mel频谱上面获得的倒谱系数 h [ k ] h\left[k\right] h[k]就称为Mel频率倒谱系数,简称MFCC。

参考文献
[1] https://blog.csdn.net/zouxy09/article/details/9156785zouxy09@qq.com
[2] https://www.ilovematlab.cn/thread-295269-1-1.html
[3] https://blog.csdn.net/watfe/article/details/80284242


http://www.ppmy.cn/news/350653.html

相关文章

dpkg 被中断问题解决方法

linux系统安装软件是有时会碰到“dpkg 被中断,您必须手工运行 sudo dpkg –configure -a解决此问题”,然而按照提示运行却并没能很好的解决问题。其实导致这个问题的主要原因是因为/var/lib/dpkg/updates文件下的文件有问题,可能是其他软件安装过程或是其…

新一配:iPod及其系列产品【转载】

iPod 是苹果公司设计和销售的系列便携式多功能数字多媒体播放器。iPod系列中的产品都提供设计简单易用的用户界面,除iPod touch与第6-7代iPod nano外皆由一环形滚轮操作。在早期,大多数iPod产品使用内置的硬盘储存媒介,而iPod nano、iPod shu…

苹果mp3软件_学文案一代神器iPod的16年兴衰——苹果广告40年

文章较长,建议先点在看转发后收藏看 Think different 让用户重新忆起苹果昔日荣光,iMac则重新点燃了人们对苹果的激情,成功挽救了苹果。 不过真正将苹果推上神坛,开启新篇章的,是iPod。 苹果广告第四波:iPo…

Mac OS X下使用MySQL出现中文乱码的解决办法

文章转自:http://www.2cto.com/database/201110/108470.html 最近安装了mac osx lion系统,然后安装了mysql5.5.16版本的数据库进行开发,但是大家都知道,mysql的默认编码是latin1,如果存储中文的话就会出现乱码。 配置方…

极速理解设计模式系列:21.简单工厂模式(Simple Factory Pattern)

四个角色:抽象产品(Product)、具体产品(Concrete Product)、工厂(Creator)、客户端(Client) 抽象产品(Product):需要创建的各种产品的父类。这类产品有共同的接口。 具体产品(Concrete Product):需要创建的具体对象。 工厂(Creator):内部逻辑可以控制生成目标对象。…

文本编辑器GNU Nano 6.0 发布

自 1999 年末发布以来,GNU Nano 为基于终端的文本编辑器的易用性设定了新标准,从那时起,它已经发布了大量版本,其中最新的是全新的 6.0 版本。 虽然不一定是功能最丰富的版本,但它确实有一些关键的改进。让我们来看看其…

Windows软件:如何安装ideaIU-2020.3.3并使用无限重置插件达到永久使用

​前言: ​在我们做SpringBoot Java项目时,一个好的开发工具可以让我们的效率达到事半功倍,早期的eclipse已经无法满足我们日常需求,当然idea集成开发工具在很早前就已经进入市场,如今取得了无法撼动的地位&#xff0c…

Oracle中xmltype类型toObject函数用法实例

Oracle中xmltype类型toObject函数用法总结。 用法总结 xmltype是oracle中的type object类型。在实际使用中,可以当做xml对象来使用: set serveroutput ondrop type person_typex; create type person_typex is object (name varchar2(32),age number …