音频信号的分类与分割

更新时间:2024-06-17 14:04:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

哈 尔 滨 理 工 大 学

毕 业 设 计

题 目: 音频信号的分类与分割 院 系: 电气与电子工程学院 姓 名: 指导教师: 系 主 任:

2011年6月23日

哈尔滨理工大学学士学位论文 音频信号的分类与分割

摘要

随着计算机技术、网络技术和通讯技术的不断发展,图像、视频、音频等多媒体数据已逐渐成为信息处理领域中主要的信息媒体形式,其中音频信息占有很重要的地位。同时,由于信息获取的方式、手段和技术的不断进步和多样化,使得信息数据量以极高的速度增加,为有效的处理和组织信息带来了挑战,而信息有效的处理和组织是深入分析和充分利用的前提。

原始音频数据是一种非语义符号表示和非结构化的二进制流,缺乏内容语义的描述和结构化的组织,给音频信息的深度处理和分析工作带来了很大的困难。如何提取音频中的结构化信息和内容语义是音频信息深度处理、基于内容检索和辅助视频分析等应用的关键。音频分类与分割技术是解决这一问题的关键技术,是音频结构化的基础。

本文介绍了在MATLAB环境中如何进行语音信号采集后的时频域分析处理,并通过实例分析了应用MATLAB处理语音信号的过程。

本文根据模式识别理论分析了音频分类与分割的技术流程,同时讨论了其中涉及的相关技术;介绍了特征分析与抽取,以及采用的相关音频处理技术。

关键词 MATLAB;语音信号;特征分析

- I -

哈尔滨理工大学学士学位论文 The classification and segmentation of the Audio

Abstract

With the continually evolving of computer technology, network technology and communication technology, images, video, audio and other multimedia data in the field of information processing has become the main form of information media, audio information plays an especially important role.

At the same time, due to the way access to information, tools and technology continues to progress and diversify, the amount of data information increase at very high speed, which has brought challenges for

efficient

processing

and organizing

of

the

information ,

and

effective processing and organization of i information are premise of analysis and full use of the .

The original audio data is a non-semantic notation and unstructured binary stream, lack of content and structure of semantic description of the organization, which has led to great difficulties to the depth of audio information processing and analysis. How to extract structured information in audio and audio information content is the key for the depth of semantic processing, video content-based retrieval and analysis applications supporting. Audio classification and segmentation is a key technology to solve this problem is the structural basis for the audio.

This article describes how the MATLAB environment for voice signal collected after the time-frequency domain analysis and processing, and analysis of the application by example MATLAB to handle voice signals.

Our theoretical analysis is based on pattern recognition, audio classification and segmentation of the technical process, and involving the related

- II -

哈尔滨理工大学学士学位论文 technologies discussed; We describe the characteristics analysis and extraction, and to the corresponding audio processing technology

The last chapter involves the summary and evaluation all the work of the paper, and this research were discussed for future.

Keywords:MATLAB;Voice signal; Characteristics

- III -

哈尔滨理工大学学士学位论文 目录

摘要 ....................................................................................................................... I Abstract ............................................................................................................... II

第1章 绪论 ........................................................................................................ 1

1.1 研究背景 ................................................................................................ 1 1.2 语音信号的采集 .................................................................................... 3

1.2.1 预加重处理 .................................................................................. 3 1.2.2 切分与加窗处理 .......................................................................... 3 1.3 研究的主要内容 .................................................................................... 4 第2章 音频分类与分割技术研究现状 ............................................................ 5

2.1 音频语义内容分析 ................................................................................ 5 2.2 层次化音频结构分析框架 .................................................................... 6 第3章 音频信号特征的提取 ............................................................................ 8

3.1 语音端点检测的基本方法 .................................................................... 8

3.1.1 短时加窗处理 .............................................................................. 8 3.1.2 短时平均能量 .............................................................................. 8 3.2 短时平均过零率 ................................................................................... 11 3.3 基于能量和过零率的语音端点检测 .................................................. 14 第4章 语音信号的短时频阈分析 .................................................................. 16

4.1 语音信号的快速傅里叶变换 .............................................................. 16 4.2 临界频带谱平坦测度函数计算 .......................................................... 18 4.3 基于短时能量比的语音端点检测算法的研究 .................................. 19 4.4 音频信号的功率谱分析 ...................................................................... 20 4.5 音频信号的子带熵分析 ...................................................................... 21 结论 .................................................................................................................... 22 致谢 .................................................................................................................... 23 参考文献 ............................................................................................................ 24 附录A ................................................................................................................ 26 附录B ................................................................................................................ 33

- IV -

哈尔滨理工大学学士学位论文 第1章 绪论

随着计算机技术和信息技术的发展,语音交互已经成为人机交互的必要手段,而语音信号的采集和处理是人机交互的前提和基础。Matlab是美国Math Works公司推出的一种面向工程和科学计算的交互式计算软件,它以矩阵运算为基础,把计算、可视化、程序设计融合到了一个简单易用的交互式工作环境中。同时由于Matlab是一个数据分析和处理功能十分强大的工程实用软件,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。

语音端点检测就是检测语音信号的起点和终点,因此也叫起止点识别。它是语音处理技术中的一个重要方面,其目标是要在一段输入信号中将语音信号同其它信号(如背景噪声)分离开来。在语音识别中,一个关键问题就是如何将语音信号精确地检测出来,为获得准确的识别提供前提。本文作者在进行语音识别算法的研究过程中在对一种经典的端点检测方法—Lawrence Rabiner提出的以过零率ZCR和能量E为特征的起止点检测方法进行研究之后,针对具体的应用提出了几点改进,并且达到了较好的效果。 在许多实际应用中,如语声应答系统、说话人识别系统和语音识别系统等,都要求首先对系统的输入信号进行判断,准确找出语音段的起始点和终止点。MATLAB是一门计算机程序语言,将数值计算和可视化环境集于一体,并提供很多功能强大的函数,广泛应用于科学计算和仿真。利用其中的语音处理工具箱Voicebox,可以实现语音信号的端点检测。

音频分类与分割是音频结构化的基础,是音频内容分析,检索和深度处理的前提。相对于多媒体研究领域内的图像和视频处理技术,音频处理技术还很不成熟,音频分类算法在人工智能、机器学习技术的推动下发展迅速,但依然面临很多挑战,目前还没有适合于实际应用的完善的音频分类与分割系统。

1.1 研究背景

随着计算机技术、网络技术和通讯技术的不断发展,图像、视频、音频等多媒体数据已逐渐成为信息处理领域中主要的信息媒体形式,其中音频信息占有很重要的地位。同时,由于信息获取的方式、手段和技术的不断进步和多样化,使得信息数据量以极高的速度增加,为有效的处理和组织信息带来了挑战,而信息有效的处理和组织是深入分析和充分利用的前提。如何满足对海量音频信息进行处理、组织和分析、利用的需求是目前信息处理领域中的一个重要课题。传统的信息处理面向的对象主要是结构化数据,结构化数据具有以下特点:

- 1 -

哈尔滨理工大学学士学位论文 ? 数据个体间相互独立,

? 特征易于计算机表示,

? 包含的信息可以直接从其物理表示中提取。

