具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述:
本发明实施例一中,一种获取基音周期的方法的流程如图2所示,包括以下步骤:
步骤s201、对于一个语音信号,获取初始位置语音信号的相位。
步骤s202、获取其他位置语音信号的相位。
步骤s203、获取其他位置语音信号的相位与初始位置语音信号的相位的相似度。
步骤s204、根据相位的相似程度获取基音周期。
本发明实施例二中,结合一个具体的语音信号,一种获取基音周期的方法流程如图3所示,包括以下步骤:
步骤s301、对于一个语音信号,获取初始位置P(0)处语音信号的相位。
本实施例中以P(0)表示初始位置。
步骤s302、获取其他位置P(1),P(2)…P(N)处语音信号的相位。
本实施例中以P(1),P(2)…P(N)表示其他位置,其中位置P(0),P(1),P(2)…P(N)之间可以是连续的,也可以中间间隔若干个样点,为了减小计算量,P(0)和P(1)之间的距离最好等于一个预设的最小基音周期,P(0)和P(N)之间的距离最好等于一个预设的最大基音周期。其中,该预设的最大、最小基音周期可以根据人声音频率的范围来决定,一般人声音的频率为50-500赫兹,因此预设的最小基音周期可以为2ms,最大基音周期可以为20ms。假设采样频率为10kHz,即每1ms采10个样点,将初始位置P(0)与P(1)之间的距离设置为20个样点,即最小基音周期2ms;将初始位置P(0)与P(N)之间的距离设置为200个样点,即最大基音周期20ms。假定P(0)的位置为第1000个样点,则P(1),P(2)…P(N)的位置可取为第1020,…,1200个样点。
步骤s303、获取初始位置P(0)处语音信号的相位与位置P(1),P(2)…P(N)处语音信号的相位的相似程度S(1),S(2)…S(N)。
步骤s304、根据相位的相似程度获取基音周期。
图3中的步骤s301和s302可以按照图4所示的方法获取相位,包括以下步骤:
步骤s401、在需要获取相位的位置选择一段语音信号进行加窗,窗的类型可以是矩形窗、汉明窗、三角窗等,优选为矩形窗。
步骤402、对加窗的语音信号进行傅立叶变换,变换之后的频域参数包括幅度信息和相位信息。
步骤401和402可以用下面公式表示:
式(1)中x(m)是语音时域信号,w(m)是在区间[0,L-1]之外为零的分析窗,n是需要获取相位的时域位置,X(n,k)是傅立叶变换之后的频域信号,k是离散的频率点,取值范围为0,1…L-1,和角频率对应的关系为: L为窗的长度。
X(n,k)是复数值,可以用幅度和相位的形式表示:
式(2)中An,k是第k个频率点的幅度值,θn,k是第k个频率点的相位。因此在时域位置n处获取的和各个频率点对应的相位包括:θn,1,θn,2…θn,L-1。
对于图3中的步骤s303,可以用图5所示的方法获取相位相似程度,包括以下步骤:
步骤s501、对于每个位置P(1),P(2)…P(N),获取各位置下各个频率点的相位和初始位置P(0)各对应频率点的相位的差值。
步骤s502、对于每个位置,获取该位置各个频率点和初始位置各个频率点的上述相位差值的绝对值的和。
步骤s503、取每个位置相位差值的绝对值的和的倒数,作为该位置的相位与初始位置的相位的相似程度S(1),S(2)…S(N)。
上述步骤s501~s503可以用下面公式来表示:
根据前面所述,可以知道在某个时域位置获取的相位共有L个,且和各个频率点对应,由于高频部分相位变化较大,且容易受到噪声影响,因此在获取相似性时,通常只取部分频率范围内的相位差,一个优选方案是取50-500Hz范围的相位差。在公式(3)中,KL是用于获取相位差的最低频率点,KH是最高频率点,例如,根据经验,如果语音信号的采样频率为32kHz,窗长取为512,则根据经验值,KL可取为1,KH可取为7。
对于图3中的步骤s304,可以用图6所示的方法获取基音周期,步骤如下:
步骤s601、令最大的相位相似程度S′等于S(1),相应的位置P′等于P(1)。
步骤s602、令k等于2。
步骤s603、判断S(k)是否大于S′,如果是,则执行步骤s604,否则跳转到步骤s605。
步骤s604、令S′等于S(k),P′等于P(k)。
步骤s605、对k进行累加,即k=k+1。
步骤s606、判断k是否大于N,如果是则执行步骤s607,否则跳转到步骤s603。
步骤s607、获取P′与P(0)的差的绝对值,即得到基音周期。
对于图3中的步骤s304,也可以用图7所示的另外一种实现方式获取基音周期,步骤如下:
步骤s701、设置相位相似度门限SL。
步骤s702、今k等于1。
步骤s703、判断S(k)是否大于SL,如果是则执行步骤s704,否则执行步骤s705。
步骤s704、获取P(k)与P(0)的差的绝对值,即是所求基音周期。获取完周期之后,则退出获取基音周期的流程,即结束步骤s304。
步骤s705、对k进行累加,即k=k+1。
步骤s706、判断k是否大于N,如果是则退出获取基音周期的流程,即结束步骤s304;如果否则跳转到步骤s703。
在图8中,上部是语音波形图,采样率为32khz,中间是采样本发明方案获取的每个位置相位差值的绝对值的和,窗长取的是512,用于获取相位差的频率点的范围为1至7;图的下部是相应的相位相似程度,用图6或图7的方法可以方便的检测出基音周期为276个样点。
通过使用上述实施例提供的获取基音周期的方法,基于语音信号频域相位相似性进行基音检测,获取到的基音周期具有较高的准确性,且实现简单。
本发明实施例的一种获取基音周期的装置如图9所示,该装置包括相位获取模块10、相位相似程度获取模块20和基音周期获取模块30。其中相位相似程度获取模块20分别与相位获取模块10以及基音周期获取模块30连接。
具体的,相位获取模块10用于获取一语音信号各位置的相位,然后通知给相位相似程度获取模块20。其进一步包括加窗子模块11和变换子模块12,其中加窗子模块11用于在需要获取相位的位置选择一段语音信号进行加窗,窗的类型可以是矩形窗、汉明窗、三角窗等,优选为矩形窗。变换子模块12用于对加窗子模块11加窗的语音信号进行傅立叶变换,变换之后的参数包括幅度信息和相位信息。
相位相似程度获取模块20用于获取初始位置相位与其他位置相位的相似程度,然后把获取结果通知给基音周期获取模块30。
基音周期获取模块30根据相位相似程度获取模块20的通知获取基音周期。
具体的,基音周期获取模块30可以进一步包括判断子模块31和处理子模块32,如图10所示,其中判断子模块31用于获取最大的相位相似程度,获取的具体过程为依次比较各个位置的相位相似程度,直到得出最大值;进一步获取最大值所对应的位置并通知处理子模块32。处理子模块32通过获取所述最大值的位置与初始位置的差的绝对值来获取基音周期。
具体的,基音周期获取模块30也可以进一步包括门限设置子模块33、比较子模块34和获取子模块35,如图11所示,其中门限设置子模块33用于设置一个相位相似度门限,该门限设置的标准参考上述预设的最大最小基音周期。比较子模块34用于比较各个位置的相位相似度与门限设置子模块33设置的门限的大小,获取最大的相位相似程度并通知给获取子模块35,获取子模块35通过获取比较子模块34发送最大值的位置与初始位置的差的绝对值来获取基音周期。
通过使用上述实施例提供的获取基音周期的装置,基于语音信号频域相位相似性进行基音检测,获取到的基音周期具有较高的准确性,且实现简单。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该获取机软件产品存储在一个存储介质中,包括若干指令用以使得一台设备执行本发明各个实施例所述的方法。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。