首页 > 乐器声学 专利正文
声音变调方法、电子设备及存储介质与流程

时间:2022-02-18 阅读: 作者:专利查询

声音变调方法、电子设备及存储介质与流程

1.本技术涉及音频处理技术领域,特别是涉及一种声音变调方法、电子设备及计算机可读存储介质。


背景技术:

2.出于保护个人信息或者娱乐等目的,经常需要通过变声(声音变调)方法改变原始音频数据中的声音。声音变调方法是在声音速度不变的前提下,改变声音的语调。例如,在一些匿名的视频会议中,如果要保护个人信息,需要利用声音变调方法对会议过程的音频数据进行处理,将视频会议过程中说话人的声音改变,使得原始音频数据中说话人的声音无法被分辨出来。然而,现有的声音变调方法对声音的处理实时性不高。


技术实现要素:

3.本技术提供一种声音变调方法、电子设备及计算机可读存储介质,能够解决现有的声音变调方法对声音的处理实时性不高的问题。
4.为解决上述技术问题,本技术采用的一个技术方案是:提供一种声音变调方法。该方法包括:获取待处理音频数据;以当前起点按照时长从短到长的顺序搜索音高周期,以确定当前第一音频帧,其中,当前第一音频帧的音高周期数量大于音高周期阈值,搜索的时长越短,对应的音高周期阈值越大;为当前第一音频帧加窗,以得到当前分析帧;利用当前分析帧合成目标音频数据。
5.为解决上述技术问题,本技术采用的另一个技术方案是:提供一种电子设备,该电子设备包括处理器、与处理器连接的存储器,其中,存储器存储有程序指令;处理器用于执行存储器存储的程序指令以实现上述方法。
6.为解决上述技术问题,本技术采用的又一个技术方案是:提供一种计算机可读存储介质,存储有程序指令,该程序指令被执行时能够实现上述方法。
7.通过上述方式,本技术中在确定当前第一音频帧时,以当前起点按照时长从短到长的顺序搜索音高周期,即根据多级时长策略自适应搜索的音高周期数量,从而能够保证对当前第一音频帧加窗之后,得到的分析帧的音高周期数量大于音高周期阈值的同时,时长也在允许范围内,从而分析帧的时长不会过长,提高对声音处理的实时性。
附图说明
8.图1是本技术声音变调方法一实施例的流程示意图;
9.图2是图1中s11的具体流程示意图;
10.图3是本技术声音变调方法另一实施例的流程示意图;
11.图4是本技术电子设备一实施例的结构示意图;
12.图5是本技术计算机可读存储介质一实施例的结构示意图。
具体实施方式
13.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
14.本技术中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。本技术的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
15.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,在不冲突的情况下,本文所描述的实施例可以与其它实施例相结合。
16.在介绍本技术提供的方法之前,先对现有的声音变调方法处理无法实时的原因进行说明:
17.本技术提及的对音频数据的处理是从时域的角度来说的。待处理音频数据包括多个采样点,每个采样点具有对应的采样时间点和序号。音高周期是基音周期在时域的表现形式,音高周期的位置就是基音周期在时域的起始位置,在时域表现为具体采样点的序号。
18.现有方案中,用于合成目标音频数据的分析帧的音高周期数量是固定的。以固定数量m(m≥2)为例,将一个分析帧定义为原始音频数据中m个音高周期间隔的部分乘以一个长度为m_interval的汉宁窗。分析帧可以用如下的公式表示:
19.x
s
(n)=x(e(n):e(n+m))*h_win n++
20.其中,x
s
(n)表示第n个分析帧,x表示原始音频数据,h_win表示汉宁窗函数,表示第n个音高周期对应的采样点的序号。
21.由于音高周期只存在于原始音频数据中有声音的部分,因此在确定分析帧时,只会在有声音的部分才能搜索到音高周期,而在噪声和静音的部分搜索不到音高周期。当原始音频数据中很长时间内没有声音时,相邻两个音高周期的时间间隔就会非常长,从而导致分析帧的时长非常长,处理起来无法实时。
22.为此,本技术提供的方法如下:
23.图1是本技术声音变调方法一实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图1所示的流程顺序为限。如图1所示,本实施例可以包括:
24.s11:获取待处理音频数据。
25.待处理音频数据可以是获取到的原始音频数据,也可以是对原始音频数据处理得到的数据。相较于前者,后者能够改变音高周期的分布情况,避免声音变调得到的目标音频数据中语音帧和非语音帧之间出现噪声。结合参阅图2,后者情况下,s11可以包括以下子步骤:
26.s111:获取原始音频数据。
27.原始音频数据可以是实时的,也可以是非实时的。
28.s112:将原始音频数据划分为若干个第二音频帧。
29.可以利用窗函数将原始音频数据划分为若干个第二音频帧,第二音频帧的长度/窗的长度可以任意确定,也可以基于原始音频数据的采样率确定,采样率和第二音频帧的长度成正比。
30.s113:检测若干个第二音频帧中的语音帧和非语音帧。
31.可以利用vad(动态语音检测)算法检测语音帧和非语音帧。vad算法可以是thomas、rabin等等。
32.s114:利用语音帧对与其相邻的至少部分非语音帧进行平滑处理。
33.可以理解的是,利用语音帧对非语音帧进行平滑处理,能够将非语音帧转换成语音帧与非语音帧之间的过渡帧。从而在后续确定分析帧时,能够在过渡帧中搜索到音高周期。
34.可以基于采样率fs确定利用单个语音帧平滑的非语音帧的最大数量n。其中,利用单个语音帧平滑的非语音帧的最大数量与采样率正相关。例如,通过下式确定利用单个语音帧平滑的非语音帧的数量:
35.n=fs*t1,
[0036][0037]
t
11
<t
12
v
[0038]
其中,n表示利用一个语音帧平滑的非语音帧的数量,fs表示采样率,t
11
和t
12
表示平滑的候选时长,t1表示平滑的时长。
[0039]
与语音帧相邻的非语音帧,可以是语音帧之后相邻的非语音帧,也可以是语音帧之前相邻的非语音帧。利用语音帧对非语音帧的平滑处理可以分为单向平滑处理和双向平滑处理。
[0040]
单向平滑处理为仅进行正向平滑处理或仅进行反向平滑处理。正向平滑处理即利用语音帧对其之后相邻的非语音帧进行平滑处理,反向平滑处理即利用语音帧对其之前相邻的非语音帧进行平滑处理。双向平滑处理为既进行正向平滑处理也进行反向平滑处理。
[0041]
利用语音帧对其之后相邻的非语音帧进行平滑处理(正向平滑处理)可以体现为下式:
[0042]
x
n
(j)=x
n
‑1(j)*β+x
n
(j)*(1

β)n++,
[0043]
其中,x
n
(j)表示语音帧和其之后相邻的非语音帧中的第n帧的第j个采样点的值,x
n
‑1(j)表示第n