当图像、声音、动态视频等多媒体信息引入计算机之后,可以表达的信息范围大大扩展,但同时也带来许多新的问题。多媒体数据是一种非结构化数据,具有信息关联度大、数据结构复杂、数据量大、媒体处理要求高等特点。

原始音频数据除了含有采样率、量化精度、编码方法等有限的注册信息外,本身仅仅是一种非语义符号表示和非结构化的二进制流,缺乏内容语义的描述和结构化的组织,具有信息关联度大、数据结构复杂、数据量大、处理要求高等特点,给音频信息的深入处理和分析工作带来可很大的困难,使音频的检索和内容过滤等应用受到了极大的限制,如何提取音频中的结构化信息和内容语义,使得无序的音频数据变的有序是音频信息深度处理、分析和基于内容检索的关键,而音频分类与分割技术就是解决这一问题的关键技术,是音频结构化的基础。

首先,利用音频分类与分割可以实现音频的简单检索。如查找一段男声语音、女声语音;检索音乐等。

其次,音频分类与分割是音频深度处理的基础和前提。如:对于现有的语音识别系统,其对输入语音的要求较高,要求输入信号具有较高的信噪比。而现实中的音频大多是由音乐、噪声、纯语音等多种类型的声音连接而成,如果不对音频流预先分割并提取出纯语音段,必定会对语音识别系统的效能产生严重的影响,降低识别结果的可用性。

第三,视频信号自动切分和分类是多媒体应用领域一个重要的课题(1)。由于受技术发展的限制,单独依靠现有的图像和视频处理技术还不能使计算机“理解”视频的内容,视频镜头切分精确度也不高,不能对故事单元进行基于内容的分类。如果利用音频的分类与分割技术对视频流所对应的音频进行分割,利用较实用的语音识别技术对其中的纯语音进行语音识别,利用已经比较成熟的全文检索技术对语音识别结果进行处理,提取文本摘要,则可以较好地解决这些问题。例如,利用音视频编辑的领域知识和一些基本规则,通过对音频流恰当的分割,可以辅助视频的切分。如果音频的类型没有变化,其对应的视频可以不进行切分处理,因为其中一般不包含有故事单元的切分点;对新闻视频而言,镜头的切分点主要集中在男女声变化点以及静音段上。这些知识规则的使用可以大大提高视频的切分效率和准确率。

第四,音频分类与分割在一定程度上实现了音频流的结构化,为在更高语义层次上实现音频内容结构化提供了基础。分割的结果是带有语义的,但这个层次上的语义是通用的、弱化的,用户可能还会对具有更高层语义的音频内容感兴趣(比如一段广播新闻音频,一段电视剧的对白)(2),分割

- 2 -

哈尔滨理工大学学士学位论文 的结果为实现更高语义层次上的音频结构化,建立音频低层结构单元和高层语义结构单元的关联提供的基础上。

综上所述,在目前的多媒体信息处理中,音频占有很重要的地位,但由于媒体源本身的特点和现有技术的制约,使得对音频信息的进一步分析利用受到了限制,而音频分类与分割技术可以很好解决这一问题,为音频结构化和音频信息深度分析和利用提供了坚实的基础。

1.2 语音信号的采集

Windows附件的娱乐中有个录音机程序,通过它可以驱动声片采集、播放和简单处理语音信号。为了清晰的阐明对语音信号进行频谱分析,首先使用Windows的录音机功能可以用麦克风直接录制一段声音,并保存为WAV 格式文件,供MATLAB 相关函数直接读取、写入或播放(6)。本文以WAV 格式语音信号作为分析处理的输入数据。例:在MATLAB中使用wavread函数读取录制得到的声音采样频率Fs为11kHz,且声音是8位单声道的声音文件“test.wav”。并利用wavplay函数播放声音,可清晰地听到语音。

原始音频往往含有尖锐噪音,会影响处理效果。同时音频处理的单位是帧,所以特征提取前,需要对原始音频数据做预处理,包括预加重、切分和加窗成帧(7)。

1.2.1 预加重处理

预加重处理可以减少尖锐噪声的影响,提升高频信号,x(n)为原始音频信号,处理后信号为y(n):

y(n)=x(n+1)-参数*x(n),参数通常取0.97或0.98.

1.2.2 切分与加窗处理

对预加重后的音频信号进行切分,将音频流切分成clip序列。然后对每个clip进行加窗处理,即用窗函数乘以y(n)形成帧,相邻帧间有一定的重叠部分。

音频数子处理中常用的窗是hanig窗,其表达式下(其中N为窗宽:)

?0.54?0.46/2?iN,0?i?N (1-1) w?n???0,其他?根据特征分析和抽取描述的结论,首先计算帧层次上的特征,然后在

此基础上抽取短时过零率、短时能量、FFT、低频能量比、子带熵、谱平坦测度以及功率谱密度的特征来构造特征集。

在特征抽取的基础上构造音频分类的特征集合。

- 3 -

哈尔滨理工大学学士学位论文 音频是一个非平稳随机过程,其特性是随时间变化的,但这种变化是很缓慢的。鉴于此,可以将音频信号分成一些相继的短段进行处理。这就是短时处理技术。这些短段一般长为20一30ms,称为音频帧,注意这里说的帧与视频流中帧的概念是不同的。相邻帧可以有部分重叠,每一帧可以看成是从一个具有固定特性的持续音频中截取出来的,这个持续音频通常认为是由该短段音频周期性重复得到的(8)。因此,对每个短段音频进行处理就等效于对持续音频的一个周期进行处理,或者说等效于对固定特性的持续音频进行处理。短时处理技术根据在研究域上的不同分为短时时域处理技术和短时频域处理技术。短时时域处理主要是计算音频的短时能量、短时平均幅度、短时平均过零率和短时自相关函数。这些计算都是以音频信号的时域抽样为基础的。短时频域处理主要是对各个短段音频信号进行频谱分析,因而又叫做短时傅立叶分析。

1.3 研究的主要内容

深入分析了本文提出的不同音频类别之间帧层次和clip层次上的区别性特征,详细研究了特征的计算方法和区别性机理,针对试验发现的误分类情况提出了四个新的特征。考察了不同特征集在本文提出的分类器上的分类性能。 论文结构:

本文共包括四章,后续章节基本上是按照上述研究内容逐一展开的。根据模式识别理论设计音频分类与分割的技术流程,同时讨论了其中涉及的相关技术;介绍了特征分析与抽取,以及采用的相关音频处理技术,最后一章总结和评价了论文的全部工作,并对未来的研究工作进行了展望。

- 4 -

哈尔滨理工大学学士学位论文 第2章 音频分类与分割技术研究现状

音频处理是一个涵义甚广的概念,包括音频数字信号处理、心理声学、语言学、声乐学以及语音信号处理技术、计算机技术和多媒体数据库技术等。音频处理己有很长的历史,并且取得了一定的成果。其主要领域是语音,对广义的声音研究得很少,对音频分类与分割技术的研究则是近几年才开始的。音频分类与分害d技术是音频深度处理的基础,它在视频自动处理系统和其他多媒体应用系统中有着广泛的应用(3)。对音频进行处理之前,通常要进行预处理,将音频流切分成时间长度较短的单元,所谓的音频分类就是指对这些音频单元类别进行识别的过程。从本质上讲音频分类是一个模式识别过程,包括特征抽取和分类两个基本过程。音频分割是在音频分类的基础上,从音频流中提取不同的音频类别,也就是说在时间轴上对音频流按类别切分,形成单一类别的小段音频。音频分类是音频分割的前提和基础,实现对音频流的基于类别的准确分割是最终目的。音频分类与分割技术研究是一个交叉学科的研究领域,它涉及许多相关的技术。与此相关的领域包括:人耳的听觉特征、信号与系统、数字信号处理、语音信号处理、模式识别、机器学习、认知科学、知识处理、人工智能、知识发现、数据挖掘等。目前,该领域的研究重点主要在三个方面: 1)音频特征分析与抽取;2)分类器的设计与实现;3)音频分割方法。

