找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7775|回复: 4
打印 上一主题 下一主题
收起左侧

基于CFCC的语音识别系统设计及在物联网上的应用 包含matlab程序 论文

[复制链接]
跳转到指定楼层
楼主
adai_CFCC是本文所使用到的代码,论文中的图是在该代码基础上修改相关参数得到的。
参考论文文件夹为本文主要参考论文。
基于CFCC的语音识别系统设计及在物联网上的应用为本人毕业论文。

版权所有,盗版请注明出处。
阿呆-talon56@163.com

语音特征参数CFCC的提取代码,原创作品。matlab程序,含参考文献及毕业论文,参考价值比较大吧


所有文件及其完整版本的论文下载 CFCC.rar (6.49 MB, 下载次数: 42)


下面是论文预览(无图版):
Northeastern University


独创性声明


本人声明,所呈交的学位论文是在导师的指导下完成的。论文中取得 的研究成果除加以标注和致谢的地方外,不包含其他人己经发表或撰写过 的研究成果,也不包括本人为获得其他学位而使用过的材料。与我一同工 作的同志对本研究所做的任何贡献均己在论文中作了明确的说明并表示谢意。


学位论文作者签名: 日期:


学位论文版权使用授权书


本学位论文作者和指导教师完全了解东北大学有关保留、使用学位论 文的规定:即学校有权保留并向国家有关部门或机构送交论文的复印件和 磁盘,允许论文被查阅和借阅。本人同意东北大学可以将学位论文的全部 或部分内容编入有关数据库进行检索、交流。





作者和导师同意网上交流的时间为作者获得学位后: 半年□一年□    一年半□              两年□


学位论文作者签名:导师签名: 签字日期:签字日期:


东北大学硕士学位论文摘要
基于 CFCC 的语音识别系统设计及在物联网上的应用


摘要


语音特征参数提取是影响语音识别系统的关键技术之一,近年来结合听觉特性的语 音特征参数提取是语音识别领域的研究热点。而随着物联网技术的广泛推广,设计并实 现面向应用的语音识别系统引起越来越多科研人员的关注。

本文在综述了语音识别技术中语音特征参数提取的研究发展及其在物联网应用的 基础上,实现了一种基于听觉模型的特征参数:耳蜗基底膜倒谱系数(CFCC),并将其应 用于物联网重要分支智能家居系统中,以实现非特定人、语音交互的智能家居系统。本 文的主要工作如下:

首先,研究基于听觉模型的 CFCC,介绍其数学定义、实现方法,并在 MATLAB 环境下进行仿真研究。仿真实验中还提取了 MFCC 和GFCC,和 CFCC 进行对比试验, 实验室安静环境下录制的音频测试文件信噪比高,所有特征参数的识别率都可以达到 90% 以上,对该音频文件添加白噪声,令信噪比为 6dB 时,MFCC 的识别率下降为 67.5%, GFCC 和 CFCC 的稍有下降,分别为 86.8%和 90.4%。当信噪比为0dB 时,MFCC 的识 别率下降到 20%以下,GFCC 和 CFCC 的亦有下降趋势,分别为 45.0%和 65.2%,但 CFCC 的表现要优于 。实验说明              具有更好的抗噪性。

然后,将 CFCC 整合到 Sphinx 语音识别系统中,以替换其默认的特征参数 MFCC, 实现基于 CFCC 的语音识别系统,并将该系统移植到嵌入式开发平台。其中,嵌入式开 发平台以 OMAP3530 为核心处理控制芯片,搭载嵌入式 Linux 操作系统,并添加了 QT 图形界面库、ALSA 音频库、NRF24L01 无线模块及驱动等支持,有效保证语音识别系 统实现。

最后将实现的基于 CFCC 的语音识别系统,应用到物联网分支智能家居系统中。该 系统将用户从传统的利用手和眼的交互方式解放出来,可以在不固定的地点,不中断用 户当前行为的情况下利用语音信号以非接触方式完成对智能家居系统的操作。



关键词:物联网;智能家居;CFCC;Sphinx;linux;OMAP3530



Design of speech recognitionsystem based on CFCC and application in the Internet ofThings




Abstract


Feature extraction is one of the key technology in Automatic Speech Recognition(ASR). In recent years, feature extraction combined with auditorycharacteristics is a hotspot. With the extensive popularization of the Internet of Things (IoT), the design and realization of ASR for IoT is attracting more and moreattention from researchers.

This paper summarizes the research and development of feature extraction and its appli- cation on IoT. And a feature based on auditory model called CochleaFeature Cepstral Coeff- ieients(CFCC) is implemented. The CFCC is applied to the speaker-independent and voice interactive smart home system which isone of the important branch of IoT. The main work are as follow:First, the mathematical definition and realization method of CFCC is introduced in this paper, and the simulation study in MATLAB is implemented. MFCCand GFCC are also extracted to compared with CFCC under different level of Signal to Noise Ratio(SNR). The clean testing condition recorded under a quietenvironment in the laboratory has a high SNR, the accuracy of all features are more than 90%. After adding white noise, the SNR of the testing conditiondrops to 6dB, the performance of MFCC drops to 67.5%, GFCC is 86.8%, and CFCC is 90.4%. If the SNR is 0dB, the MFCC accuracy is less than 20%,GFCC is

45.0%, and CFCC is 65.2%, but it is still higher than the other two. The experiments shows that CFCC has better noise immunity.

Second, design an ASR based on CFCC which is integrating CFCC into the Sphinx to replace its default feature MFCC. Then ported it to embedded platform. The embedded plat- form based on OMAP3530 and installed Linux. What’s more, the QT graphical library, ALSA library, NRF24L01 wireless moduleand its driver are added which can guarantee the imple- mentation of ASR effectively.

Finally, applied the ASR based on CFCC into smart home system. This system liberate users from the traditional way of hands and eyes interaction. Userscould operate the smart home system in non-contact way without fixd place and interrupting their current behavior






Keywords:Internet of Things; smart home; CFCC; Sphinx; linux; OMAP3530



目录


独创性声明............................................................................................................................ I

摘 要 ...................................................................................................................................... II Abstract............................................................................................................................... III 第1章 绪论........................................................................................................................ 1

1.1  课题的提出.................................................................................................................. 1

1.1.1  语音识别系统发展............................................................................................ 1
1.1.2  语音识别关键技术............................................................................................ 2
1.1.3  语音识别在物联网上应用................................................................................ 2
1.2  研究内容...................................................................................................................... 3
1.3  论文安排...................................................................................................................... 4

第 2 章 语音识别基础 .................................................................................................... 5

2.1  典型语音识别系统构成.............................................................................................. 5

2.1.1  预处理................................................................................................................ 5
2.1.2  特征提取............................................................................................................ 7
2.1.3  模式匹配.......................................................................................................... 14
2.2 Sphinx 语音识别系统 ................................................................................................ 20

2.2.1  声学模型及其训练.......................................................................................... 21
2.2.2  语言模型及其训练.......................................................................................... 23
2.3  小结............................................................................................................................ 25

第3章 CFCC 提取及应用研究 ............................................................................... 27

3.1 CFCC 的数学定义...................................................................................................... 27

3.1.1  听觉变换.......................................................................................................... 27
3.1.2  毛细胞窗口...................................................................................................... 29


3.1.3  非线性响度变换和离散余弦变换.................................................................. 29
3.2 CFCC 的仿真实现...................................................................................................... 30

3.2.1  耳蜗滤波器系数的实现.................................................................................. 30
3.2.2  听觉变换系数提取的实现.............................................................................. 35
3.2.3  毛细胞窗口实现.............................................................................................. 39
3.2.4  非线性响度变换和 DCT 变换实现................................................................ 39
3.3  实验结果与分析........................................................................................................ 41

3.3.1  实验数据准备.................................................................................................. 41
3.3.2  基准系统.......................................................................................................... 41
3.3.3  实验结果.......................................................................................................... 41
3.4 CFCC 在 sphinx 系统的应用实现............................................................................. 43

3.4.1 SphinxTrain 中 CFCC 特征参数提取.............................................................. 43
3.4.2 Pocketsphinx 中 CFCC 特征参数提取............................................................ 45
3.5  小结............................................................................................................................ 47

第 4 章 系统实现平台建立 ........................................................................................ 49

4.1  系统硬件平台介绍.................................................................................................... 49

4.1.1  主控平台硬件构成.......................................................................................... 49
4.1.2  设备节点硬件设计.......................................................................................... 51
4.2  系统软件开发平台建立............................................................................................ 52

4.2.1  主控平台软件开发环境及工具...................................................................... 52
4.2.2  设备节点软件开发环境.................................................................................. 54
4.3  小结............................................................................................................................ 56

第5章 基于 CFCC 的语音识别系统在物联网的应用实现....................... 57

5.1  主控平台设备驱动构建............................................................................................ 57

5.1.1 NRF24L01 无线模块驱动 ............................................................................... 58
5.1.2 ALSA 音频驱动库的编译安装 ....................................................................... 59
5.2  语音交互的智能家居系统实现................................................................................ 62

5.2.1  智能家居系统和 Pocketsphinx 间通信实现 .................................................. 62


5.2.2 语音交互的智能家居系统实现....................................................................... 63
5.3  小结............................................................................................................................ 65

第 6 章 总结与展望 ....................................................................................................... 67

6.1  本文总结.................................................................................................................... 67

6.2  展望............................................................................................................................ 67 参考文献.............................................................................................................................. 69 致 谢..................................................................................................................................... 73 攻读学位期间的研究成果........................................................................................... 75


第 1 章绪论


1.1  课题的提出


1.1.1 语音识别系统发展