1帧的第j个采样点的值,β表示平滑系数。
[0044]
利用语音帧对其之前相邻的非语音帧进行平滑处理(反向平滑处理)可以体现为下式:
[0045]
x
n
(j)=x
n+1
(j)*β+x
n
(j)*(1

β)n
‑‑

[0046]
其中,x
n
(j)表示语音帧和其之前相邻的非语音帧中的第n帧的第j个采样点的值,x
n+1
(j)表示第n+1帧的第j个采样点的值。
[0047]
在利用语音帧对与其相邻的多个非语音帧进行平滑时,距离语音帧越远的非语音帧(或者说与语音帧的帧号相差越大的非语音帧)对应的平滑系数越小。
[0048]
例如,在利用一个语音帧平滑的非语音帧的数量为n的情况下,平滑系数β可以从1
开始,逐帧递减1/n,直到0为止。
[0049]
作为一实施例,s114中均利用语音帧对其之后相邻的非语音帧进行平滑处理(正向平滑处理)。
[0050]
作为另一实施例,s114中均利用语音帧对其之前相邻的非语音帧进行平滑处理(反向平滑处理)。
[0051]
作为又一实施例,s114中既利用语音帧对其之后相邻的非语音帧进行平滑处理,也利用语音帧对其之前相邻的非语音帧进行平滑处理(双向平滑处理)。
[0052]
作为再一实施例,s114中通过相邻的两个语音帧之间的非语音帧数量来限制进行单向平滑处理还是进行双向平滑处理。
[0053]
具体而言,可以基于采样率得到预设数量阈值,该预设数量阈值与采样率正相关。该预设数量阈值可以等于利用单个语音帧平滑处理的非语音帧的最大数量。
[0054]
以相邻两个语音帧之间的非语音帧为目标非语音帧;若目标非语音帧数量大于或者等于预设数量阈值,则将相邻的两个语音帧中的一个(前一个或者后一个)作为第一起始语音帧,并利用第一起始语音帧对与其相邻的至少部分目标非语音帧进行平滑处理;若目标非语音帧数量小于预设数量阈值,则分别将相邻的两个语音帧作为第一起始语音帧和第二起始语音帧,并利用第二起始语音帧与其相邻的至少部分目标非语音帧进行平滑处理,以及利用第三起始语音帧对与其相邻的至少部分目标非语音帧进行平滑处理。
[0055]
举例说明,当目标非语音帧数量小于n时,采用双向平滑处理生成过渡帧。首先从第一个目标非语音帧进行正向平滑处理,平滑系数从1开始,逐帧递减1/n,直至最后一个目标非语音帧。然后从最后一个目标非语音帧进行反向平滑处理,平滑系数从1开始,逐帧递减1/n,直至第一个目标非语音帧。具体可以通过如下公式实现:
[0056][0057][0058]
当目标非语音帧数量大于或者等于n时,采用正向平滑处理生成过渡帧。从第一个非语音帧开始进行平滑,平滑系数从1开始,逐帧递减1/n,直至0为止。具体可以通过如下公式实现:
[0059]
x
n
(j)=x
n
‑1(j)*β+x
n
(j)*(1

β)n++,
[0060][0061]
s12:以当前起点按照时长从短到长的顺序搜索音高周期,以确定当前第一音频帧。
[0062]
其中,当前音频帧的音高周期数量大于音高周期阈值,搜索的时长越短,对应的音高周期阈值越大。
[0063]
当前起点即为确定当前第一音频帧时搜索的时长的时间起点。本步骤中,为了避免当前第一音频帧的时长过长,给定搜索的时长的允许范围。该允许范围的每个时长/时长范围具有对应的音高周期阈值,且短的时长/时长范围对应的音高周期阈值越大,长的时长/时长范围对应的音高周期阈值越小。
[0064]
在搜索过程中,按照允许范围内的时长从短到长的顺序,依次将时长作为目标时长,若在目标时长搜索到的音高周期数量大于目标时长对应的音高周期阈值,则停止搜索,并将待处理音频数据中,以目标时长搜索到的第一个音高周期和最后一个音高周期之间的部分确定为当前第一音频帧。
[0065]
若在所有时长搜索到的音高周期数量均不大于对应的音高周期阈值,即按照允许范围的最大时长进行搜索,搜索到的音高周期数量也不大于对应的音高周期阈值,则对当前起点向后偏移,以更新当前起点,并重新开始搜索。向后偏移的采样时间点数量取决于相邻两个分析帧重叠的长度、处理精度等因素。
[0066]
如下对本步骤的搜索过程进行举例说明:
[0067]
给定三个时长阈值,分别是第一时长阈值t
min
、第二时长阈值t
mid
和第三时长阈值t
max
,t
min
<t
mid
<t
max
。利用该三个时长阈值将允许范围划分为三个部分,分别是(0,t
min
]、(t
min
,t
mid
]和(t
mid
,t
max
]。(0,t
min
]对应的音高周期阈值为m,(t
min
,t
mid
]对应的音高周期阈值为m