2.1 音频语义内容分析

音频的语义内容分析是指通过对音频数据的分析来获得音频中的一些特定语义内容。类别信息是音频数据的重要语义内容,它能够让用户对音频内容有一个全局概念上的认识,所以它通常是用户检索和浏览的首要依据。在音频处理领域,获取音频信息的渠道和手段多种多样,音频内容也千差万别,但不同内容的音频信息含有的音频类别可能相对固定层次化音频结构分析框架。

音频广播的音频内容通常具有一定的结构性,比如视频新闻伴随的音频通常先是一段片头声音(通常为音乐)(4),接着是主持人的口播语音段,最后是新闻内容(通常是含背景音的语音段或是环境声音),结构如下图所示

片头音 口播语音 新闻内容

图2-1 结构图

- 5 -

哈尔滨理工大学学士学位论文 本文中定义除语音、音乐、静音和噪音之外的声音为环境声音。主要分析音频来源和含有的类别信息。本文将音频分为:纯语音,带背景音的语音,音乐,环境音,噪音,静音等六类。

2.2 层次化音频结构分析框架

音频结构分析是指对音频作时域上的分割。结构分析的任务是将组成音频的音频帧序列分割成时间上连续的几个集合,每个集合是一个内容上相对独立的、连续的结构单元。时间粒度较小的结构单元,由于时间粒度过小,很难从中提取有价值的内容语义;时间粒度过大的结构单元,根据现有的技术对这样的结构单元直接处理是难于实现的。因此,音频结构分析应该集成不同时间粒度的结构单元,从低到高分层实现。

音频 音频高层语义音频镜头音频镜头 高层语义 音频镜头音频段1 音 频 音频段k 音频分割 音频帧1 音 频 音频帧k 音频分类 音频特征 特征抽取 图2-2 层次化音频结构图

本文定义如下具有不同时间粒度的音频语义单元。

音频帧(frame):音频是一个非平稳随即过程,其特性是随时间变化的,但这种变化是很缓慢的。鉴于此可以将音频段分为一系列相继短段进行处理,成为音频帧。

音频段(clip):由于音频帧的时间粒度太小,很难从中提取有意义的语义内容,所以需要在帧的基础上定义时间粒度更大的音频结构单元(通常

- 6 -

哈尔滨理工大学学士学位论文 比帧长大若干个数量级),本文称之为音频段(clip)(5)。clip由若干帧组成,时间长度一定是本文中音频分类的基本对象,具有一定语义,如语音clip,音乐clip等。clip的特征在音频帧特征的基础上计算得到。

音频镜头(short):这是从视频镜头引申过来的概念。由于dPi太短,不适合进行语义内容分析。本文中定义含有同种音频类别的音频结构单元为音频镜头,音频镜头由若干相同类别的dPi组成,时间粒度更大,时间长度不定,是音频分割的结果。具有一定的语义,如环境音镜头,音乐镜头等。

音频高层语义单元:由音频镜头的不同组合形成的具有完整丰富语义内容的音频结构单元。根据需要可以有多层。它的分析是以下层单元为基础的,是音频结构化的目标(高层语义单元的生成方法不在本文研究范围之内)。

上述这些结构单元是层次化音频结构组成要素,描述了音频结构化从低到高不断提升的过程。本文提出一种新的层次化音频结构如上图所示。音频帧和音频dPi是特征抽取对象,其中clip的特征在音频帧特征的基础上计算得到;音频段是音频分类对象,该层次上得到的是经过类别标注的音频clip序列;相同类别的。hp序列构成音频镜头,采用的相关技术是音频分割技术;音频clip和音频镜头都具有一定的语义,主要是类别信息。不同的音频结构的不同组合形成高层音频结构单元,是具有完整丰富语音内容的音频对象。

- 7 -

哈尔滨理工大学学士学位论文 第3章 音频信号特征的提取

音频特征分析与抽取是音频分类的基础,所选取的特征应该能够充分表示音频频域和时域的重要分类特性,对环境的改变具有鲁棒性和一般性。

特征抽取的基础是数字信号处理技术和信号系统理论,实际应用中特征抽取包括三个步骤:原始音频预处理,特征抽取和特征集的构造。

3.1 语音端点检测的基本方法

3.1.1 短时加窗处理

虽然语音信号是非平稳过程,是时变的,但是人的发音器官的肌肉运动速度较慢,所以可以将语音信号认为是局部平稳的或短时平稳。因此可以采用一个一定长度的窗函数来截取语音信号形成分析帧,即对语音数据加一个滑动的窗口。为了能够得到高的频率分辨率并克服泄漏现象,本文选择汉明窗(9)。汉明窗表达式如下,其中N为窗长:

?0.54?0.46cos?2?/?N?1??,0?n?N?1 (3-1) w?n????0,其他 窗函数的长度对能否反映语音信号的幅度变化起决定性的作用。如果N太大,窗函数等效于很窄的低通滤波器,此时信号的短时信息将缓慢变化,因而不能充分地反映波形变化的细节;反之,如果N太小,则信号的能量将按照信号波形的细微状况而很快地起伏。因此,通常认为一个语音帧内,应含有1~ 7个基音周期,在采样率为10kHz的情况下,N 选择在100~200量级是合适的。分帧可以是连续的,也可以是交叠的。为了使特征参数的平滑过渡,保证其连续性,分帧常采用交叠的。

3.1.2 短时平均能量

语音信号分为有声段和无声段,无声段就是背景噪声段。由于有声段的能量大于无声段,因此传统检测方法认为,在高保真度录音的环境中,只要计算输入信号的短时能量,就能够把有声段和无声段区分开来。

由于语音信号的能量随时间而变化,清音和浊音之间的差别想当显著。因此对短时能量和短时平均幅度进行分析,可以描述语音的这种特征变化情况。

定义n时刻某语音信号的短时平均能量En为 En?m????[x(m)w(n?m)]??2?m?n?(N?1)?[x(m)w(n?m)]n2 (3-2)

- 8 -

哈尔滨理工大学学士学位论文 式中N为窗长,可见短时能量为一帧样点值的平方和。特殊地,当窗函数为矩形窗时,有

En?也可以从另外一个角度来解释。 令h(n)=w2(n) 则 En?m?n?(N?1)?xn2(m) (3-3)

m????x??2(m)h(n?m)?x2(n)*h(n),此式可以理解为:首先语音信

号各个样点值平方,然后通过一个冲激响应为h(n)的滤波器,输出由短时能量构成的时间序列,如下图所示

X(n) ( · )X(n) h(n) 2En

图3-1 流程图