语音识别的研究工作起步于上个世纪 50 年代。90 年代开始,语音识别技术逐渐从 实验室走向应用。根据其实用化的需要,人耳听觉模型的研究逐渐为学者所重视,出现 了不同类型的基于听觉模型的参数:感知加权线性预测参数(Perceptual Linear Predictive, PLP)、梅尔频率倒谱系数(Mel Frequency Cepstrun Coefficient,MFCC)、Gammatone 滤 波器参数、Gammachirp 滤波器参数[1][2]。同时出现了一批比较成功的语音识别软件:IBM 的 ViaVioce,Microsoft 的 SpeechSDK,Google 的 Google Speech API,Nuance 的 Naturally Speaking 以及开源语音识别系统HTK,Sphinx[3]和 Julius。

进入 21 世纪后随着电子产品的普及,嵌入式语音处理技术迅速发展。语音识别技 术也顺势进入该领域,其表现形式为出现独立的语音识别芯片如 Sensory 公司的 Rsc 系 列语音识别芯片、      公司的 Unispeech 和 Unilite 语音芯片等;或者为语音识别软 件出现嵌入式版本分支,例如 SpeechSDK,Google Speech API,Sphinx 等先后实现对嵌 入式设备的支持。我国语音识别研究工作一直紧跟国际水平,国内的语音识别始于七十 年代,国家也很重视,并把大词汇量语音识别的研究列入“863”计划,由中科院声学 所、自动化所及清华大学等单位研究开发[4]。经过四十余年的发展,汉语语音识别领域 取得了丰硕的成果。在实用方面,也涌现出不少以语音识别技术为核心的公司,例如语 音识别芯片提供商 ICRoute,语音识别引擎提供商科大讯飞。

语音识别技术以其极具诱惑力的发展潜力,吸引了国内外一批又一批学者投入其中, 并且取得了很大的成就,部分技术已经走出实验室进入实用化阶段,很大的鼓舞了研究 人员的热情,然而其发展并非一帆风顺,现在还有许多困难需要解决:

1.噪声环境:由于环境复杂、噪声源较多,使得在实验室环境下可以轻松识别的 系统应用在实际环境中识别率明显下降[5];

2.连续语音:汉语连续语音的连续程度高,协同发音现象严重,表现为孤立词汇 识别率很高,而在连续语音条件下识别率下降[6];

3.非特定人:系统对用户具有“选择性”,目前商业化的软件大多需要进行繁琐的


“训练”,使语音识别系统可以针对性的对用户语音进行识别,一旦更换系统或用户, 则需要重新“训练”,为用户使用带来诸多不便[7]。


1.1.2 语音识别关键技术


目前大多数语音识别技术是基于统计模式的。从语音产生机理来看,语音识别可以 分为语音层和语言层两部分,基于这种模式的语音识别系统包括四个部分:特征提取, 声学模型训练,语言模型训练和搜索算法[7]。尝试解决当前语音识别技术所面临的的困 难,可以从以下几个方面入手:

(1) 语音特征:声学模型是语音识别最底层的模型,代表着语音学信息,是系统中 的关键部分。声学模型建模时训练单元的区分能力,直接取决于特征提取方法的优劣。 特征提取要求提取的特征不但能够有效的降低数字语音信号的数据量,还要保证包含原 始语音的全部有效信息。另外,特征提取最好还能够具有抗噪性,这样就可以从源头上 保证语音识别系统的鲁棒性[7]。

(2) 说话人适应性:每个人的语音中不但包含语言信息,还包含个人特征信息,目 前的语音识别系统无法将两者有效区分。对于特定人的语音识别系统,它采集特定人的 语音,进行训练、识别,其识别率一般可以达到 以上。然而对于非特定人识别,由 于语音中个人特征的影响,造成训练语音库和测试语音库总会存在差异,训练语音库不

能全面覆盖和反映测试语音库的语音[5]。通常通过下面的方法解决此类问题:其一,深 入研究语音发音机理,从中找出与说话人无关的反映语音—文本对应关系的参数序列, 本质上是寻找一种语音特征参数,可以包含原始语音的全部语音学信息,而剔除说话人 的个性信息[4][8]。其二,增大训练集的规模,使之涵盖尽可能多的发音人的声学特征, 从而减小个性信息的影响,由于这需要很大的语料库而且训练时间太长,影响实用性, 故这种方式不予推荐[7]。

(3) 语法知识的利用。选择合适的语法知识可以明显的纠正音素序列的错误判别, 降低最终语句的错误识别数。实际上,连续语音识别系统或多或少结合了某种语法知识。 语法知识定义越清楚、应用越充分,系统的识别率就会越高。目前典型的用于描述语法 规则结构的方法是使用状态树转移结构的统计模式[6][9]。


1.1.3 语音识别在物联网上应用


1999 年美国麻省理工学院的 Auto-ID 实验室首次提出物联网(Internet of Things,IoT)


的概念。在物联网的发展过程中其内涵几经变化,目前认为物联网指将所有物体通过信 息传感设备如射频识别、全球定位系统、红外感应器等与互联网相结合,形成一个智能 化识别和管理的网络。其目的是让所有的物品都与网络连接在一起,方便识别和管理。 物联网的核心是实现物体(包含人)之间的互连,从而能够实现物体与物体之间的信息交 换和通信。物体信息通过网络传输到信息处理中心后可实现各种信息服务和应用。物联 网被预言为继互联网之后全球信息产业的又一次科技与经济浪潮,受到各国政府、企业 和学术界的重视[10][11]。

物联网的应用领域主要包括物流监控、污染监控、远程医疗、智能交通和智能家居 等。其中,智能家居是以住宅为平台,兼备建筑、网络通信、信息家电、设备自动化, 集系统、结构、服务、管理为一体的高效、舒适、安全、便利、环保的居住环境。智能 家居因其应用前景广阔、潜在市场需求巨大且发展迅猛而受到厂商的广泛关注[12]。

目前,大多数智能家居系统的人机交互是通过键盘、触摸屏和 LCD 来完成[13][14]。 对用户的操作地点、交互方式有很大的限制。本文中,尝试将语音识别系统应用到智能 家居系统中,使用户可以通过语音来完成和智能家居系统的交互,即构建人机语音交互 的智能家居系统。该系统将用户从传统的利用手和眼的交互方式中解放出来,可以在不 固定的地点,不中断用户当前行为的情况下利用语音信号以非接触式完成对系统的操作。


1.2  研究内容


本文主要内容集中在三个方面,如图 1.1 所示:

Fig. 1.1 The main research content in this article

第一:目前基于 MFCC 和 GFCC(Gammatone Frequency Cepstrum Coefficient)的语音 识别系统噪声鲁棒性较差。本文将深入学习基于听觉模型的耳蜗倒谱系数(Cochlea Feature Cepstral Coeffieients,CFCC)的定义及各个环节的意义,在 MATLAB 环境下对该 参数进行仿真研究,分步论述 CFCC 的提取方法及实现过程。然后在不同信噪比条件下, 与 MFCC 和 GFCC 进行对比,观察其抗噪性是否优于他们。



第二:语音识别系统是一个完整的语音到文本的处理过程,不但包含特征提取环节, 还包含预处理、模式匹配等环节,实现语音识别系统每个环节都必不可少。Sphinx 是一 个开源的、完整的语音识别系统,并且拥有完善的工具。本文中,首先学习 Sphinx 的 使用,掌握声学模型和语言模型的训练方法,掌握 Sphinx 语音识别系统的构建方法。 然后深入阅读 Sphinx 源代码,了解其组织架构,找出其中默认参数MFCC 的提取部分, 并修改为提取 CFCC 参数,实现基于 CFCC 的 Sphinx 语音识别系统。

第三:本文以物联网的典型应用——智能家居系统为应用环境,学习 Linux 操作系 统知识,掌握基本的操作方法及程序开发流程,在以OMAP3530 为核心的嵌入式开发 平台上构建嵌入式 Linux 操作系统,并添加 QT 图形界面库、ALSA(Advanced Linux Sound Architecture)音频驱动库、NRF24L01 无线模块及驱动等必要支持。然后将基于 CFCC 的 Sphinx 语音识别系统移植到该开发平台,并以此为核心,构建语音交互的智能家居系统。


1.3  论文安排


本文的结构安排如下: 第一章:介绍语音识别技术的现状,语音识别的关键技术,并概括了本文的主要研

究内容。 第二章:详细介绍典型语音识别系统的各个组成部分,对理解语音识别各个环节如

何工作有很大的指导作用。介绍了目前几种主流的基于人耳听觉模型的特征参数提取方 法以及隐马尔科夫模型应用于语音识别领域的基本原理和方法。另外,还介绍了 Sphinx 的原理及使用方法。

第三章:首先阐述 CFCC 的数学定义,然后详细介绍其在 MATLAB 环境下的提取 方法及仿真实现,并将此特征参数与传统特征参数进行比较,实验表明该参数在噪声环 境下鲁棒性更好。最后,介绍如何将该参数整合到 Sphinx 系统中。

第四章:首先介绍系统硬件平台,然后介绍软件开发平台建立过程。这为后续应用 系统开发做好必要准备。

第五章:主要介绍基于 CFCC 的语音识别系统在物联网的应用实现,包括设备驱动 实现及应用系统实现两部分。最终实现语音交互的智能家居系统。

第六章:总结本论文所做工作,针对系统中不完善的地方提出可能的改善方案,对 后续研究做简明交待。


第 2 章语音识别基础


2.1  典型语音识别系统构成


典型语音识别系统主要由三部分构成,系统示意图如下:





2.1.1 预处理


人类的语音信号是由肺部的收缩,压迫气流由支气管经过声门和声道引起音频振荡 而产生的一种声波。通常认为语音信号的信息主要集中在40-4kHz的范围内[15]。

