一种基于数字信号处理的语音变声方法.pdf

上传人:t**** 文档编号:4546411 上传时间:2018-10-19 格式:PDF 页数:7 大小:387.07KB
返回 下载 相关 举报
摘要
申请专利号:

CN03137014.4

申请日:

2003.06.19

公开号:

CN1567428A

公开日:

2005.01.19

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效|||公开

IPC分类号:

G10L13/00; G10L13/02

主分类号:

G10L13/00; G10L13/02

申请人:

北京中科信利技术有限公司; 中国科学院声学研究所

发明人:

李明; 刘建; 汪俊杰; 庹凌云; 颜永红; 孙宝海

地址:

100080北京市海淀区北四环西路21号

优先权:

专利代理机构:

北京泛华伟业知识产权代理有限公司

代理人:

王凤华

PDF下载: PDF下载
内容摘要

本发明公开了一种基于数字信号处理的语音变声方法,包括步骤(1)选取需要变声的原始语音信号;(2)得到原始语音信号的基音周期长度;(3)根据基音周期长度定位整个原始语音信号的每一个基音周期的位置;(4)在原始语音信号中的基音周期之间删除/插入基音周期,得到缩短/伸长的语音信号;(5)将缩短/伸长的语音信号线性伸长/压缩至与原始语音信号一致的长度,得到变声后的语音信号。本发明是基于数字信号处理的语音变声方法,该方法简单实用,运算量很小,适于在DSP芯片上实时实现,变声的语音的自然度很高。而且变声后的语音的长度与原始语音长度一致,有利于实时传送变声后的语音信号。

权利要求书

1: 一种基于数字信号处理的语音变声方法,包括如下步骤: (1)选取需要变声的原始语音信号; (2)当原始语音信号存在周期性时,计算其基频值,并计算与该基频值对应的 基音周期的长度;当原始语音中并不存在周期性时,在65Hz到500Hz之间取一频 率值,将该频率值对应的周期作为基音周期,将该频率值对应的周期长度作为基音 周期长度; (3)根据步骤(2)中得到的基音周期长度定位整个原始语音信号的每一个基 音周期的位置; (4)在原始语音信号中的基音周期之间删除/插入基音周期,得到缩短/伸长的 语音信号; (5)将步骤(4)中得到的缩短/伸长的语音信号线性伸长/压缩至与原始语音 信号一致的长度,得到变声后的语音信号。
2: 根据权利要求1所述的语音变声方法,其特征在于,在步骤(4)中是在原 始语音信号中的基音周期之间周期性地删除/插入基音周期。
3: 根据权利要求2所述的语音变声方法,其特征在于,当期望变声后语音的基 频是原始语音基频的p倍且p>1时,每隔(p-1) -1 个基音周期插入一个基音周期, 该被插入的基音周期是与插入点相邻的基音周期的一个复制。
4: 根据权利要求2所述的语音变声方法,其特征在于,当期望变声后语音的基 频是原始语音基频的p倍且0<p<1时,每隔(1-p) -1 个基音周期删除一个当前基音 周期。
5: 根据权利要求3所述的语音变声方法,其特征在于,1<p≤2。
6: 根据权利要求4所述的语音变声方法,其特征在于,0.5≤p<1。
7: 根据权利要求1所述的语音变声方法,其特征在于,在步骤(5)中的线性 伸长/压缩方法为: 原始语音的长度为N、步骤(4)得到的缩短/伸长的语音信号的长度为M,则 伸缩比为r=M/N;所述缩短/伸长的语音信号的序列为x(m),其中1≤m≤M;令 变声后的语音信号的序列为y(n),其中1≤n≤N; 令A n =nr, C n =B n +1,其中 是不大于A n 的最大整数;则 y(n)=x(B n )+(A n -B n )[x(C n )-x(B n )],其中y(n)是变声后语音序列的第n个点。

说明书