冲激响应h(n)的选择或者说窗函数的选择直接影响着短时能量的计算。若h(n)对x2(n)的平滑作用非常显著,使得短时能量几乎没多大变化,无法反应语音的时变特征。反之,若h(n)的序列长度过小,那么等效窗又不能提供足够的平滑,以至于语音振幅瞬时变化的许多细节仍然被保留了下来,从而看不出振幅包络的变化规律。通常N的选择与语音的基音周期相联系,一般要求窗长为几个周期的数量级。

下面给出matlab的实现过程

fid=fopen('D:/test.wav','rt'); x=fscanf(fid,'%f'); fclose(fid);

%计算N=200,帧移为100的语音能量

s=fra(200,100,x) %对输入信号进行分帧,其中帧长200,帧移100

s2=s.^2; %一帧内各样点能量 energy=sum(s2) %求一帧能量

subplot(211) %定义画图数量和布局 plot(energy) %画N=200的语音能量图

- 9 -

哈尔滨理工大学学士学位论文 xlabel('帧数')

ylabel('短时能量E')

legend('N=200') %曲线标识 %计算N=400,帧移为200的语音能量 s=fra(400,200,x) s2=s.^2; energy=sum(s2) subplot(212) plot(energy) ylabel('短时能量E')

legend('N=400')

其中fra()为分帧函数,其MATLAB程序如下:

function f=fra(len,inc,x) %对读入数据进行分帧,len为帧长,inc为帧重叠样点数

%x为读入语音数据 fh=fix(((size(x,1)-len)/inc)+1) %计算帧数

f=zeros(fh,len); %设一个零矩阵,行为帧数,列为帧长 i=1;n=1;

while i<=fh %帧间循环 j=1;

while j<=len %帧内循环 f(i,j)=x(n); j=j+1;n=n+1; end

n=n-len+inc; i=i+1; end

matlab仿真结果如下:

图3-2 语音信号的短时平均能量

- 10 -

哈尔滨理工大学学士学位论文 3.2 短时平均过零率

短时平均过零率是语音信号时域分析中的一种特征参数。它表示一帧语音信号波形穿过零电平的次数(10)。对于有时间横轴的连续语音信号,可以观察到语音的时域波形通过横轴的情况。在离散时间语音信号的情况下,如果相邻的采样具有不同的代数符号就称为发生了过零,因此可以计算过零的次数。单位时间内过零的次数就等于过零率。一段长时间内的过零率称为平均过零率。如果是正弦信号,其平均过零率就是信号频率的两倍除以采样频率,而采样频率是固定的。因此过零率在一定程度上可以反映信号的频率信息。语音信号不是简单的正弦序列,所以平均过零率的表示方法就不是那么确切。但由于语音是一种短时平稳信号,采用短时平均过零率仍然可以在一定程度上反映其频谱性质,由此可获得谱特性的一种粗略估计。短时平均过零率的定义为

Zn?m????|sgn[x(m)]|?sgn[x(m?1)]|w(n?m)|?|sgn[x(n)]?sgn[x(n?1)]|*w(n)??其中,sgn[ ]为符号函数,即

?1,0?n?N?1 (3-4) Sgn?x?n??????1,其他W(n)为窗函数,计算时常采用矩形窗,窗长为N。可以这样理解,当相邻两个样点符号相同时,|sgn[x(m)]-sgn[x(m-1)]|=0,没有产生过零;当相邻两个样点符号相反时|sgn[x(m)]-sgn[x(m-1)]|=2,为过零次数的两倍。 因此在同一帧(N点)的短时平均过零率时,求和后必须要除以2N。这样就可以将窗函数w(n)表示为