声波是机械波,数字电路系统对语音进行处理,首先需要将其转换为数字信号,并 确定有效语音数据段,该过程即预处理,一般包括预滤波(抗混叠滤波)、量化、预加重 和端点检测。

(一)  预滤波 根据奈奎斯特采样定律可知,采样频率应为输入带限信号最高频率的二倍以上。考

虑到在噪音环境中宽带随机噪声叠加的结果,使得语音信号可能包含4kHz以上频率成分, 为了防止频谱混叠,必须在采样前进行一次预滤波去掉有效信号之外的高频噪音。预滤 波还有一个目的是避免50Hz的工频干扰,因此预滤波是一个带通滤波器,其下截止频率

fL=50Hz,上截止频率 fH则根据需要定义。本中采样频率为16kHz,上截止频率为fH=4k
Hz。

(二)  采样及量化 采样是将连续时间的语音信号转换成离散时间信号,采样之后的语音数据是离散时

间的模拟数据,利用计算机进行存储和处理则要经过量化,即AD转换。原信号和量化 后的信号的差值称为量化误差。量化时,采用较大的量化级数来记录采样点的幅度,则 量化误差越小,但相应的就会增加存储容量和处理时的计算量,因此要根据需求选择合 理的量化级数[15]。本文中量化级数为16,即每个采样点为16bit。

(三)  预加重


由于语音信号的平均功率谱受声门激励和嘴唇辐射的影响,高频端在 800Hz 以上按
6dB 倍频程跌落。预加重的目的是提升高频部分,使信号的频谱变得平坦,保证可以在 低频到高频的整个频带中用同样的信噪比求频谱,以便进行频谱分析或声道参数分析[15]。 预加重可以使用一阶数字滤波器来实现:



系数μ常在0.9至0.95之间。该范围所确定的加重曲线与人中耳的灵敏度相适应,本

文选取μ=0.9375。 (四)  端点检测 语音信号的端点检测是语音处理中常常涉及的问题。实验表明,准确地检测出语音

信号的端点不但可以减少后续处理的计算量,而且一定程度上影响整个系统的性能。目 前常用的端点检测方法是基于短时能量和短时平均过零率的检测方法(也称作双门限比 较法)。



2.1.2 特征提取


在完成对语音信号的预处理后,就得到了有效语音信号的时域采样信号了。如果以 时域采样信号直接进行匹配运算,无论从计算量还是计算效果来看都是不理想的。特征 提取则是将这些采样信号转换为能更好地表述该语音信号特性并且数据量较小的特征 帧。
人的听觉系统在听音辨物方面有独特的优越性,且具有优良的抗噪声性能,它能在 极低的信噪比下有效提取目标语音特征,因此基于人耳听觉模型的语音特征提取方法日 益受到重视[2]。其中MFCC、Gammatone滤波器特征参数、Gammachirp滤波器特征参数 都是典型的基于听觉模型的特征参数[16]。下面简要介绍一下他们的提取方法。

2.1.2.1 MFCC
物理上的频率以 Hz 为单位,Mel 频率根据人耳听觉特性,将频谱转化为非线性频 谱。它们之间的具体关系为:


Mel( f )  2595log(1 f / 700)

(2.6)


其中,f 为线性频率,单位 Hz, Mel( f ) 为 Mel 频率。
根据 Mel 频率与 Hz 的对应关系,可以将语音频率划分为一系列三角形滤波器序列, 称为 Mel 频率滤波器组。该滤波器组中心频率在以 Mel 为单位的频率轴上是等距的,在
Hz 单位的频率轴上是不等距的[1],如图 2.2 所示。

(1)  对频谱进行平滑作用,消除谐波的影响并凸显语音的共振峰。因此一段语音的
音调或音高,不会呈现在 MFCC 参数内,换句话说,以 MFCC 为特征的语音识别系统,
并不会受到输入语音的音调或音高的影响。
(2)  降低信息量。
MFCC 特征参数提取示意图如图 2.3 所示:


图 2.3 MFCC 特征参数提取示意图
Fig. 2.3 MFCC feature extraction diagram
MFCC 特征参数的提取过程如下:
(1) 预处理:预处理包括预加重、分帧、加窗。 预加重:计算公式为式(2.1)。
分帧:先将 N 个采样点集合成一个观测单位,称为一帧。为了避免相邻两帧的变化 过大,所以两个相邻帧之间有一段重叠区域(帧移),此重叠区域包含 L 个采样点,L 的 值约是 N 的一半。
加窗:采用汉明窗,窗函数定义为式(2.3)。
(2) FFT 变换,公式如下:


由于信号在时域上的变化很难看出信号的特性,所以通常将它转换成频域上的能量
分布来观察。所以信号经汉明窗后,每帧语音信息再经过 FFT 变换得到频谱上的能量分 布。
(3) Mel 滤波器组及对数能量:
将能量谱乘上一组三角带通滤波器(共计 24 个,即 M=24)。这 24 个三角带通滤波 器在 Mel 频率上是平均分布的,如图 2.2 所示。而 Mel 频率和一般频率的关系如式(2.6) 所示 [1]。
将线性谱 X(k)转换到对数频谱 S(m)的传递函数是:


(4) 离散余弦变换(Discrete cosine Transform,DCT)
将对数谱 S(m)做 DCT 变换,运算公式如式(2.11):
东北大学


求取倒谱系数过程中将声门激励和声道响应分离开来,适当选择倒谱维数就可以提
取产生语音信号的语音信息,把它作为语音识别特征参数,其各维参数之间相关性就很 小。此外,在求取倒谱系数中舍弃了对语音识别不重要的相位信息,起到进一步压缩特 征作用。经过上述步骤得到 MFCC 特征参数。
2.1.2.2 Gammatone 滤波器参数
在听觉特性的研究中,耳蜗基底膜行波和它的冲激响应非常重要。模拟耳蜗基底 膜行波的 Gamatone 滤波器就是一个非常成功的例子,作为一个耳蜗模型将语音时域信 号分解成一系列频带信息。
Gamatone 滤波器最早应用于表征生理学数据,后被应用于耳蜗听觉模型用来模拟 人耳听觉频率响应。单频率声音的发声近似描述可由下面的幅度调制波形表示[17][18]:

其中 A 是振幅系数,m(t)是调制器,ω 是角频率, 是相位,其中调制器 m(t)可以
表示成:

其中 β 是时间宽度,γ 是波形因数,归一化常数
伽马函数的积分形式。

Gammatone 滤波器是一个标准的耳蜗听觉滤波器,该滤波器组冲激响应的定义为:

其中,A 为滤波器增益,n 为滤波器阶数, fi 是中心频率,i 是相位,其对功率谱
影响可以忽略,简化模型中一般取 i  0 , ERB( fi ) 是等效矩形带宽 (Equivalent Reetangular Bandwidth,ERB),它决定了脉冲响应的衰减速度,与滤波器中心频率有关, 而每个滤波器带宽与人耳听觉临界频带有关,听觉心理学中, ERB( fi ) 可以由式(2.15)
得到:

每个滤波器的带宽由上式决定,其中,中心频率 fi 与带宽都是呈对数比例的,即具
有非线性的频率特性,符合人耳听觉特性。中心频率 fi 可由式(2.16)得出:


其中, f  为滤波器的截止频率, 是滤波器重叠因子,用来指定相邻滤波器之间
重叠百分比。每个滤波器的中心频率确定后,相应的带宽就由公式(2.15)得出来了。
Gammatone滤波器组的冲激响应和频率响应如图2.4所示。


(b)
图 2.4 Gammatone 滤波器的冲激响应和频率响应
Fig. 2.4 Gammatone filter’s impulse response and frequency respo nse


实践表明:(1)Gammatone 滤波器只需要 3 个主要参数就能够很好地模拟听觉实验
中的生理数据;(2)需要的阶次较低,阶数为 4 的 Gammatone 滤波器就能很好地模拟耳 蜗的听觉滤波特性;(3)具有简单的冲激响应函数,能够由此推导出 Gammatone 函数的 传递函数,进行各种滤波器性能分析,同时冲激响应函数有利于听觉系统模拟电路的实 现[16]。
2.1.2.3 Gammachirp 滤波器参数
Gammachirp滤波器最早由Irino于1997年提出,同Gammatone滤波器一样,它也是由 冲激响应函数定义的,Gammachirp滤波器的冲激响应函数为[20][21]:


与Gammatone函数相比,Gammachirp函数只是多了cInt这一项,这里的c是一个额外
的频率调制参数,同时用非对称的fr代替Gammatone函数中对称的中心频率f0,这里的fr 会随着c值的改变而改变,并且某种程度上依赖参数b和阶次n。对于参数b的定义,还是 采用与Gammatone函数相似的公式[21]。Irino和Patterson在用Gammachirp滤波器去拟合人 耳掩蔽实验数据的时候,发现在参数c随刺激声强度 PS (单位为dBSPL)成线性关系为
c  3.38  0.107 PS ,当 PS 大于30dBSPL时,c变成负数。取Gammachirp滤波器参数c=1.0,
得到不同fr下Gammachirp滤波器的冲激响应和幅频响应曲线分别如图2.5所示。与Gamm- atone函数的对应曲线比较:Gammachirp函数的冲激响应波形差别不大,但是频率响应 曲线却呈现了明显的非对称性,这是两者最明显的差别[23]。此外,相比Gammatone滤波 器,图中Gammachirp滤波器的中心频率由于clnt这一项影响而略向高频移动。


Fig. 2.5 Gammachirp filter’s impulse response and frequency respo nse
由以上讨论可知,由于Gammachirp滤波器增加了额外的强度相关的参数c,并引入