1,(t
mid
,t
max
]对应的音高周期阈值为2。搜索时长为t。
[0068]
1)在(0,t
min
]内按照t从短到长的顺序进行音高周期搜索;若搜索到的音高周期数量大于m,则将待处理音频数据中,按照t搜索得到的第一个音高周期和最后一个音高周期之间的部分,确定为当前第一音频帧;若搜索到的音高周期数量不大于m,则进入2)。
[0069]
2)在(t
min
,t
mid
]内按照t从短到长的顺序进行音高周期搜索;若搜索到的音高周期数量大于m

1,则确定当前第一音频帧;若搜索到的音高周期数量不大于m

1,则进入3)。
[0070]
3)在(t
mid
,t
max
]内按照t从短到长的顺序进行音高周期搜索;若搜索到的音高周期数量大于2,则确定当前第一音频帧;若搜索到的音高周期数量不大于2,则修改当前起点(将当前起点向后偏移),跳转至1),以重复执行上述步骤,直至确定当前第一音频帧。
[0071]
s13:为当前第一音频帧加窗,以得到当前分析帧。
[0072]
为当前第一音频帧加窗,即利用当前第一音频帧乘以窗函数,窗函数包括但不限于为汉宁窗函数。以汉宁窗函数为例,当前第一音频帧可以表示为:
[0073][0074]
其中,m表示在搜索时长t搜索到的音高周期数量。
[0075]
s14:利用当前分析帧合成目标音频数据。
[0076]
利用当前分析帧合成目标音频数据的方法可以是sola、psola、wsola算法等等。
[0077]
通过本实施例的实施,本技术中在确定当前第一音频帧时,以当前起点按照时长从短到长的顺序搜索音高周期,即根据多级时长策略自适应搜索的音高周期数量,从而能够保证对当前第一音频帧加窗之后,得到的分析帧的音高周期数量大于音高周期阈值的同时,时长也在允许范围内,从而分析帧的时长不会过长,提高处理的实时性。
[0078]
图3是本技术声音变调方法另一实施例的流程示意图。需注意的是,若有实质上相同的结果,本实施例并不以图3所示的流程顺序为限。本实施例是对s14的进一步扩展。如图3所示,本实施例可以包括:
[0079]
s141:基于时间尺度因子确定当前分析帧与已合成的中间音频数据重叠的时长。
[0080]
时间尺度因子为最后一次叠加后得到的中间音频数据的时长与待处理数据的时长的比值。
[0081]
重叠的时长为已合成的中间音频数据的尾部与当前分析帧的头部重叠的时间长度。时间尺度因子可以是预设设定的,也可以是应用过程中由用户指定的。由于待处理数据的时长已知,因此在时间尺度因子确定的情况下,可以确定最后一次叠加后得到的中间音频数据的时长。
[0082]
最后一次叠加后得到的中间语音
[0083]
时间尺度因子大于1或者小于1。若时间尺度因子大于1,则代表在处理过程中会对待处理音频数据进行拉伸,使得待处理音频数据中的声音变粗犷;若时间尺度因子小于1,则代表在处理过程中会对待处理音频数据进行压缩,使得待处理音频数据中的声音变尖锐。
[0084]
s142:将当前分析帧按照重叠的时长叠加至已合成的中间音频数据。
[0085]
将当前分析帧与已合成的中间音频数据重叠的部分采样点的值对应相加,其他部分保持不变。
[0086]
将当前分析帧叠加值已合成的中间音频数据可以体现为:
[0087]
s143:对最后一次叠加后得到的中间音频数据进行采样处理,以得到目标音频数据。
[0088]
采样处理是为了使得目标音频数据的时长与待处理音频数据的时长一致,从而实现声音的变调而不变速。由此,若时间尺度因子大于1,则对中间音频数据进行下采样处理;若时间尺度因子小于1,则对中间音频数据进行上采样处理。
[0089]
另外,在采样处理之前,还可以对最后一次叠加后得到的中间音频数据进行归一化处理。
[0090]
另外,为避免最后一次叠加后得到的中间音频数据的实际长度大于目标长度,在s14之前,还可以将当前分析帧的时长和时间尺度因子相乘,以确定当前分析帧叠加后得到的中间音频数据的目标;判断当前分析帧叠加后得到的中间音频数据的实际长度是否小于目标长度。若小于,则执行s14;否则当前分析帧不参与目标音频数据的合成。
[0091]
图4是本技术电子设备一实施例的结构示意图。如图4所示,该电子设备包括处理器21、与处理器21耦接的存储器22。
[0092]
其中,存储器22存储有用于实现上述任一实施例的方法的程序指令;处理器21用于执行存储器22存储的程序指令以实现上述方法实施例的步骤。其中,处理器21还可以称为cpu(central processing unit,中央处理单元)。处理器21可能是一种集成电路芯片,具有信号的处理能力。处理器21还可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0093]
图5是本技术计算机可读存储介质一实施例的结构示意图。如图5所示,本技术实施例的计算机可读存储介质30存储有程序指令31,该程序指令31被执行时实现本技术上述实施例提供的方法。其中,该程序指令31可以形成程序文件以软件产品的形式存储在上述计算机可读存储介质30中,以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本技术各个实施方式方法的全部或部分步骤。而前述的
计算机可读存储介质30包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等终端设备。
[0094]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0095]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。以上仅为本技术的实施方式,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。