一种基于数字信号处理的语音变声方法

    【技术领域】

    本发明涉及一种语音变声方法,更具体地说,本发明涉及一种基于数字信号处理的语音变声方法。

    背景技术

    基频和共振峰是语音中两个非常重要的特征。基频是发浊音时声带振动的频率,基频的高低与说话人的性别直接相关,一般来说男声的基频比较低,女声的基频比较高。此外,年龄对于基频的高低也有一定影响,老年人地基频比年青人的基频低,年青人的基频要比儿童的基频低。所以通过改变基频,就能改变语音的效果,影响人对说话人年龄甚至性别的判断。

    共振峰是指声门波在声道里的共鸣频率。共振峰与声道的长度有很大的相关性,声道越长共振峰的频率越高,反之亦然。相对来说,男子的声道比女子的声道要长一些,所以男声的共振峰频率比女声的共振峰频率相对也要高一些。因此通过改变共振峰,能够影响人对说话人的判断。

    对于修改共振峰的频率,大部分方法都是基于参数合成的算法。这些方法普遍存在的问题是运算量比较大,需要人工干预,合成的语音的自然度比较差。

    对于改变基频,目前已经有了很多方法。应用比较广泛的有PSOLA算法(PitchSynchronous Overlap and Add),混合谐波随机模型法(Hybrid Harmonic/StochasticModel),自回归线性预测系数法(Auto-Regressive LPC)等方法。PSOLA算法因为方法简单,运算量小,而且合成语音的自然度很高,所以应用最为广泛。不过由于PSOLA算法本身的局限性,当需要改变基频范围比较大时,语音就会产生相当多的混叠现象,造成很大的噪声。其他两种方法改变基频后语音的自然度要差一些,而且这两种方法的运算量都比较大,在DSP芯片实时实现会有一定的困难。此外,这些方法都会改变原始语音的长度,这对于变声后语音的实时传送会造成很大的问题。而且现有的变声方法基本上都采用的是模拟电路的方法,不适合于在数字信号处理器(DSP)上实现。

    【发明内容】

    本发明的目的在于提供一种改进的语音变声方法,通过改变语音的基频和共振峰频率来获得变声的效果;本发明的目的还在于提供一种改进的语音变声方法,使得变声后的语音信号与原始语音信号长度一致。

    本发明的目的是这样实现的:

    一种基于数字信号处理的语音变声方法,包括如下步骤:

    (1)选取需要变声的原始语音信号;

    (2)当原始语音信号存在周期性时,计算其基频值,并计算与该基频值对应的基音周期的长度;当原始语音中并不存在周期性时,在65Hz到500Hz之间取一频率值,将该频率值对应的周期作为基音周期,将该频率值对应的周期长度作为基音周期长度;

    (3)根据步骤(2)中得到的基音周期长度定位整个原始语音信号的每一个基音周期的位置;

    (4)在原始语音信号中的基音周期之间删除/插入基音周期,得到缩短/伸长的语音信号;

    (5)将步骤(4)中得到的缩短/伸长的语音信号线性伸长/压缩至与原始语音信号一致的长度,得到变声后的语音信号。

    在步骤(4)中是在原始语音信号中的基音周期之间周期性地删除/插入基音周期。

    当期望变声后语音的基频是原始语音基频的p倍且p>1时,每隔(p-1)-1个基音周期插入一个基音周期,该被插入的基音周期是与插入点相邻的基音周期的一个复制。当期望变声后语音的基频是原始语音基频的p倍且0<p<1时,每隔(1-p)-1个基音周期删除一个当前基音周期。优选地,1<p≤2或0.5≤p<1。

    在步骤(5)中的线性伸长/压缩方法为:原始语音的长度为N、步骤(3)得到的缩短/伸长的语音信号的长度为M,则伸缩比为r=M/N;所述缩短/伸长的语音信号的序列为x(m),其中1≤m≤M;令变声后的语音信号的序列为y(n),其中1≤n≤N;令An=nr,Cn=Bn+1,其中是不大于An的最大整数;则y(n)=x(Bn)+(An-Bn)[x(Cn)-x(Bn)],其中y(n)是变声后语音序列的第n个点。

    本发明是基于数字信号处理的语音变声方法,该方法简单实用,运算量很小,适于在DSP芯片上实时实现,变声的语音的自然度很高。而且变声后的语音的长度与原始语音长度一致,有利于实时传送变声后的语音信号。

    【附图说明】

    图1是本发明的语音变声方法的流程图;

    图2是语音信号基音周期定位的实例图。

    【具体实施方式】

    下面结合附图及具体实施方向对本发明做进一步详细描述。

    如图1所示的本发明的语音变声方法的流程图。首先输入一帧语音,一帧语音的长度可以根据实际情况需求作适当调整。

    然后估计该输入的原始语音信号中的基频值。在本实施例的语音基频估计中,采用的是谐波和方法(Summation of Sub-Harmonic Method),所以无论原始语音是否存在周期性都将得到一个基频值。当原始语音存在周期性,也就是存在基音周期,那么将得到一个有意义的基频值;当原始语音并不存在周期性,也就是不存在基音周期时,如在清音段或者静音段,得到的实际上是一个在65Hz到500Hz之间的一个随机数,但本发明仍然将该频率值所对应的周期长度作为该语音段的“伪”基音周期长度。

    从上述处理方法可以看出,本发明事实上是将不存在周期性的清音段也当作浊音段来处理的。这是因为,语音的清音段类似于白噪声,在其中周期性的删除或者插入语音,几乎不影响人对它的听觉感知效果。而且对语音不分浊音、清音的统一处理,简化了算法的复杂程度,更重要的是避免了浊音误判为清音时造成语音变声失败的代价。

    语音信号的基音周期的长度等于语音的采样率除以该语音信号的基频值。根据该周期长度定位整个原始语音信号的每一个基音周期的位置。

    以每秒8K采样点的语音为例,并将1000个采样点作为一个处理单元,即一帧语音。如该帧语音信号的平均基频是100Hz,则其基音周期是80个采样点,并用此长度来定位基音周期。

    一般来说每个基音周期都有一个极大值,以此来定位每个基音周期最为方便可靠。首先在这一帧语音的中间位置附近找到一个极大值,然后向两边每隔一个基音周期的长度找到一个极大点,依次找到所有基音周期的极大点。本实施例规定每个基音周期开始于该基音周期极大点向后的第二个过零点,结束于下一个基音周期的起始点。因此根据每个极大点向后寻找其第二个过零点,以此定位出每个基音周期的区域。该定位的过程可参照图2所示,图中实线所标是每个基音周期的极值点,虚线所标是极值点向后第二个过零点,两条虚线之间为一个基音周期。例如在上述选取的语音信号中,先在当前帧第500个点附近找到极大值,然后在此极大值向前80点附近和向后80点寻找极大值,再依此方法寻找到该帧语音的所有极大值。最后在每个极大点向后寻找其第二个过零点,以此定位出每个基音周期的区域。

    对于并不存在基音周期的语音信号,在得到其“伪”基音周期长度后,也可用上述的寻找极大值和过零点的方法来定位其伪基音周期的位置。

    根据变声要求的不同,决定需要插入基音周期还是删除基音周期。如果需要提高基频,那么就插入基音周期;如果要降低基频,就删除基音周期。例如期望变声后语音的基频是原始语音基频的1.5倍,那么每隔[1/(1.5-1)]=2个基音周期插入一个与插入点相邻的基音周期;例如期望变声后语音的基频是原始语音基频的0.8倍,那么每隔[1/(1-0.8)]=5个基音周期删除一个当前的基音周期。这样就得到伸长或者缩短的语音信号。

    最后将伸长的语音信号压缩到与原始语音一致的长度,或者将缩短的语音信号伸长到与原始语音一致的长度,得到所需要的变声后的语音信号。例如由上一步得到的伸长的语音的长度为1400个采样点,其语音序列为x(m),其中1≤m≤1400。而原始语音的长度为1000个采样点,也就是说变声后的语音信号的长度也应该为1000点,令变声后的语音信号的序列为y(n),其中1≤n≤1000。伸缩比r=1400/1000=1.4。令An=nr,Cn=Bn+1,其中是不大于An的最大整数。如下表:  n 1  2  3… 500 501… 999    1000 An1.4 2.8 4.4… 700 701.4… 1398.6    1400 Bn1 2 4… 700 701… 1398    1400 Cn2 3 5… 701 702… 1399  1400(1401)通过公式y(n)=x(Bn)+(An-Bn)[x(Cn)-x(Bn)],就得到了压缩后的变声后语音,其中y(n)变声后语音序列的第n个点。在表格中的右下角,Cn的计算值1401超过了m可取的最大值1400,在本实施例中,用与1401最接近的1400来代替。最后可将变声后的语音输出,这样就得到了既有变声效果,又与原始语音长度一致的语音信号。

    采用与该方法一致的步骤,也可将缩短的语音信号伸长到与原始语音一致的长度。

一种基于数字信号处理的语音变声方法.pdf_第1页
第1页 / 共7页
一种基于数字信号处理的语音变声方法.pdf_第2页
第2页 / 共7页
一种基于数字信号处理的语音变声方法.pdf_第3页
第3页 / 共7页
点击查看更多>>
资源描述

《一种基于数字信号处理的语音变声方法.pdf》由会员分享,可在线阅读,更多相关《一种基于数字信号处理的语音变声方法.pdf(7页珍藏版)》请在专利查询网上搜索。

本发明公开了一种基于数字信号处理的语音变声方法,包括步骤(1)选取需要变声的原始语音信号;(2)得到原始语音信号的基音周期长度;(3)根据基音周期长度定位整个原始语音信号的每一个基音周期的位置;(4)在原始语音信号中的基音周期之间删除/插入基音周期,得到缩短/伸长的语音信号;(5)将缩短/伸长的语音信号线性伸长/压缩至与原始语音信号一致的长度,得到变声后的语音信号。本发明是基于数字信号处理的语音变。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 乐器;声学


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1