了非对称项clnt,克服了Gammatone函数不能模拟基底膜滤波器非对称、强度依赖特性
的缺点[24]。在对实验数据进行拟合时,由于实验曲线是非对称的,而Gammatone滤波器 曲线是对称的,因而不论如何改变Gammatone滤波器的参数n、b和 ,都不能使Gamma- tone曲线和实验曲线之间的平方误差显著减小。而通过调整参数,Gammachirp滤波器可 以达到比Gammatone滤波器更好的拟合效果。同时人们发现,最初被Gammatone函数拟 合的实验数据,也能被Gammachirp函数更精确地拟合。因此Gammachirp滤波器大大改 进了Gammatone滤波器的性能[23][24]。

2.1.3 模式匹配


语音识别的最后一个阶段是建立参考模板并进行模式匹配。实现模式匹配可以采用 不同的分类模型,语音识别技术中经典且有效的分类模型当属隐马尔科夫模型(Hidden Markov Models,HMM)[25],本节对该模型做简要介绍。
2.1.3.1 HMM 应用于语音识别的基本思想
(一)  马尔科夫(Markov)链

,且它在 n+k 时刻所处

Markov 链是 Markov 随机过程的特殊情况,是状态和时间都离散的 Markov 过程,
是 HMM 的基础。在数学上给出定义如下:


当 k=1 时, pij (1) 称为一步转移概率,简称转移概率,记为 aij。由于 k 步转移概率
pij(k)可以由转移概率 aij 得到,因此描述马尔可夫链的最重要的参数就是转移概率矩阵 A。


但 A 矩阵还决定不了初始分布,即由 A 求不出 q1  si 的概率,为了完全描述马尔可夫链,
除 A 矩阵之外,还必须引入初始概率  1 , 2 ,, n  ,这样 Markov 链的特性可以由 状态转移概率矩阵 A 和初始概率矢量 π 来描述。
(二) HMM 模型
HMM 是在 Markov 链的基础上发展起来的。由于实际问题比 Markov 链模型所描述 的更为复杂,观测到的观察值并不是与状态一一对应,而是通过一组概率分布相联系的, 这样的模型就称为 HMM。它是一个双重随机过程,其一是 Markov 链,这是基本随机 过程,它描述状态的转移,另一个随机过程描述状态和观察值之间的统计对应关系,这 样,作为一个观察者只能看到状态关系,不像 Markov 链模型中的观察值与状态一一对 应,对于状态,是通过一个随机过程去感知状态的存在及其特性的[1]。
在语音识别中,所谓的观测序列就是通过特征提取得到的一帧帧的语音参数,而状 态是在训练阶段事先规定好的不同的语音单元。对于汉语来说,语音单元可以是一个完
整的音节,也可以是声母或韵母,还可以是更为精细的音素。


图 2.6 单词“识别”的 HMM 表示及其与特征参数的关系
Fig. 2.6 The HMM represent of word “shibie” and the relationship with features
如图 2.6 所示,一个 HMM 模型由若干个状态组成,随着时间的变化,各个状态之 间可以发生转移,也可以在一个状态内驻留。每个观测向量对不同的状态都有相应的输



2.1.3.2 HMM 的三个基本问题
隐马尔可夫模型应用于语音识别系统必须解决三个基本问题:
(1)  评估问题:给定观察序列O  o1 , o2 ,, oT  和 HMM 模型   ( , A, C, ,U ) ,如 何有效计算在给定模型 λ 条件下产生观测序列 O 的概率 P(O|λ)。即已知模型和一个观测
序列,如何计算由该模型产生出该观测序列的概率。评估问题的求解能够选择出与给定 观测序列最匹配的模型,常用算法是前向—后向算法。
(2)  最佳状态链的确定:在给定观察序列O  o1 , o2 ,, oT  和 HMM 模型
  ( , A, C, ,U ) 后,如何选择在某种意义上最佳的状态序列Q  q1 , q2 ,, qT  ,以最好
地解释观测序列 O。常用算法是 Viterbi 算法。
(3)  模型参数优化问题:如何调整模型参数   ( , A, C, ,U ) ,以使条件概率 P(O|λ) 最大。即如何调整模型参数,以使模型能最好地描述一个给定观测序列,最好地说明这 个观测序列就是最优模型产生出来的。常用算法是 Baum-welch 算法(或称 EM 算法)。
(一)  评估问题
在语音识别中,可以通过计算、比较 P(O|λ),从多个模型参数中选择出与观察序列 匹配得最高的那个模型。
给定观察序列O  o1 , o2 ,, oT  和 HMM 模型   ( , A, C, ,U ) ,如果己知状态序列
Q  q1 , q2 ,, qT  ,则 HMM 模型 λ 以状态 Q 输出观察序列 O 的概率为:

(二)  最佳状态链的确定
第二个问题是给定一个 HMM 模型 λ 和观察序列O  o1 , o2 ,, oT  ,如何有效地确 定与之对应的最佳的状态序列Q  q1 , q2 ,, qT  ,这可以用 Viterbi 算法来解决。Viterbi 算法不仅可以找到一条足够好的状态转移路径,还可以得到该路径所对应的输出概率。
而且该算法比全概率公式的计算量小的多。定义 δt(i)为时刻 t 时沿一条路径 q1 , q2 , , qT 产 生出 o , o ,, o 的最大概率,并且满足 qt=si。求最佳状态序列的过程为:

这里,δt(j)为 t 时刻第 j 状态的累积输出概率,ψt(j)为 t 时刻第 j 状态的前向状态号,
用来跟踪记录 δt(j)在推导过程中的最佳路径。qt*为最优状态序列中 t 时刻所处的状态,
P*为最终的输出概率。
在 Viterbi 算法中需要计算前向变量 αt(i),它是通过递归运算求得的,即由连续相乘 的概率值组成,比如计算前向变量所用的递推公式为:


(三)  参数优化
HMM 的参数优化问题也就是通常所说的模型训练问题,即如何调整模型参数 λ, 使观察序列在给定模型条件下输出概率最大,这可以用参数重估公式解决。
为了给出重估公式,先定义t (i, j) 为给定观察序列 O 和模型 λ 时,在时刻 t 模型处 于状态 si,在时刻 t+1 处于状态 sj 的概率,即:



上述讨论了 EM 算法都是针对单个序列训练的,在很多时候单序列训练会使参数训
练不够充分,而使识别率不高。因此在实际应用中,都是有大量观察序列参与训练的, 也就是对每个 HMM 模型,都会收集大量的语音数据,分别计算出各自的特征参数序列, 再用来对该 HMM 的参数进行重估。

2.2 Sphinx 语音识别系统


Sphinx 是一个自动语音识别引擎,它是由卡耐基梅隆大学 (Carnegie Mellon University,CMU)的 Sphinx 研究组,Sun 微系统实验室,Mitsubishi 电子研究实验室和 Hewlett Packard 共同合作建立的,并得到了美国加州大学,麻省理工大学的资助[26]。 Sphinx 是开放源代码的语音识别软件包,多数版本可支持 Linux,Unix、Windows XP 和 Andriod 多种操作系统。Sphinx 系统具有悠久的历史,先后开发了四个重要版本: Sphinx1、Sphinx2、Sphinx3 和 Sphinx4[27]。其中被广泛使用的是 Sphinx2,同时还有广 泛应用于嵌入式系统的 PocketSphinx[27][28]。
Pocketsphinx 是从 sphinx2 发展而来的嵌入式语音识别引擎,代码针对嵌入式平台


进行了优化,实时性更好。后来,Pocketsphinx 的功能逐渐完善,并整合 Sphinx3 部分
功能。由于近年来嵌入式领域发展迅速,Pocketsphinx 获得了 CMU 的重点支持,不断 有新版本推出。目前最新版本是 Pocketsphinx-0.8,也是本文中使用的版本[29][30]。


图 2.8 Pocketsphinx 组织结构示意图
Fig. 2.8 Pocketsphinx structure diagram
该语音识别引擎主要有四部分组成:前端(FrontEnd,包括预处理,分帧、加窗、特 征提取等)、声学字典(Pronuncation Dictionary)、语言模型(Language Model)和解码器 (Decoder)。
使用的语音特征参数是 ,解码器即解决  中最佳状态链确定的问 题,前者在 2.1.2.1 节中介绍,后者在 2.1.3.2 节介绍,下面本文对声学模型和语言模型 做简要介绍。

2.2.1 声学模型及其训练


声学模型是语音识别系统最基本的组成单元和核心部分。声学模型可以刻画不同的 声学特性,它表征了系统中出现的每个基本语音单元。若声学模型精度不好,那么具有 再好的语言模型和解码器也无法有好的识别率[7]。
在进行汉语声学模型建模时,建模单元一般选用音素、音节或者词。对于小词汇量 的语音识别系统可以直接采用音节进行建模。而对于词汇量偏大的识别系统,一般选取 音素进行建模。识别规模越大识别单元选取的越小。
言语在实际中是一个连续的过程,语音会持续的受到临近音的影响,这种同时或者 重合的发音,就被称为协同发音。协同发音的存在会降低语音识别系统的性能。而上下