w?n??{在矩形窗条件下,上式可以化简为

1,0?n?N-12N (3-5) 0,其他1 Zn?2Nm?n?(N?1)?|sgn[x(m)]?sgn[x(m?1)]| (3-6)

n

其matlab代码实现如下: Guoling.m clear all

fid=fopen('D:/test.wav','rt') x1=fscanf(fid,'%f');

- 11 -

哈尔滨理工大学学士学位论文 fclose(fid);

x=awgn(x1,15,'measured'); %加入15db的噪声 s=fra(220,110,x); %分帧,帧移110 zcr=zcro(s); %求过零率 figure(1); plot(x);

title('原始信号'); xlabel('样点数'); ylabel('幅度'); figure(2); plot(zcr);

title('原始信号过零率'); xlabel('帧数'); ylabel('过零次数');

其中zcro( )为求过零率的函数,其MATLAB程序如下: %zcro.m

function f=zcro(x)

f=zeros(size(x,1),1); %生成全零矩阵 for i=1:size(x,1)

z=x(i,:); %提取一行数据 for j=1:(length(z)-1); if z(j)*z(j+1)<0; f(i)=f(i)+1; end end end

实现过程是首先分帧,然后计算过零率,得到过零率曲线。从下面仿真结果曲线上可以看出,音乐段的过零率的波动幅度相对较小,而说话段的波动幅度较大,而静音段的过零率几乎为0,如下图中的蓝色部分。

图3-3 过零率曲线

- 12 -

哈尔滨理工大学学士学位论文 因此,根据过零率是否大于0,来判断信号帧是属于静音段还是语音段(包括音乐段和说话段)。对判断结果进行中值滤波,去掉毛刺,结果为上图中红色部分。

上图中红色部分圈出的就是语音段,没圈中的就是静音段。然后还需要对语音段进行区分,即区分是音乐段还是说话段。

上图中蓝色部分可以看出,音乐段的过零率的波动幅度相对较小,而说话段的波动幅度较大,因此可对过零率曲线求方差,来判断是音乐段还是说话段。

另外对得到的过零率结果每10个点(可调)计算一次方差,得到过零率方差曲线如下图:

图3-4 过零率方差曲线

可以看到音乐段的过零率方差曲线数值相对于说话段明显小很多。因此,求每一段语音的过零率方差曲线的均值,然后根据均值大小即可判断出该段是属于音乐段或说话段。

最终判断结果如下图

图3-5 语音模型图

该图中1段表示语音段,2段表示说话段,仅有零值线的部分则为静音段。最终分割结果为: 音乐段: 14505ms 说话段时长:14625ms 静音段时长:4036.81ms

短时平均过零率可以用于语音信号清、浊音判断。语音产生模型表明,由于声门波引起了谱的高频跌落,所以浊音语音能量约集中在3khz以下。但是对于清音语音,多数能量却是出现在较高的频率上。所以,如果过零

- 13 -

哈尔滨理工大学学士学位论文 率高,语音信号就是清音,如果过零率低,语音信号就是浊音。但有的音,位于清音和浊音的重叠区域,这时,只根据短时平均过零率就不可能来明确地判断清音、浊音。

3.3 基于能量和过零率的语音端点检测

在复杂的应用环境下,从信号流中分辨出语音信号和非语音信号,是语音处理的一个基本问题。语音端点检测就是指从包含语音的一段信号中确定出语音的起始点。正确的端点检测对于语音识别和语音编码都有重要的意义,它可以使采集的数据真正是语音信号的数据,从而减少数据量和运算量并减少处理时间。判断语音段的起始点和终止点的问题主要归结为区别语音和噪声的问题。如果能够保证系统的输入信噪比很高(即使最低电平的语音的能量也比噪声能量要高),那么只要计算输入信号的短时能量就基本能够把语音段的背景噪声区别开来。但是,在实际应用中很难保证这么高的信噪比,仅仅根据能量来判断是比较粗糙的。因此,还需要进一步利用短时平均过零率来进行判断,因为清音和噪声的短时平均过零率比背景噪声的平均过零率要高出好几倍。本节介绍基于能量和过零率的语音端点检测方法——两级判别法及程序实现。 两级判别法采用双门限比较法: 1、第一级判决

?先根据语音短时能量的轮廓选取一个较高的门限T1,进行一次粗判:语音起止点位于该门限与短时能量包络交点所对应的时间间隔之外(即AB段之外)。

?根据背景噪声的平均能量确定一个较低的门限T2,并从A点往左、从B点往右搜索,分别找到短时能量包络与门限T2相交的两个点C和D,于是CD段就是用双门限方法根据短时能量所判断的语音段。 2、第二级判决

以短时平均过零率为标准,从C点往左和从D点往右搜索,找到短时平均过零率低于某个门限T3的两点E和F,这便是语音段的起止点。门限T3是由背景噪声的平均过零率所确定的。

这里要注意,门限T2,T3都是由背景噪声特性确定的,因此,在进行起止点判决前,通常都要采集若干帧背景噪声并计算其平均短时能量和平均过零率,作为选择T2和T3的依据。当然,T1,T2,T3三个门限值的确定还应该通过多次试验。

基于MATLAB程序实现能量与过零率的端点检测算法步骤如下:

?语音信号x(n)进行分帧处理,每一帧记为Si(n)=1,2,??,N,n为离散语音信号时间序列,N为帧长,i表示帧数。

- 14 -

哈尔滨理工大学学士学位论文 ?计算每一帧语音的短时能量,得到语音的短时帧能量:Ei=?si2(n)。

n?1N ?计算每一帧语音的过零率,得到短时帧过零率 Zi=?|sgn[Si(n)]-sgn[Si(n-1)]|。其中

n?1N?1,Si?n??0 (3-7) Sgn?Si?n??????0,Sin?0? ④考察语音的平均能量设置一个较高的门限T1,用以确定语音开始,

然后再根据背景噪声的平均能量确定一个稍低的门限T2,用以确定第一级中的语音结束点。T2=a1En,En为噪声段能量的平均值。完成第一级判决,第二级判决同样根据背景噪声的平均过零率Zn,设置一个门限T3,用于判断语音前端的清音和后端的尾音。?1,?1为经过大量实验得到的经验值。由于MATLAB代码较长,这里从略。

- 15 -

哈尔滨理工大学学士学位论文 第4章 语音信号的短时频阈分析

傅里叶频谱分析是语音信号频域分析中广泛采用的一种方法。语音波是一个非平稳过程,因此适用于周期、瞬变或平稳随机信号的标准傅里叶变换不能直接表示语音信号,而应该用短时傅里叶变换对语音信号的频谱进行分析,相应的频谱称为“短时谱”。进行频谱分析时,在时域数据进行短时FFT处理之前都要进行加窗处理。在FFT处理之后,普通频谱分析可以进行频域上的滤波处理,从而使频谱更加平滑。最后IFFT处理观察恢复后的时域信号图形,频谱分析过程(11)。傅里叶频谱分析的基础是傅里叶变换,用傅里叶变换及其反变换可以求得傅里叶谱、自相关函数、功率谱、倒谱。由于语音信号的特性是随着时间缓慢变化的,由此引出语音信号的短时分析。如同在时域特征分析中用到的一样,这里的傅里叶频谱分析也采用相同的短时分析技术。

信号x(n)的短时傅里叶变换定义为 Xn(e)?jwm????x(m)w(n?m)e???jwm (4-1)

jwX(e)的物理意义:可以从两个角度理解函数n第一种解释是,当n固定时,jwX(e)则是将窗函数的起点移至n0处截取信号x(n),nn=n 如再做傅里叶

0变换而得到的一个频谱函数。这是直接将频率轴方向来理解的。

另一种解释是从时间轴方向来理解,当频率固定时,例如w=wk,则

Xn(ejw)可以看作是信号经过一个中心频率为wk的带通滤波器产生的输出。

?jwme这是因为窗口函数W(n)通常具有低通频率响应,而指数对语音信号有

调制的作用,使频谱产生移位,即将频谱中对应于频率的分量平移到零频。

4.1 语音信号的快速傅里叶变换

傅里叶分析是分析线性系统和平稳信号稳态特性的强有力工具,它在

许多工程领域得到了广泛应用。它理论完善,具有快速算法,是语音信号处理的一个重要工具。语音信号本质上是非平稳信号,其非平稳特性是由发声器官的物理运动产生的。发声器官的运动由于存在惯性,所以可以假设语音信号在10-30ms这样短的时间段内是平稳的,这是短时分帧处理的基础,也是短时傅里叶分析的基础。短时傅里叶分析就是在基于短时平稳的

- 16 -

哈尔滨理工大学学士学位论文 假设下,用稳态分析方法处理非平稳信号的一种方法(12)。根据语音信号的二元激励模型,语音被看做一个受准周期脉冲或随机噪声源激励的线性系统的输出。输出频谱是声道系统的频率响应与激励源频谱的乘积,一般标准的傅里叶变换适用于周期及平稳随机信号的表示,但不能直接用于语音信号。因为语音信号可被看成短时平稳信号,所以可采用短时傅里叶分析。某一帧的短时傅里叶变化如下: Xn(e)=

jwm????x(m)w(n?m)e???jwm (4-2)

式中,w(n-m)是窗函数。不同的窗函数,可以得到不同的傅里叶变换结果。在式中,短时傅里叶变换有两个变量,即离散时间n及连续频率w,若令w=2πk/N,则可得到离散的短时傅里叶变换如下: Xn(e

j2πkN)=Xn(k)=

m?-??x(m)w(n-m)e??-j2πkmN,0<=k<=N-1 (4-3)

它实际上就是Xn(ejw)的频率的抽样。由上面两式可以看出:当n固定时,它们就是序列[w(n-m)x(m)]( ???m???)的傅里叶变换或离散傅里叶变

换;当w或k固定时,它们是一个卷积,这相当于滤波器的运算。因此,语音信号的短时频域分析可以解释为傅里叶变换或者滤波器。

MATLAB实现如下:

fid=fopen('D:/test.wav','rt'); %打开文件 y=fscanf(fid,'%f'); %读数据

e=fra(256,128,y); %对y分帧,帧长400,帧移200 ee=e(10,:); %选取第十帧 ee1=ee/max(ee); %幅值归一化 subplot(211);

plot(ee1); %画波形 xlabel('样点数'); %横坐标名称 ylabel('幅度'); %纵坐标名称 title('原始语音'); %文字标注 %矩形窗傅里叶变换

r=fft(ee,1024); %对信号ee进行1024点傅里叶变换 r1=abs(r); %对r取绝对值,r1表示频谱的幅度值 r1=r1/max(r1) %幅值归一化

yuanlai=20*log10(r1); %对归一化幅值取对数

- 17 -

哈尔滨理工大学学士学位论文 signal(1:256)=yuanlai(1:256); %取256个点,目的是画图的时候,维数一致

pinlv=(0:1:255)*8000/512 %点和频率的对应关系 subplot(212);

plot(pinlv,signal); %画幅值特性图 xlabel('频率/HZ'); ylabel('对数幅度/db'); title('加矩形窗时语音谱');

matlab仿真结果如下图:

图4-1 语音信号快速傅里叶变换谱分析

4.2 临界频带谱平坦测度函数计算

首先要对输入音频信号帧X进行时频分析,得到它的频域参数。目前音频编码算法通常采用MDCT对音频信号进行时频分析,得到MTCT变换系数(13)

。笔者所设计算法也是如此,并以MTCT变换系数为基础计算全局掩蔽门限,因为这样不需要像其他声学模型那样,必须计算FFT频域参数来求得声学模型的输出结果,在实际应用中也可以有效降低心理声学模型算法的复杂度。

谱平坦测度函数是用来确定音频信号某一频段音调特性的测度函数,它是该频段内频域参数几何平均与算术平均的比值,取值在0和1之间.当谱平坦测度函数的取值接近1时,表示该频段的频谱特性趋于平坦,反映了该频段的类噪声特性;当谱平坦测度函数的取值接近0时,表示该频段的频谱特性趋于尖锐, 反映了该频段的音调特性。

将输入音频信号帧X表示为x(i),0?i?L-1,其中L为帧长。用Y表示X的MDCT变换,那么在频域内就会有L个MDCT系数,用y(j)(0?j?L-1)表示,设在整个频段内共有M个临界频带,这M个临界频带的起始频点为Jk,0?k?M-1,则有J0=0,按照谱平坦测度函数的计算公式,临界频带的谱平坦测度函数可用下面公式计算:

- 18 -

哈尔滨理工大学学士学位论文 F(k)=(?y(j))j?JkJk?1?11/(Jk?1?Jk)Jk?1?11/[(?y(j))],0?k?M-1 (4-4) Jk?1?Jkj?Jk应用MATLAB测试wav文件的谱平坦度,仿真结果如下:

图4-2 测试文件的谱平坦测度曲线

谱平坦测度是分贝值,计算的是数据在频域谱上的平坦程度。分析谱平坦测度曲线可以发现,说话段的频域谱相对平坦,而音乐段和静音段则几乎是无穷大的值(因为无穷大,所以图上无法画出)。根据谱平坦测度曲线,可以非常准确地筛选出说话段。

4.3 基于短时能量比的语音端点检测算法的研究

由于在信号绝对幅度值变化的情况下,简单的能量检测将不再有效,而由于信号的能量集中在高频段,而噪声的能量主要集中在低频段,计算高频段和低频段信号的能量比值,该比值不会随着噪声绝对幅度的变化而线性地变化,所以可以用来检测语音和噪声。通过计算能量的高低频的比值,将计算得到的能量比值进行分析可以发现在语音段和噪声段有明显的差别。

图4-3 测试文件低频能量比(低频能量占总能量比值)曲线

从图中可以看到,大多数情况下,信号的低频能量占总能量的比例都保持在0.8以上,对音乐段来说尤其如此。而人说话的声音能量则主要集中在50~1000Hz的低频段。说话段与音乐段的区别在于,由于有清音的存在(音乐中也有清音,但是被音乐声淹没了),使得清音对应位置的低频能量比降低到0.2以下甚至接近0。因此,可在低频能量曲线的基础上,对其求方差,

- 19 -

哈尔滨理工大学学士学位论文 根据低频能量的方差值来区分说话段和音乐段。但是这种方法无法有效区分音乐段和静音段。

4.4 音频信号的功率谱分析

数字信号处理学科的一个很重要的部分就是频谱分析,因为在真实条件下获取的随机信号是有范围的,这样的信号求得的功率谱仅仅是实际功率谱的一个组成,因此用这种有限长度信号求取功率谱的方法叫做功率谱估计。它的作用时在频域内基于有限长信号获得混杂在干扰内的有效信号,与之对应,相关函数是基于有限长信号在时域内获得混杂在干扰里的有效信号。信号的功率谱估计可以表述随机离散随机信号的起伏变化状态。

离散的信号无法用和连续信号相同的方式表达,它不能通过数学函数式表示,一般它的描述是由一些平均统计量来完成的。另外,离散的随机信号是在时域内是没有范围的,并且它的能量值也是没有范围的,不符合傅氏变换的绝对可积约束,所以它不能进行傅氏变换。虽然这些离散的随机信号为时域不可测的,没有表达式,然而它们的自相关函数的表达式是在时域内存在的,所以它可以比较完善地表达它的平均统计量值。随机信号的功率谱估计和它的自相关函数存在傅氏变换对应的关系,能够使用功率谱密度估计随机信号的统计平均谱特性。

1、下面介绍一种常用的方法—直接(周期图)法

它把随机平稳的序列x(n)的N个采样数值x(看作是有限能量的,然Nn)后把采样点

傅氏变换获得功率谱估计,就是 x(Nn)? S(k)1|DFT[x(n)]|2,k?0,1,?,N-1 (4-5) N因为DFT[x(n)]以N为周期,所以求取的估计功率谱同样是周期为N,因此此种方案又被叫做周期图法。

因为它和随机信号的频域有着相互对应的联系,可以使用快速傅氏变换计算,所以这种方法被普遍地接受。然而它仅分析无限信号的一部分,相当于对无限信号施加了窗函数,获得有限信号函数。这同时相当于对自相关函数使用窗函数,让窗函数同功率谱卷积。这样的频域卷积会泄露频谱,从而导致较弱信号的主瓣被较强信号的旁瓣覆盖,进而是频谱失真模糊,降低周期图功率谱的分辨率。

下面是给定音频信号的功率谱估计

- 20 -

哈尔滨理工大学学士学位论文 图4-4 测试文件的功率谱密度曲线

从功率谱密度曲线上我们可以看到,静音段的功率谱密度为零,这样我们可以划分出静音段,然后将剩余的部分分别计算其谱平坦测度,根据谱平坦测度值中出现无穷大的概率来区分音乐段和说话段。这样即可实现非常准确的语音分割。

4.5 音频信号的子带熵分析

图4-5 测试文件的子带熵曲线

对子带熵曲线进行分析,可以发现音乐段和静音段的平均值都较高,而说话段的子带熵的平均值则相对较低;同时,说话段子带熵的波动幅度较大,因而方差也会更大。因此,可用子带熵的均值和方差筛选出说话段,但此种方法同样无法有效区分音乐段和静音段。

- 21 -

哈尔滨理工大学学士学位论文 结论

本文的研究主要从音频特征分析与抽取、音频分割方法两个方面开展的,所取得的成果丰富了音频处理的研究工作,虽然还有不足和有待改进之处,但随着研究的进一步深入,问题最终会得到解决,所取得的成果必将在实践中得到很好的应用。本文主要是基于高级面向对象开发语言MATLAB的基本特征,以及MATLAB强大的工具箱功能,实现信号的预处理、信号的时域处理和信号的频域处理。其中实现信号的时域处理过程中,设计了加窗处理;在信号频域处理过程中,实现对语音信号的频谱分析。同时,通过上述实例说明,基于MATLAB可以很好的达到对语音信号的频谱的分析处理。

本文实现了用短时过零率、短时能量、FFT、低频能量比、子带熵、谱平坦测度以及功率谱密度的分析等方法实现语音信号端点检测,经实验证明,这种方法很好地分离出了用于系统处理的语音信号,有效地减少语音信号处理的数据量和时间,对提高语音识别系统的辨识率具有重要的意义。

- 22 -

哈尔滨理工大学学士学位论文 致谢

在此论文撰写过程中,要特别感谢我的老师颜景斌对我的指导与督促,同时感谢老师的谅解与包容。没有老师的帮助也就没有今天的这篇论文。求学历程是艰苦的,但又是快乐的。

在这四年的学期中结识的各位生活和学习上的挚友让我得到了人生最大的一笔财富。在此,也对他们表示衷心感谢。

谢谢我的父母,没有他们辛勤的付出也就没有我的今天,在这一刻,将最崇高的敬意献给你们!

本文参考了大量的文献资料,在此,向各学术界的前辈们致敬!

- 23 -

哈尔滨理工大学学士学位论文 参考文献

1 刘庆升,徐霄鹏,黄文浩.一种语音端点检测方法的探究.计算机工程,2003,3:24~35

2 马鸿飞,夏雨,郭泽华.新型低复杂度心理声学模型.西安电子科技.大学

学报(自 然科学版),2010,10:22~45

3 王晴蔚.Matlab在语音端点检测系统中的应用.科技创新导报,2010,6(2):27~50

4 韩纪庆.语音信号处理[M].北京.清华大学出版社,2004,5:44~48 5 赵力.语音信号处理[M].北京.机械工业出版社,2003,3:25~40 6 赵淑敏.基于MATLAB实现对语音信号频谱分析.技术前

沿,2010,7(2):78~92

7 姚天任.数字语音处理[M].武汉.华中科技大学出版社,1991,4:56-87 8 刘卫国. MATLAB程序设计教程[M].北京.中国水利水电出版社,2005,7:49~76

9 张登奇,蒋敏.基于MATLAB的音频信号处理技术实现.电脑知识与技术,2009,2:33~59

10 戴元红,陈鸿昶,乔德江,李乐.基于短时能量比的语音端点检测算法的

研究.通信技术,2009,8(1):92~122

11 刘羽.语音端点检测及其在MATLAB中的实现.计算机时代,2005,8:44~89 12 何强,何英.MATLAB扩展编程[M].清华大学出版社,2002,4(9):88~143 13 果永振,何遵文.一种多特征语音端点检测算法及实现.通讯技术,2009,3:98~156 14 李强,赵伟.MATLAB数据处理与应用.国防工业出版社,2001,10:21~54 15 Rabiner L.Juang BH.Fundamentals of Speech Recognition. Prentice-Hall International, 1993,4:79~205

16 Karine Marguerite, Alice ARNOUT. Zurich:Swiss Federal Institude of Technology Zurich .From Patterns to Components,2004,5:59~211 17 Douglas C,Schmidt, Frank. and Middleware Buschman. Patterns. Framework, 2003,6:66~112

- 24 -

哈尔滨理工大学学士学位论文

- 25 -

哈尔滨理工大学学士学位论文 附录A

包括短时过零率、短时能量、FFT、低频能量比、子带熵、谱平坦测度以及功率谱密度的分析(14)。

function varargout = SpeechSeg2(varargin) gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @SpeechSeg2_OpeningFcn, ... 'gui_OutputFcn', @SpeechSeg2_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1}); end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

