Page 75 - 201901
P. 75
第 38 卷 第 1 期 苗晓孔等: 采用骨导语音自适应的语句分割方法 71
2 改进的语句分割算法 长度 (单位:ms),ω 表示帧和秒的转换关系 (单位:
ms/帧),n 表示选取的随机语音段内能量出现能量
改进分割算法主要体现在两个方面:一是采用
峰的个数,κ 表示信号分帧时选取的帧移位置的大
骨导语音应对多种复杂噪声,提升算法抗噪性和
小,rand 表示随机生成的 (0,1] 区间上的数,通过
适应性;二是结合分段双门限检测和语音聚类等方
式 (1) 能够确定检测出语音起始端点后需要向后位
法实现语音分割,有效降低了传统固定阈值分割带
移的帧数。因为引入了 rand 随机量的生成,所以间
来的“一句分割成多句” 或“多句分为一句” 等问题。
隙起点与语音结束点恰好重合的概率大大降低。
在处理过程中还提出了一些其他改进步骤,如:引入
随机动态阈值、改善相似度度量方式以及自适应等 2.2 分段双门限检测
改进方案,最终从整体上提升了语音分割算法的准 双门限检测,是指通过设置检测门限的最低值
确度和鲁棒性。 和最高值来判定语音是否开始和结束。分段双门限
改进分割算法的基本流程如图 2 所示,针对改
则是为了有效应对语句内部间隙停顿和语句间间
进流程下面具体介绍各步骤实现方法。
隔类似情况下造成语句分割点误判的问题。简单来
ᣥКᤌ፞ ᖍԩᰤឦᮃ ηՂᮕҫ᧘ 说,就是为了防止因为语句内部间隙原因而将一句
ឦᮃηՂ ҫቔѬࣝ
话误分成两句话或多句话的问题。分段第二段采用
的检测方法与第一段相同,但是其在设置语音信号
ळКᬤԫ᧚
Ѭԥ᫃ᬍೝ 间隔中的静音帧数和随机参量做了调整,其计算公
ᒭᤠऄቫགೝ
式如下:
[ ]
ᐑዝѬౢ ߹ੇѬҟ length(S) 1
τ i = a × + × κ × rand. (2)
ωn 2
图 2 改进语音分割算法基本流程
由公式 (2) 可以看出,其主要是在对静音段帧
Fig. 2 The basic process of improving the speech
segmentation algorithm 数进行了一定程度上的减少,a 是一个比例系数,其
取值范围 (0,1],相关系数主要通过实验测试所得,
2.1 随机变量的自适应端点检测
本实验中取2/3。通过上述分段的两段检测,通常会
语音端点检测算法主要包括特征提取和端点
得到一段较长的语音和一段相对较短的语音段,在
判定两个环节 [10] 。传统的方法在特征提取时,提
连续语音中两者交替出现。
取单一的时域参数或频域参数,作为区分语音段与
噪声段的特征。本文在利用骨导语音良好的抗噪性 2.3 语音聚类
能的前提下,使用了短时能量和过零率时域融合的
当对说话人语音进行分割之后,输入音频被切
参数特征,克服了单一参数特征抗噪性差与区分性
分成了若干片段,通常希望分割后每个片段中只包
差的缺点,一定程度上提升了端点检测算法的准确
含一个人的一句话,而聚类就是将这些语音片段依
性 [2,11−12] 。但在连续语音分割时,因语句内容的长
次重新组合,把一句话的片段聚为一类。常见的聚
短不一,并且在一句话内部中也会产生停顿和间隙,
类策略有基于支持向量机、层次凝聚聚类等。层次
所以在进行端点检测时,还是会容易造成误检 (将
凝聚聚类是一种贪心聚类方式,在聚类的过程中把
语句内部的停顿作为新语句的起始点分割)。为了
相似度高的两个类别合并,简单高效,示意图如图 3
有效避免此类误检,引入随机变化的动态阈值进行
所示。
端点判定,将固定区间的截取变成动态区间的截取,
本文正是采用层次凝聚聚类方法,其具体实现
克服了固定阈值不能自适应环境的缺点,使端点检
步骤如下:
测算法适应性更强。其实现的具体方法如下:
(1) 将端点检测之后得到的语音片段作为初始
length(S)
τ i = + κ × rand, (1) 类别,对每个类别进行建模。
ωn
式 (1) 中,τ i 表示初始设置第 i 段中包含静音帧的 (2) 算出两两类别之间的相似程度,得到距离
数量值,length(S) 表示初始选取一段语音的时间 度量矩阵。