文相关音素模型的建立可以捕捉协同发音,从而提高系统的性能。综合考虑模型精度和
运算速度,可是使用上下文相关三元音素模型(triphone)。SphinxTrain 是 CMU 提供的声 学模型训练工具,可以为 Sphinx 各个版本生成所需格式的声学模型。本文采用声母、 韵母为基本训练单元,上下文相关的三元音素方式进行声学模型的训练。以下以训练包 含:前进、后退、左转、右转和停止五条命令的语音识别系统声学模型为例,讲解训练 声学模型的具体步骤[29][6]。
(1) 字典文件:在训练之前,要指明将每一个单词发音如何拆解成声学模型。本文 采用的识别单元为声韵母,故每个汉字发音可拆解成两部分。字典文件的内容为:
前进 Q IAN J IN
后退 H OU T UI
左转 Z UO ZH UAN 右转 Y OU ZH UAN 停止 T ING ZH IB
如果上述发音中存在多音字,则多音字的所有可能发音必须全部列出,否则系统将 不能识别未列出的发音。除此文件外还需要建立一个过滤字典来表示语音中的停顿,当 解码器识别出该文件中的识别单元时,将直接忽略,一般用于表示静音(或停顿)。
(2)  音素文件:音素文件中保存着 HMM 的最小训练单元,可以从字典文件中提取。 本例的音素文件中包括 16 个单元:H、IAN、IB、IN、ING、J、OU、Q、SIL、T、UAN、 UI、UO、Y、Z、ZH。其中 SIL 表示句子的停顿或静音,或者是录音环境的背景噪声。
(3)  控制文件:详细列出语音文件的存放路径,包括训练用和测试用语音。

my_db/wav/speaker1/qianjin_1 my_db/wav/speaker1/houtui_1 my_db/wav/speaker1/zuozhuan_1 my_db/wav/speaker1/youzhuan_1 my_db/wav/speaker1/tingzhi_1
my_db 文件夹表示训练声学模型的临时数据文件夹,wav 文件夹下存放所有语音文
件,speaker1 文件夹下保存某说话人的全部录音,qianjin_1 即语音文件。
(4)  脚本文件:存放每个控制文件的路径,并顺序执行声学模型训练的各个环节。 根据以上步骤最终得到四个声学模型参数文件:均值文件,方差文件,状态转移矩
阵和混合权重文件。


2.2.2 语言模型及其训练


语言建模能够有效的结合汉语语法和语义的知识,描述词之间的内在关系,从而提 高识别率,减少搜索范围。语言模型分为三个层次:字典知识,语法知识,句法知识。 语言建模方法主要有基于规则模型和基于统计模型两种方法。目前常用的是基于统计语 言模型,即采用 N-gram 进行语言建模[4][28]。
统计语言模型从概率的角度来描述词与词之间的关系。从统计的角度来看,给定一
个词序列 W=w1w2…wn,它的概率可以这样表示:



表示词 wi 跟其之前的 i-1 个词相关,即表示了在前面 i-1 个词出现的条件下 wi 出现
的概率。这个想法的假设条件为马尔可夫假设。满足这个假设的模型成为 i-1 阶马尔可 夫模型;而在语言模型里,称之为 i 元模型,即为常用的 N-gram 模型。N 表示了在这 句中出现的词的个数。当 i 太大时,参数空间变得非常巨大,需要的训练数据也相当大, 所以一般假设当前的这个词只依赖于前面有限几个词,n 通常取值 1、2、3 分别对应一 元文法: p(wi ) ,二元文法: p(wi  | wi 1 ) 和三元文法: p(wi | wi 1 , wi 2 ) 。其中三元文法是 非常有用的,几乎所有的词都跟前两个词有很大程度的依赖性,并且这个概率可以通过
一个大小可以接受的语料库中估计得到[7]。
Cmuclmtk(Carnegie Mellon University Statistical Language Modeling toolkit)是 CMU 提供的语言模型训练工具,可以为 Sphinx 各个版本训练生成所需格式的语言模型,它 可以通过统计大量文本数据得到以单个词建立的 N-gram 模型。由于 N 较大时,需要的 存储空间和运算时间也会相应的变大,所以本文主要采用 2-gram 和 3-gram 模型,即某 个词出现的概率仅依赖于前两个或者前三个词。

图 2.9 使用 CMUCLMTK 训练语言模型过程
Fig. 2.9 Use CMUCLMTK training language model process
本文以智能家居系统中的语音识别系统为例,介绍其语言模型训练过程。所使用的 命令在图 2.9 中利用方框表示,需要准备的文件或者工具生成的文件利用椭圆表示。训 练集和测试集文本是 text 格式,文件中列出训练和测试音频数据所对应的文本文件即


内容示例为:

东北大学

test.txt。语言模型训练流程如下:
(1) text2wfreq:统计文本文件中每个词出现的次数,得到一个后缀为 wfreq 的文件,
打开 84 关闭 84 热水器 21 前门电灯 21



</s> 118
即表示词打开、关闭、热水器、前门电灯和</s>在训练文本中出现的次数依次为 84、
84、21、21 和 118。
(2) wfreq2vocab:统计文本文件中含有多少个词,即有哪些词。系统应用中中包含
21 个词和两个静音,故共有 23 个词,依次是:打开、关闭、提高、降低、切换频道、 返回主菜单、热水器、排风扇、空调、电灯、卧室、前门、智能家电、智能控制、可视 对讲、小区信息、安防监控、音频播放、系统状态、系统设置、设置温度、</s>、<s>。 (3) text2idngram:列举文本中出现的每一个 n 元语法。产生一个二进制文件,该文

件为含有 n 元数组的数值排序列表,对应于与词有关的 N-Gram。超出文本范围的词汇 映射值为 0。
(4) idngram2lm:输入文件包括一个 idngram 文件,一个 vocab 文件和一个 ccs 文件, 输出是一个后缀为 binlm 的语言模型文件。其中 ccs 文件指句首和句尾的静音<s>和</s>。
(5) binlm2arpa:是将 binlm 文件转换为 arpa 格式语言模型文件。
(6) lm3g2dmp:将文件转换为 DMP 转储文件。此文件为解码器端所需要的文件格 式。这样,就得到两个语言模型文件:smart_home.arpa 和 smart_home.arpa.DMP。

2.3  小结


典型语音识别系统从语音输入到结果输出要经过复杂的处理过程,包括:预处理、 特征提取、模式匹配三个主要环节。本章对各个环节做了简要介绍,并对本文中所用到 的经典特征参数 MFCC、Gammatone 滤波器参数、Gammachirp 滤波器参数和 HMM 分 类模型做了详细介绍,最后还介绍了 sphinx 语音识别系统原理、构成及使用方法。
东北大学



第 3 章CFCC 提取及应用研究


3.1 CFCC 的数学定义


3.1.1 听觉变换


(一)  听觉正变换 声波从外耳传入中耳转化成机械能,当中耳的最后一个听小骨——镫骨移动时,耳
蜗中的液体流动在基底膜产生行波。耳蜗基底膜上的冲激响应利用函数 (t ) 表示,
 (t )  L2 ( R) ,函数还要满足下面的条件[31]:
(1)  响应积分为零:



(3.4)



(4)  形如声学实验中在基底膜上观察到的那样,冲激函数两端归零。
(5)  冲激函数频率响应应该为类似三角形的带通滤波器。
f (t ) 可以是任意一个均方可积函数。对 f (t ) 进行关于基底膜上的冲激响应 (t ) 的变 换,听觉正变换定义如下:



反变换的需求来源于对分解后的信号进行重构,比如音乐合成或者去噪等。另外如 果反变换能够恢复原始信号则证明正变换处理信号时没有损失信息,这是傅里叶变换或 者听觉变换实用性的一个重要原因。


如果满足(3.3)式,则反变换存在:



(三)  离散时间算法
在实际应用中,语音信号是以离散方式存储的,故提供听觉正变换和反变换的离散 时间计算方法是必须的,式(3.5)和式(3.10)的离散时间变换公式如下。
离散时间听觉正变换:


其中, ai  fL / fci 是第 i 个频带中心的尺度因子,N 是语音信号 f [n] 的长度。尺度
因子 a 可以是线性或非线性尺度。对于离散时间变换,a 还可以是 ERB 尺度,Bark,log
i i
或其他非线性尺度。
离散时间听觉反变换:




内耳毛细胞作用是将机械能转变为神经脉冲信号。基底膜的振动引起了基底膜和耳 蜗覆膜之间的剪切运动,使得基底膜和耳蜗覆膜之间的毛细胞上的绒毛发生弯曲。当绒 毛向一个方向弯曲时,会引起毛细胞的去极化,即开启离子通道,产生向内的离子流, 从而加强传入神经的作用;当绒毛向一个方向弯曲时,便不会有刺激或者神经元输出[31]。
用式(3.13)运算即模拟毛细胞作用:



这里的T (a, b) 为滤波器输出。外耳,中耳主要起到一个扩音、传导能量的作用,在
人耳听觉系统中是不可或缺的,但是在计算机实现中此处可以忽略,所以可以将这两部 分功能同内耳基底膜响应一起概括在听觉滤波器响应中。
下一步,每个毛细胞输出 S(i, j) 就成为当前滤波器中心频率响应相关神经穗的代表, 用式(3.14)表示:



图 3.1 CFCC 特征参数提取示意图
Fig. 3.1 CFCC feature extract diagram
图 3.1 为 CFCC 特征提取主要流程,提取过程主要依照了人耳听觉过程模型:耳蜗 滤波器组(Cochiear FilterBank)用来仿真耳蜗基底膜的作用,滤波器的变换作用模拟了外 耳,中耳及内耳的总体过程;毛细胞窗(Hair cell)是一个可变长度的窗函数,非线性响度 变换(Loudness Noulinearity)将能量信息转换为感知响度,DCT 变换去除信号间的相关性。 语音经过上述过程得出的听觉特征叫做耳蜗倒谱系数。下面本文介绍在 MATLAB 环境
下 CFCC 提取的详细步骤[31][32]。
3.2.1 耳蜗滤波东器系数的实北现大学
语音信号通过耳蜗滤波器的过程用正听觉变换表示,此变换包含了声音能量从外
耳传导到基底膜的全部过程,模拟出了不同频率信号在基底膜上的频率响应[36]。