gui_mainfcn(gui_State, varargin{:}); end

% End initialization code - DO NOT EDIT

% --- Executes just before SpeechSeg2 is made visible.

function SpeechSeg2_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;

guidata(hObject, handles);

function varargout = SpeechSeg2_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;

function pushbutton5_Callback(hObject, eventdata, handles) global WAVFILE WAVALL FS NBITS N; global a flag; % flag:播放标志 flag=0;

- 26 -

哈尔滨理工大学学士学位论文 [filename, pathname, filterindex] = uigetfile('*.wav', '选择原始语音文件'); WAVFILE=[pathname filename];

%读取原始语音文件

[WAVALL,FS,NBITS]=wavread(WAVFILE); N=length(WAVALL);

%显示相关参数,包括:采样率、量化位数、通道数、时长 % 默认通道数应为1,不为1画图时会报错 set(handles.text29,'String',FS); set(handles.text31,'String',NBITS);

set(handles.text33,'String',min(size(WAVALL))); set(handles.text35,'String',N*1000/FS);

axes(handles.axes1); tt=1:N; tt=tt/FS;

H1=plot(tt,WAVALL); % disp(length(t)); axis([0 N/FS -1 1]);

% 分帧,用以计算过零率、能量和FFT frmlen=30*FS/1000; %帧长30ms frminc=frmlen/2; % 50% overlapping

