文档章节

语音信号MFCC算法简析

兔之
 兔之
发布于 2014/03/16 11:57
字数 702
阅读 1348
收藏 6

要进行语音处理,可以借助已经集成的工具包,如voicebox。

在Matlab7里toolbox里添加voicebox工具包。官方下载地址,在command里输入

<!-- lang: shell -->
>> addpath(genpath('E:\soft\Matlab\toolbox\voicebox'))  
>> savepath

路径写自己PC里voicebox的位置。

##MFCC流程## MFCC是这样的一个流程:

在此输入图片描述

##Matlab实现数据读入##

<!-- lang: shell -->
[x,fs,bits,opt_ck]=wavread('turan.wav',[1018 1400]');

x的返回值是一个382*2的数组,说明是左右二通道。该语句读取文件名为turan.wav的音频文件,并将音频数据存储在x中,返回给用户使用。音频数据的值域为[-1,1],被归一化了。

在C里面是把语音数据读入到一个一维数组,因此要进行左右声道数据分离。而Matlab中也为了跟踪调试数据换成单声道。

x=x(:,1); %获取左声道数据

##C实现预加重##

<!-- lang: cpp -->
void PreEmphasise (float *s, float k)
{
int i;
float preE;//加重系数

preE = k;
for (i=ipframesize;i>=2;i--)
   s[i] -= s[i-1]*preE;
s[1] *= 1.0-preE;
}

预加重在时域上的求法很像差分,在频域上起一个高通滤波器的作用。S2(n)=S(n)-aS(n-1)的传递函数进行Z变换就是H(z)=1-a(Z^(-1))。画出它的频谱图就可以直观看出这是一个高通滤波器,加强语音信号的共振峰。具体关于Z变换的知识可以参加奥本海默《Signals & Systems》P534。如果看不懂,就去做几道信号与系统习题吧。

##分帧加窗## 我们把语音信号看做平稳的,实际语音信号可能很长。为了便于处理整个信号,每次只处理一小段(10ms~30ms)的数据。这就是分帧,为了保证信号的连续性,帧与帧之间有部分重叠。

而直接对信号进行截断(加矩形窗)会产生频率泄露,一般都是加汉明窗。汉明窗和正弦函数很像,用Matlab命令plot(hamming(100))绘制出的图像如下:

在此输入图片描述

##FFT的作用# FFT在一般应用中是用来滤波。先正变换滤掉一部分频谱分量,再作逆变换把信号变回来达到滤波的目的。但是FFT还有另外一个作用,比如在这个应用中是对每一帧进行FFT变换,求频谱进而求得幅度谱。求得的幅度谱用在后面的Mel尺度的三角形滤波器组中。

这次看FFT算法真有种重温旧梦的感觉。对以前学的信号与系统、数字信号处理重新审视了一下,其实这些东西还真是不错。

##Refrence##

[1].http://my.oschina.net/jamesju/blog/193343

[2].http://hi.baidu.com/sunsee/item/1d669014316d9fdcbe90426c

[3].http://blog.csdn.net/xiaoding133/article/details/8106672

© 著作权归作者所有

兔之
粉丝 69
博文 250
码字总数 96477
作品 7
深圳
程序员
私信 提问
语音特征参数MFCC提取过程详解

折腾了好几天,看了很多资料,终于把语音特征参数MFCC搞明白了,闲话少说,进入正题。 一、MFCC概述 在语音识别(Speech Recognition)和话者识别(Speaker Recognition)方面,最常用到的语...

找一片天空散步
2014/01/15
73.7K
12
MFCC一些知识与Kaldi中的MFCC特征解读

因为想用Kaldi去实现一个GMM-UBM的说话人识别和loglike打分,所以想把Kaldi计算的统计量对一对, 看能不能把二进制文件里的数值单独拿出来,自己写个代码做结合Kaldi中的MAP做统计量计算,然...

robingao1994
2018/04/20
0
0
语音合成的思路、语音的声学特征、声音采样的一些资料

语音合成:把语音波形文件重现,以一种灵活的方式,只用极少数的基础数据,比如元音辅音的语音参数,那么首先需要研究元音辅音的语音学性质。 先从元音开始,根据相关资料,不同的元音是由相...

FreeBlues
2012/06/24
5.4K
0
声学特征(二) MFCC特征原理

https://blog.csdn.net/xmdxcsj/article/details/51228791 基本含义 MFCC是Mel-Frequency Cepstral Coefficients的缩写,顾名思义MFCC特征提取包含两个关键步骤:转化到梅尔频率,然后进行倒...

wanyangyang0914
2018/05/13
0
0
语音信号的时域特性(二)过零数

过零分析是比较常用的估计语音信号频率的一种方法,语音信号为宽带信号,对于连续的信号,考察波形穿过坐标轴的情况,离散信号则计算其样值符号改变的情况。 过零数的计算公式如下: 其中w(n...

sinat_35821976
2018/03/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

kibana汉化

kibana5 / 6 需要下载补丁包,https://github.com/anbai-inc/Kibana_Hanization 其中 v6 版本原生支持国际化,只需要添加资源文件并且配置即可 kibana7 v7版本官方内置汉化资源,在配置文件 ...

细肉云吞
9分钟前
2
0
spring boot 自定义日志 log4j2

使用默认的日志在实际开发中会存在很多问题,比如备份文件名称无法自动重命名、各个等级的日志被放在一个文件中等,所以实际开发中为了更好满足我们的需求,我们一般都会自定义采用配置的方式...

雷开你的门
13分钟前
1
0
PCB设计-Allegro软件入门系列-设计参数配置(上)

前言 经历了导入网表,和放置器件后,我们就要画板子了,但是必要的设计参数也要先准备好,磨刀不误砍柴工。 《一》显示参数 这里主要设置DRC报错标志大小和飞线显示类型 (1)DRC标志可以适当...

demyar
14分钟前
2
0
js实现微博、微信分享

html <!-- 分享 --><div class="share-box"> <b style="vertical-align: middle;">分享到:</b> <a title="分享到新浪微博" class="shareSina"><span class="share-icon"></span><......

张兴华ZHero
30分钟前
3
0
创龙TMS320DM8168浮点DSP C674x + ARM Cortex-A8的CPU、NAND FLASH、NOR FLASH

TL6678-EasyEVM是广州创龙基于SOM-TL6678核心板而研发的一款多核高性能DSP开发板。开发板采用核心板+底板方式,底板采用沉金无铅工艺的四层板设计,尺寸为200mm*106.65mm,它为用户提供了SOM...

Tronlong创龙
33分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部