图 3.2 耳蜗滤波器组冲激响应系数提取流程图
Fig. 3.2 Cochlear filter banks’ impulse response coefficient extraction flow
(一) α,β 及 θ 的取值
通常情况下取值为 , 的值根据实际应用选择。图给出, 分别取值
和 0.06 时耳蜗滤波器组的频率响应图。比较图形发现,当 β=0.2 时更接近人耳听觉频率
响应曲线。图中五个通道的中心频率分别为:188.7Hz,487.5Hz,1000.0Hz,1879.2Hz,
3387.3Hz。



图 3.3 耳蜗滤波器的频率响应 (a) α=3,β=0.2; (b


α=3,β=0.03 5

Fig. 3.3 Cochlear filter frequency response (a) α=3,β=0.2; (b) α=3,β= 0.035
β 的值根据不同的应用取值不同,在降噪方面 β=0.2 比较合适,而用于特征提取时,


它的值一般偏小[35]。由上图根据 β 的不同值计算出的耳蜗滤波器频率响应曲线可以看出,
β=0.2 更符合人耳特性,故在本文实验中使用 β=0.2 来进行特征提取。
θ 的值由式(3.1)决定,初始相位使冲激响应函数积分为 0。经计算得出其值大约为
-14°。由于在实验过程中,θ 取值为 0°或-14°对结果没有影响,所以最终 θ 取 0°。 图 3.4 给出耳蜗滤波器响应在不同中心频率下的冲激响应波形。

图 3.4

当 α=3,β=0.2, θ=0 时,耳蜗滤波器的冲激响应

Fig. 3.4 Cochlear filter bank impulse response when α=3,β=0.2,θ =0
(二) a,b 的取值
a 的值是由最低滤波器中心频率 fL 和当前所要实现滤波器中心频率 fc 决定的,定 义如下:




a 就如同小波变换的尺度因子,中心频率越大,a 值越小,反之越大。a 值决定着耳
蜗滤波器函数的伸缩特性。a 值不同的取值,将原语音信号按频率信息在不同通道进行 分析。
耳蜗滤波器的中心频率分布可以用 ERB,Mel,Bark 尺度。ERB,Mel 频率下中 心频率选取已在第 2.1.3.1 节和 2.1.3.2 节介绍,Bark 尺度下频率划分如表 3.1 所示,由


于语音信息主要集中在 4kHz 频率以下,故高于 4kHz 的部分本文未列出[37]。

表 3.1 Bark 尺度滤波器中心频率划分
Table 3.1 filter’s center frequency distribution by Bark scale

根据以上划东分,则可以计北算出各滤波器大的尺度因子 a学。在计算耳蜗滤波器系数时,
本文设置 b 的值始终为零,滤波器系数的平移通过其他方式实现,将在 3.2.2 节详细介
绍。

根据以上参数,获得 18 通道的耳蜗滤波器频率响应波形如图 3.5 所示:


听觉变换东系数提取的北实现大学

在 a,b = 0 (t) 中,b 称为时移因子,b 的不同取值关系到耳蜗滤波器函数在原语音信号
的不同位置进行内积。每平移一个单位,进行一次耳蜗基底膜滤波器函数与原信号的内 积。然而,根据不同的 b,重复计算 a, b (t) 会耗费大量的时间,严重影响程序执行效率。 从式(3.27)可以看出,积分范围是(-,+),但是由 a,b = 0 (t) 的定义可以看出,当 t<0 时
 a,b=0 (t)=0 ,而当 t 趋于 时 a,b=0 (t)=0 ,所以在进行计算时,只需要计算 a,b = 0 (t) 的非零
部分即可。因此在计算过程中,令 b 始终为 0,即第 3.2.1 节计算出的 m 通道滤波器系 数始终不变,而对原始信号进行平移,这样就可以以较高的效率完成对语音的分解计算, 获得听觉变换系数[38]。程序流程图如图 3.6 所示:



图 3.6 听觉变换系数提取流程图
Fig. 3.6 Auditory transform coefficient extraction flow
假设原始语音为 x(n) ,0  n  N ,则经过听觉变换后,将获得 m 个通道 N 点的听 觉变换系数T (a,b) ,1  a  m ,1  b  N ,其中 a 表示不同的通道,对应着不同的中心 频率,b 表示不同的位置,对应着语音信号不同时间的处理结果。
本文首先以 487.5Hz 正弦信号分别通过中心频率为 188.7Hz,487.5Hz,1000.0Hz
的耳蜗滤波器,观察其输出是否可以达到预期目标。


图 3.7 487.5Hz 正弦信号在耳蜗滤波器不同中心频率下的响应
Fig. 3.7 The cochlear filter response of 487.5Hz sinusoidal signal u der different center frequency
由图 3.7 可以看出,当信号频率和耳蜗滤波器中心频率相等时,信号可以通过滤波 器且其输出幅度最大,当信号频率和耳蜗滤波器中心频率不等时,输出信号会很快衰减 为零,且中心频率不同其衰减速率不一样。因此,本文实现的耳蜗滤波器及听觉变换算 法可以满足需求。
下图是发音‘a’的经过五通道耳蜗滤波器后的听觉变换结果如图 3.8 所示:



(b)
发音’a’的 AT 变换系数

a) 5 个通道的对比结果 b) 单一通道细节波形
Fig. 3.8 AT transform coefficients of 'a'
a) Comparative results in 5 channels b) Details of a single chann el waveform


3.2.3 毛细胞窗口实现


对原始语音进行听觉变换后,要使用式(3.13)对数据进行处理,来模拟人耳毛细胞 的去极化作用,由于处理方法简单,本文不再给出仿真流程图。
去极化后通过加窗,转换为当前滤波器中心频率响应相关神经穗的代表,从式(3.14) 可以看出,对于不同频率的滤波器输出,可以采用不用不同长度的时间窗,较高频率的 输出,可以使用较短的时间窗,以保留更多的瞬时信息,对于较低频率的输出,可以使
用较长的时间窗,以最大限度的观察信号的概况,其仿真实现流程图如图 3.9 所示:


Fig. 3.9 Achieve hair cell window flow chart
经毛细胞窗口处理后,音频数据得到压缩,压缩比率为 1/τ,有效减的小了数据长 度。

3.2.4 非线性响度变换和 DCT 变换实现


非线性的立方根响度函数,将毛细胞的输出由能量值变为感知响度,计算方法根据 式(3.15)完成。
最后一步是将经过非线性响度变换的输出进行 DCT 变换,可以有效去除通道间的


相关性,DCT 实现公式为式(3.16)。
完成以上计算,即实现了 CFCC 参数提取的整个过程,图 3.10 为发音‘a’和‘o’ 的经上述计算后的 CFCC 参数结果。


(b)
图 3.10 原始语音提取的 CFCC 参数
(a)‘a’的 CFCC 参数;(b)‘o’的 CFCC 参数 Fig. 3.10 CFCC feature extracted from original voice (a) CFCC feature of ‘a’; (b) CFCC feature of ‘o’


3.3  实验结果与分析


3.3.1 实验数据准备


本文实验所需的语音数据采集自 10 个人(6 个男性,4 个女性),语音内容为本文中 用到的语音命令(共计 24 个),字数从 4-6 不等,每条语句发音 5 次,保存为 5 个单独的 语音文件。语音文件是在实验室安静条件下采用 wavCN 软件录制的单声道、16 位、16kHz 采样率的 wav 格式文件。
实验中从每个人的 5 次发音中随机抽取 3 次,作为训练数据库。为测试特征参数的 抗噪能力,对剩余两次发音进行加燥处理,并将它们作为测试数据库。加燥方法是将原 始语音和白噪声线性相加,获得信噪比为-12dB,-6dB,0dB,6dB 的加燥语音。这样, 包括原始语音在内共 5 个信噪比等级的测试数据库。实验中,将首先利用训练数据库训 练声学模型,然后利用不同信噪比等级的测试数据库分别计算其识别率[34]。

3.3.2 基准系统


本文采用 SphinxTrain 对所有特征参数进行声学模型的训练和测试,SphinxTrain 是 CMU 提供的基于 HMM 的参数训练工具,HMM 原理在第 2.1.3 节已有详细介绍。训练 及测试方法在第 2.2.1 节中已有详细介绍。
本文按照 2.1.2.1 节中介绍的方法提取 MFCC 作为基准特征参数,MFCC 滤波器个 数选取 13 个,合并一阶、二阶差分参数,每帧获得 39 个特征点,帧长为 N=1024 点, 帧移为 L=512 点,窗函数采用汉明窗。
CFCC 参数的提取方式如第 3.2 节所述,频域划分准则为 Bark 尺度,滤波器个数首 选为 18,参数  3 ,   0.2 ,  0 。
为了比较 CFCC 中耳蜗滤波器和 Gammatone 滤波器的区别,本文还提取了 GFCC 参数,GFCC 的提取方法是使用 Gammatone 滤波器代替 CFCC 中的耳蜗滤波器,之后 的处理方式不变。同样,频域划分准则为 Bark 尺度,滤波器个数首选为 18 个。

3.3.3 实验结果


(一)  听觉正变换与反变换 本文中,首先对语音进行听觉正变换和反变换实验,并对听觉正变换后的不同滤波
器输出选择性组合后进行反变换处理,然后和原始语音对比。实验中,根据 Bark 尺度


频域划分准则计算所得 18 通道滤波器中心频率为表 3.1 所示。
在对每个滤波器输出单独进行听觉反变换时发现,第 1、2 滤波器反变换结果只能 听到很大的“嗡嗡”的声音而无法辨别信息内容,故他们的输出对语音识别任务不会有


帮助。将第 3-18

滤波器输出进行反变换后,除了声音强度略有降低,可以重现原始语