sfrm=enframe(WAVALL,frmlen,frminc); [a b]=size(sfrm)

% set(handles.slider1,'Max',a); %slider1控制FFT结果一帧一帧地显示,其范围应为1~a

% set(handles.slider1,'Min',1); flow=zeros(a,1); he=zeros(a,1); msf=zeros(a,1); psd=zeros(a,1);

zcr=zeros(a,1); for i=1:a

flow(i)=sflow(sfrm(i,:),50,800,FS); %低频能量比 he(i)=she(sfrm(i,:)); %子带熵

msf(i)=smsf(sfrm(i,:)); %谱平坦测度

- 27 -

哈尔滨理工大学学士学位论文 psd(i)=spsd(sfrm(i,:),FS); %功率谱密度 zcr(i)=szcr(sfrm(i,:)); %过零率 end

zcrBigger=medsmooth((zcr>0)*200,15); % 静音段zcr几乎等于零,剔除,并对结果进行15点中值滤波 state=0;

xcount=0; %语音段的数目

for i=1:a %这个for循环对分割出来的语音段进行计数,比如测试语音

test.wav,得到的结果是4段,并记录每段的起止帧

switch state case 0

if(zcrBigger(i)>0) state=1; else

state=0; end

continue; case 1

if(zcrBigger(i)>0)

state=2; %连续两个点大于0了,表示确定进入一个语音段

xcount=xcount+1; xstart(xcount)=i-1; else

state=0; end

continue; case 2

if(zcrBigger(i)>0) %已经得到语音段起点,后面的点继续大于0,说明还在语音段中,继续保持状态2 state=2; if(i==a)

xend(xcount)=i; end else

state=3;%前一点为语音段,本点等于0,说明可能是静音了

- 28 -

哈尔滨理工大学学士学位论文 end

continue; case 3

if(zcrBigger(i)>0) %没能连续两点等于0,说明可能是误判,继续保持“在语音段中”的判决状态 state=2; else

state=0; %连续两点等于0,确定已离开语音段 xend(xcount)=i-1; end

continue; end end

zcrLen=10; %对zcr分帧的帧长 zcrInc=zcrLen/2;

zcrFrm=enframe(zcr,zcrLen,zcrInc); [zcra zcrb]=size(zcrFrm); zcrVar=zeros(zcra,1); for i=1:zcra

zcrVar(i)=var(zcrFrm(i,:)); %求zcr的方差 end

zcrVarPlot=zeros(a,1); for i=1:zcra

zcrVarPlot( (i-1)*zcrInc+1 : i*zcrInc )=ones(zcrInc,1)*zcrVar(i); if i==zcra

zcrVarPlot( (i-1)*zcrInc+1 : a )=ones(a-(i-1)*zcrInc,1)*zcrVar(i); end end