音。因此在后续实验中,提取 CFCC 特征参数采用频率中心为 3-18 的 16 通道方式提取。
(二) 加燥实验
在加燥实验中发现,当 SNR 低于-6dB 时,所有特征参数的识别率都不理想,讨论

其差别已无意义,故本文中将注意力主要集中在

0dB、6d

和原始语音的实验结果上。

将对比结果以直观的图形呈现,如图 3.11

所示。原始语音条件下,CFCC

参数和


MFCC、GFCC 参数的都可获得 90%上的识别率。当信噪比下降时,CFCC 参数的表现 明显优于 MFCC 和 GFCC 参数。例如:当信噪比为 6dB 时,MFCC 的识别率下降到 67.5%, 同等条件下,GFCC 的识别率为 86.8%,CFCC 的识别率为 90.4%。当信噪比降到 0dB 时,MFCC 的识别率将为 15.2%,GFCC 的识别率也将为 45.0%,而 CFCC 还能保持 65.2%
的识别率。

图 3.11 不同信噪比下,CFCC、MFCC、GFCC 参数对比结果
Fig. 3.11 Comparing results of CFCC,MFCC,GFCC in different S NR


可见,GFCC 的识别率在各个噪声水平下都要优于 MFCC,这是由于 Gammatone
滤波器平滑的类三角形频率响应特性较 MFCC 的三角滤波器更接近人耳听觉模型的真 实频率响应。而 CFCC 的识别率优于 GFCC,则可以说明,基于耳蜗滤波器的听觉变换 比基于 Gammatone 滤波器的变换方式在抗噪性方面更胜一筹。

3.4 CFCC 在 sphinx 系统的应用实现


将 CFCC 参数整合到 Pocketsphinx 中需要做两件事情:其一,训练该参数的声学模 型,主要工作和 SphinxTrain 相关;其二,在 Pocketsphinx 中添加 CFCC 提取算法并将 提取的 CFCC 参数作为解码器的输入,主要工作和 Sphinxbase 相关[30]。

3.4.1 SphinxTrain 中 CFCC 特征参数提取


SphinxTrain 进行声学模型训练,首先利用 wave2feat 对音频文件进行特征参数提取, 默认情况下得到后缀为 mfc 的 MFCC 特征参数文件,将之作为声学模型训练的输入。
特征参数格式如表 3.3  所示。
表 3.3 MFCC 特征参数文件格式
Table 3.3 file format of MFCC feature
项目格式
文件头int32 length 第一帧特征参数13 floats 或者 13*4 bytes 第二帧特征参数              13 floats 或者 13*4 bytes
…13 floats 或者 13*4 bytes
第 N 帧特征参数13 floats 或者 13*4 bytes
对于 MFCC 参数,在训练和解码过程中,不但用到了静态 Mel 参数,还用到了一 阶、二阶差分参数。但在文件中,仅保存了 Mel 静态参数,动态参数将在程序运行时计 算。计算方式可以通过-feat 配置,例如:-feat 1s_c_d_dd  表示读取向量,并计算一阶、 二阶参数然后将它们合并为 1 维特征向量。
对于 CFCC 参数的提取,按照以上格式保存为后缀为 cfcc 的文件即可。本文为了方 便后期实验,本文编写了一个批量提取 CFCC 特征参数的工具:general_CFCC。准备好 单通道、采样率为 16kHz 的 wav 格式音频数据,并在 txt 文件中将其文件名一一列出, 就可以批量提取特征参数,生成相应的 cfcc 文件。工具界面如图 3.12 所示。



图 3.12 General_CFCC 工具界面
Fig. 3.12 Interface of General_CFCC tool
需要注意的是,MFCC 每帧特征由 13 个 Mel 滤波器输出和一阶、二阶差分参数构 成 39 维特征向量,而 CFCC 参数则是由 16 个滤波器输出构成的 16 维特征向量。在保 存特征文件时,文件中并不包含每帧长度信息,需要在训练过程中通过参数控制本文中。
使用 SphinxTrain 可以生成默认的训练参数配置文件 sphinx_train.cfg 和特征参数格 式配置文件 feat.param,根据 CFCC 和 MFCC 参数的不同,做以下修改:
在 sphinx_train.cfg 文件中,将:



$CFG_VECTOR_LENGTH = 13;
$CFG_FEATFILE_EXTENSION = 'mfc';
$DEC_CFG_FEATFILE_EXTENSION = '.mfc'; 改为:
$CFG_FEATFILE_EXTENSION = 'cfcc';
$CFG_VECTOR_LENGTH = 16;
$DEC_CFG_FEATFILE_EXTENSION = '.cfcc'; 表示特征参数文件扩展名为‘cfcc’,特征参数维度为 16,计算识别率时解码器使用
的特征参数文件扩展名为‘cfcc’。 在 feat.param 文件中,添加:

-ncep 16

-ceplen 16

-feat 1s_c
表示本文提取的是每帧 16 通道的 CFCC 特征参数,仅读取或者使用原始向量数据, 不使用差分参数。


由 General_CFCC 获得 CFCC 特征参数文件,并根据上面提示正确配置好参数格式
后,就可以参照第 2.2.1 节说明,完成 CFCC 参数的声学模型训练。

3.4.2 Pocketsphinx 中 CFCC 特征参数提取


Pocketsphinx 包含两个源码包,分别是 Pocketsphinx 和 Sphinxbase,Sphinxbase 中包 含语音识别算法需要的基本 API 函数,例如:语音信号的 I/O 接口操作、语音信号的前 端处理程序、MFCC 参数计算函数和字典搜索算法等;Pocketsphinx 则提供语音识别程 序的主函数和一些支撑函数的具体实现方法。利用 CFCC 参数替换 MFCC,主要工作在 Sphinxbase 中完成。
在 Pocketsphinx 中,包含数个可以独立运行的程序,用以完成不同的工作。例如: Pocketsphinx_batch 用于从文件读取语音数据,并进行特征提取和语音识别;Pocketsphin- x_continuous 用于直接从麦克风获取音频数据,并进行语音识别。本文采用实时语音识
别程序 Pocketsphinx_continuous。其伪代码结构示意图如图 3.13 所示。

continuous.c ->ad_open_dev();
->cont_ad_read();
->ps_process_raw();

Pocketsphinx

->ps_get_hyp();

acmod.c ->acmod_process_raw();
->acmod_process_feat();


fe_interface.c ->fe_process_frames();



Sphinxbas e

fe_sigproc.c ->fe_read_frame();
->fe_write_frame();
->fe_mel_spec();
->fe_mel_cep();



图 3.13 Pocketsphinx_continuous 伪代码示意图
Fig. 3.13 Pocketsphinx_continuous pseudocode diagram
Pocketsphinx_continuous 程序可以实时从麦克风获取音频数据、提取特征并进行解 码。本文根据图 3.13 对代码进行分层讲解。
第一:continuous.c 中包含四个主要函数,分别完成打开音频设备、读取音频数据、 特征参数提取、模式匹配功能。即语音特征参数提取主要由函数 ps_process_raw()完成。 第二:acmod.c 中包含两个主要函数,将被 ps_process_raw()调用。第一个函数主要 用于确定获取的语音中是否为有效语音,并将实时读取的语音片段拼接成完整的语音数 据。第二个函数则进行特征参数提取工作,它还将进一步调用完成不同环节工作的子函


数。
第三:进行特征提取时,acmod.c 将调用 SphinxBase 软件包中提供的基本 API 函数, 例如 acmod_process_feat()将调用 fe_interface.c 中的 fe_process_frames()函数。
第四:fe_sigproc.c 文件则是 Pocketsphinx 的默认特征 MFCC 提取的具体代码实现。 要完成参数替换,不但要了解程序的组织结构还要了解程序的数据传递过程。在 Sphinx 中封装了大量的结构体,以便于对不同类型、不同功能的数据进行管理。本文中 的 fe_process_frames()函数将提取的语音特征参数保存到 acmod_s 结构体中,并最终被
ps_process_raw()函数作为计算结果返回。acmod_s 结构体的定义为:

struct acmod_s {

/* Global objects, not retained. */

cmd_ln_t *config;/**< Configuration. */

logmath_t *lmath;/**< Log-math computation. */

glist_t strings;/**< Temporary acoustic model filenames. */

/* Feature computation: */

fe_t *fe;/**< Acoustic feature computation. */

feat_t *东fcb;

北/**<大Dynamic feat学ure computation. */

/* Utterance processing: */

mfcc_t **mfc_buf;/**< Temporary buffer of acoustic features. */

mfcc_t ***feat_buf;/**< Temporary buffer of dynamic

matlab程序:
  1. %文件说明:计算CFCC参数
  2. %功能说明:由原始语音计算CFCC参数,包括预处理,AT变换,后期计算等。
  3. %输出参数:Fys ->M个通道滤波器的FFT变换参数输出,长度为N(不包括对称部分长度)
  4. %输入参数:fL    ->滤波器组的最低频率滤波器的中心频率
  5. %         fc    ->当前滤波器的中心频率
  6. %         N     ->计算点数(不包括对称部分长度)
  7. %         alf   ->参看CFCC论文
  8. %         bera  ->参看CFCC论文
  9. %         thyta ->相位
  10. %编写作者:阿呆-东北大学-talon56@1163.com
  11. %编写时间:2013-4-3
  12. %其他说明:版权所有,原创作品,分享大家,请尊重他人劳动成果,参考标明参考文献,谢谢

  13. function Y = adai_CFCC(sig,fL,N,alf,beta,thyta)
  14. sig_preemphasis = filter([1-0.9375],1,sig);              %预加重
  15. %sig_preemphasis = sig;
  16. coeff = adai_AT(sig_preemphasis,fL,N,alf,beta,thyta);   %提取AT变换后的参数


  17. cms = 0;    %倒谱均值减,本文只做实验对比使用
  18. if cms == 1
  19.     w=200;
  20.     n_length = size(coeff,2);
  21.     if n_length > w
  22.         c_frame=coeff(:,1:w);
  23.         c_average=mean(c_frame,2);
  24.         for i=1:(w/2)
  25.             coeff(:,i)=coeff(:,i)-c_average;
  26.         end
  27.         for i=(w/2+1):(n_length-w/2)
  28.             c_frame=c_frame(:,2:w);
  29.             c_frame=[c_frame,coeff(:,i+w/2)];
  30.             c_average=mean(c_frame,2);
  31.             coeff(:,i)=coeff(:,i)-c_average;
  32.         end
  33.         for i=(n_length-w/2+1):n_length
  34.             coeff(:,i)=coeff(:,i)-c_average;
  35.         end
  36.     end
  37. end

  38. h = abs(coeff).^ 2;

  39.                     
  40. for i = 1:size(h,1)         %模仿毛细胞窗口,本文为固定窗长
  41.     for j = 1: (floor(size(h,2)/320)-1)
  42.         s(i,j) = (1/320)*sum(h(i,(320*(j-1)+1):320*j+1));
  43.     end
  44. end

  45. y = s .^ (1/3); %取立方根

  46. select = 1;     %余弦变换,为什么可选则忘了怎么回事了
  47. if select==1
  48. n_channel=size(y,1);
  49. cfcc = [];
  50. x=(0:n_channel-1);

  51. for i = 1: size(y,2)
  52.     for u = 0:(n_channel-1)
  53.         cos_n = [];
  54.         cos_n = [cos_n,cos(2*(x+1)*pi*u/(2*n_channel))];
  55.         cfcc(i,u+1) = sqrt(2/size(y,1))*sum(y(:,i).*cos_n');
  56.     end
  57. end

  58. elseif select ==2
  59.     ii=(0:size(y,1)-1);
  60.     cfcc = [];
  61.     %cfcc_one_filter = [];
  62.     for i = 1: size(y,2)
  63.         for n = 1:17
  64.             cos_n = [];
  65.             cos_n = [cos_n,cos(pi*(n-1)*(ii-0.5)/size(y,1))];
  66.             cfcc(i,n) = sqrt(2/size(y,1))*sum(y(:,i).*cos_n');
  67.         end
  68.     %  cfcc = [cfcc;cfcc_one_filter];
  69.     end
  70. end

  71. sin_up =  1;        %升半正弦提升,可选,为0时略过此步,本文只做实验对比使用
  72. if sin_up == 1
  73.     w = [];
  74.     w = [w,0.5+0.5*sin(pi*(x)/n_channel)];
  75.     for i = 1:size(cfcc,1)
  76.         cfcc(i,:) = cfcc(i,:).*w;
  77.     end
  78. end

  79. Y = cfcc;

  80. debug = 1;
  81. if debug == 1
  82. figure;
  83. mesh(s);
  84. title('根据计算毛细窗口后的数据绘制所得');
  85. figure;
  86. mesh(y);
  87. title('根据进行非线性响度变换后的数据绘制所得');
  88. figure;
  89. mesh(cfcc);
  90. title('根据最终获得的CFCC参数绘制所得');
  91. end
复制代码
  1. %文件说明:构建AT变换滤波器
  2. %功能说明:用于构建一个滤波器
  3. %输出参数:phy ->单通道滤波器的FFT变换参数输出,长度为N(包括对称部分长度)
  4. %输入参数:fL    ->滤波器组的最低频率滤波器的中心频率
  5. %         fc    ->当前滤波器的中心频率
  6. %         N     ->计算点数(包括对称部分长度)
  7. %         alf   ->参看CFCC论文
  8. %         bera  ->参看CFCC论文
  9. %         thyta ->相位
  10. %编写作者:阿呆-东北大学-talon56@163.com
  11. %编写时间:2013-4-3
  12. %其他说明:版权所有,原创作品,分享大家,请尊重他人劳动成果,参考标明参考文献,谢谢

  13. function phy = adai_AT_one_filter(fL,fc,N,alf,beta,thyta)

  14. a = fL/fc;
  15. b = 0;

  16. filter=[];
  17. for i = 1:N;
  18.     t = i/16000;
  19.     if t>=0
  20.         u=1;
  21.     else
  22.         u=0;
  23.     end
  24.     fy1 = 1/sqrt(abs(a));
  25.     fy2 = ((t-b)/a)^alf;
  26.     fy3 = exp(-2*pi*fL*beta*((t-b)/a));
  27.     fy4 = cos(2*pi*fL*((t-b)/a)+thyta);
  28.     fy = fy1*fy2*fy3*fy4*u;
  29.     filter(i,:) = fy*100;
  30. end



  31. debug = 0;
  32. if debug == 1
  33. figure;
  34. plot(filter);   %输出滤波器的冲激响应波形
  35. axis([1 N min(filter) max(filter)]);

  36. elseif debug == 2
  37. figure;
  38. plot(20*log10(abs(fft(filter))));   %输出滤波器的频率响应波形
  39. axis([1 N min(20*log10(abs(fft(filter)))) max(20*log10(abs(fft(filter))))]);

  40. end;

  41. phy = filter;
复制代码
  1. %文件说明:构建AT变换滤波器组
  2. %功能说明:用于构建滤波器组
  3. %输出参数:Fys ->M个通道滤波器的FFT变换参数输出,长度为N(不包括对称部分长度)
  4. %输入参数:fL    ->滤波器组的最低频率滤波器的中心频率
  5. %         fc    ->当前滤波器的中心频率
  6. %         N     ->计算点数(不包括对称部分长度)
  7. %         alf   ->参看CFCC论文
  8. %         bera  ->参看CFCC论文
  9. %         thyta ->相位
  10. %编写作者:阿呆-东北大学-talon56@163.com
  11. %编写时间:2013-4-3
  12. %其他说明:版权所有,原创作品,分享大家,请尊重他人劳动成果,参考标明参考文献,谢谢

  13. function Fys = adai_AT_filterbank(fL,N,alf,beta,thyta)
  14. %fL = 200;
  15. %fc = 200;
  16. %N = 1024;
  17. %alf = 3;
  18. %beta = 0.2;
  19. %thyta = 0;

  20. %200 250  
  21. %fc = [350 450 570 700 840 1000 1170 1370 1600 1850 2150 2500 2900 3400 4000];
  22. fc=[250 350 450 570 700 840 1000 1170 1370 1600 1850 2150 2500 2900 3400 4000];

  23. Fys = [];       %保存滤波器组的时域波形
  24. Fys_fft = [];   %保存滤波器组的频域波形
  25. for i = 1:length(fc)
  26.     Fy = adai_AT_one_filter(fL,fc(i),N,alf,beta,thyta);
  27.     Fys = [Fys;Fy'];
  28.     Fy_fft = fft(Fy);
  29.     %Fy_fft = Fy_fft/max(abs(Fy_fft));   %归一化
  30.     Fys_fft = [Fys_fft;Fy_fft'];
  31. end

  32. figure;
  33. plot(Fys(1,:));
  34. title('第一通道滤波器的冲激响应');
  35. debug = 1;
  36. if debug ==1
  37. figure;
  38. disp_Fys_fft = 20*log10(abs(Fys_fft'));
  39. plot(disp_Fys_fft);
  40. title('滤波器组的频率响应');
  41. axis([1 N/2 -120 -60]);
  42. %axis([1 N/2 min(disp_Fys_fft(:)) max(disp_Fys_fft(:))]);
  43. end
复制代码
  1. %文件说明:对输入信号进行AT变换
  2. %功能说明:计算各个滤波器的输出系数
  3. %输出参数:coeff ->M个通道滤波器的输出系数(总长度为sig长度减去N)
  4. %输入参数:sig  ->变换前的数据(一般认为已经过预处理)
  5. %         fL    ->滤波器组的最低频率滤波器的中心频率
  6. %         N     ->计算点数
  7. %         alf   ->参看CFCC论文
  8. %         bera  ->参看CFCC论文
  9. %         thyta ->相位
  10. %编写作者:阿呆-东北大学-talon56@163.com
  11. %编写时间:2013-4-30
  12. %其他说明:版权所有,原创作品,分享大家,请尊重他人劳动成果,参考标明参考文献,谢谢

  13. function coeff = adai_AT(sig,fL,N,alf,beta,thyta)


  14. phy = adai_AT_filterbank(fL,N,alf,beta,thyta);      %构建听觉变换滤波器组
  15. n_channel = size(phy,1);


  16. filters_output = [];            %本文根据卷积定义进行小波变换运算,运算量较大,在利用C重写时,可进行优化
  17. for j = 1 : n_channel
  18.     one_filter_output = [];
  19.     for i = 1 : length(sig)-N
  20.         frame = sig(i:i+N-1);
  21.         bb = sum(frame'.*phy(j,:));
  22.         one_filter_output(i,:) = bb;
  23.     end
  24.     filters_output = [filters_output;one_filter_output'];
  25. end

  26. coeff = filters_output;
复制代码

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:199382 发表于 2017-5-11 08:20 | 只看该作者
挺不错
回复

使用道具 举报

板凳
ID:220823 发表于 2017-7-19 17:46 | 只看该作者
请问gammachirp部分的代码能共享一下吗
回复

使用道具 举报

地板
ID:258863 发表于 2017-12-7 22:35 | 只看该作者
写得不错
回复

使用道具 举报

5#
ID:335182 发表于 2018-5-21 20:05 | 只看该作者
大神,gammatone滤波器的特征参数是怎么提取出来的呀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表