zcrVarPlot=zcrVarPlot.*zcrBigger/200; zcrVarEngAvr=zeros(xcount,1); zcrVarEngPlot=zeros(xcount,N); xtype=zeros(xcount,1);

MusicFrmNum=0; SilenceFrmNum=0; SpeechFrmNum=0; for i=1:xcount

zcrVarEngAvr(i)=sum( zcrVarPlot( xstart(i) : xend(i) ) )/( xend(i) - xstart(i) +1 );

- 29 -

哈尔滨理工大学学士学位论文

%求过零率方差曲线上每段语音内的均值

if( zcrVarEngAvr(i) > 300 ) %这里的1000是经验值 xtype(i)=2;

SpeechFrmNum = SpeechFrmNum + xend(i) - xstart(i) +1; else

xtype(i)=1;

MusicFrmNum = MusicFrmNum + xend(i) - xstart(i) +1; End

% 下面在axes1中给不同段着不同的颜色 axes(handles.axes1); hold on;

zcrVarEngPlot(i,(xstart(i)-1)*frminc+1:xend(i)*frminc+frmlen-frminc)= WAVALL( ( xstart(i)-1 )* frminc + 1 : xend(i)*frminc+frmlen-frminc ); if(xtype(i)==1)

plot(tt,zcrVarEngPlot(i,:),'r'); elseif(xtype(i)==2)

plot(tt,zcrVarEngPlot(i,:),'y'); end end

plot(tt,zeros(N,1),'b')

set(handles.text39,'String',MusicFrmNum*frminc*1000/FS); set(handles.text42,'String',SpeechFrmNum*frminc*1000/FS);

set(handles.text45,'String',(N-MusicFrmNum*frminc-SpeechFrmNum*frminc)*1000/FS);

% 画出低频能量比曲线 t=1:a;

axes(handles.axes2); plot(t,flow); axis tight;

% 画出子带熵曲线 axes(handles.axes3); plot(t,he); axis tight; % hold on;

- 30 -

哈尔滨理工大学学士学位论文 % hemean=swmean(he,10,5); % plot(t,hemean,'r');

% 画出谱平坦测度曲线 axes(handles.axes4); plot(t,msf);

axis([0 2210 -20 0]); % hold on;

% msfmean=swmean(msf,10,5); % plot(t,msfmean,'r'); axis tight

% 画出功率谱密度曲线 axes(handles.axes5); plot(t,psd); axis tight; % hold on;

% psdmean=swmean(psd,10,5); % plot(t,psdmean,'r');

function pushbutton6_Callback(hObject, eventdata, handles) global WAVALL FS player flag; if flag==1

resume(player); else

player=audioplayer(WAVALL,FS); play(player); flag=0; end

function pushbutton7_Callback(hObject, eventdata, handles) global player; stop(player);

% --- Executes on button press in pushbutton8.

function pushbutton8_Callback(hObject, eventdata, handles)

- 31 -

哈尔滨理工大学学士学位论文 global player flag; pause(player); flag=1;

- 32 -

哈尔滨理工大学学士学位论文 附录B

A MARKOV-CHAIN MONTE-CARLO APPROACH TO

MUSICAL AUDIO SEGMENTATION

Christophe Rhodes, Michael Casey ,Goldsmiths College, University of London

Queen Mary, University of London ABSTRACT

This paper describes a method for automatically segmenting and labelling sections in recordings of musical audio. Weincorporate the user’s expectations for segment duration asan explicit prior probability distribution in a Bayesian framework, and demonstrate experimentally that this method canproduce accurate labelled segmentations for popular music.

This paper describes a method for incorporating our prior expectations about the size of musical structures or segments into a system for producing labelled

segmentations

of

musical

audio.

Automatically-generated

segmentations have application in audio ?ngerprinting,content-based retrieval systems, summary generation and user interface provision for navigation in audio editors.Previous studies in segmentation have used various spectral features such as timbre or chroma to generate time series of feature vectors. We do not address the choice of audio features here, but instead examine the typical subsequent use of the series of vectors.Several studies [2, 5, 6, 7, 8] compute pairwise similar-ity matrices between feature vectors with some distance mea-sure for individual frames, then apply a ?lter of some form.Others

- 33 -

哈尔滨理工大学学士学位论文 (e.g. [4]) perform k-means clustering between frames,and then post-process this clustering by using an HMM withfewer states, or generate labels by using an HMM directly onthe feature vectors and then average over a window .These ?ltering or post-processing stages are introduced toreduce noise in the classi?cation, and to reintroduce the no-tion of temporal closeness which was lost in the clustering;ideally, the classi?cation would be informed of our expecta-tions and so not produce noise in the ?rst place, and would have temporal coherence built in.In our previous work [9] we have avoided the need fora post-processing stage by performing clustering with large (of the order of 3s) analysis windows, but this is an equally ad hoc way to address the expected scale of segment size, Abstract: An online model adaptation technique for music segmentation was proposed. A confidence measure derived from the recognition likelihoods was adopted for selecting the credible data. The selected data was then used for model adaptation. Compared to the pre-trained models, the adapted ones characterize the acoustic properties of the processing signals more accurately. It implies that higher segmentation accuracy can be achieved. A smoothing processing was applied to further reduce the short segment fluctuation errors from the recognition output. Experimental results show that the significant performance improvement due to the proposed algorithms.and does not address the issue of temporal closeness beyond This research was supported by EPSRC grant GR/S84750/01 (Hierar-chical Segmentation and Semantic Markup of Musical Signals).

Overview of our segmentation method.the coherence of an individual feature frame. We thereforeintroduce a prior probability distribution on the sizes of segments, and adjust the classi?cation algorithms to incorporatethis prior; this

- 34 -

哈尔滨理工大学学士学位论文 probability distribution explicitly encodes ourassumptions regarding

thesegmentation.This paper continues with a description of our method for generating labelled segmentations of audio in section 2; we present some empirical results in section 3, and draw conclusions in section 4.

The processing chain begins with a uniformly sampled monophonic audio signal (from a single channel, as far as that ispossible) and breaks it into a sequence of short overlappingfragments; our sample data was 16-bit mono at a 11.025kHzsample rate, and we used a window size of 400ms with ahop size of 200ms over these audio samples to generate aconstant-Q power spectrum with 112 th-octave resolution. Thispower-spectrum is log-normalized and 20 principal components are extracted, which along with the envelope magnitude form 21-dimensional feature vectors,

Our segmentation algorithm models a segment as a sequenceof samples of HMM state histograms drawn from a class-speci?c probability distributions, with the boundaries of thesegment being where the probability distribution changes; we can perform segmentation given a ?at priorprobability by performing deterministic annealing on

an Expectation-Minimization

optimization over frame label assignments and the class probability distributions.However, except for the case of overly large analysis win-dows (of the order of 3 seconds in [9]), this method with auniform prior p(c) fails to ?nd long segments correspondingto sections such as the verse or the chorus of songs; instead thesegmentations generated correspond to changes in low-levelaudio features themselves.In order to encode our interest in higher-level segmentsinto the segmentation algorithm, we incorporate an explicitnon-?at prior probability distribution p(c) on segmentationsinto the segmentation procedure. central

- 35 -

本文来源:https://www.bwwdw.com/article/32k3.html

Top