一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种音频数据的优化方法、装置、电子设备和存储介质与流程

2022-08-30 22:41:37 来源:中国专利 TAG:


1.本技术涉及通信技术领域,尤其涉及一种音频数据的优化方法、装置、电子设备和存储介质。


背景技术:

2.网络直播是现在比较流行的娱乐项目,用户对于网络直播的视听体验的要求也越来越高。例如,视频的画质是否足够清晰、音频的质量是否足够好等等。如果在网络直播过程中出现回声现象,会影响用户的观看体验。
3.现有技术中,会采用回声消除算法来抑制网络直播中的回声。多延迟块频域自适应滤波器(the multi-delay block frequency-domain adaptive filter,mdf)作为实现回声消除的算法,广泛应用于音频前处理算法中。mdf中存在大量的矩阵算子,用于频域的音频数据计算。由于mdf中的矩阵算子的计算量很大,导致在利用mdf进行回声消除时,所耗费的时间较长,效率较低。


技术实现要素:

4.本发明提供了一种音频数据的优化方法、装置、电子设备和存储介质,以解决现有技术中,由于mdf中的矩阵算子的计算量很大,导致在利用mdf进行回声消除时,所耗费的时间较长,效率较低的问题。
5.第一方面,本发明提供了一种音频数据的优化方法,包括:
6.循环读取本端的第一音频的频域数据中的m个第一操作数,并循环读取对端的第二音频的频域数据中的m个第二操作数,其中m为正整数,且m》1;
7.根据循环读取的所述m个第一操作数,计算所述第一音频的频域数据对应的功率谱;
8.根据循环读取的所述m个第一操作数、所述m个第二操作数和个第一权重,计算共轭的加权互功率谱,其中,所述个第一权重与所述m个第一操作数以及所述m个第二操作数相对应;
9.根据所述第一音频的频域数据对应的功率谱以及所述共轭的加权互功率谱,消除所述第一音频的频域数据中与所述第二音频的频域数据相关的回声分量。
10.优选的,所述根据循环读取的所述m个第一操作数,计算所述第一音频的频域数据对应的功率谱,包括:
11.所述m个第一操作数包含个第一实操作数和个第一虚操作数;
12.通过以下公式计算所述第一音频的频域数据对应的功率谱:
13.14.其中,ps为所述功率谱,xr为所述个第一实操作数中的第一目标实操作数,xi为所述个第一虚操作数中与所述第一目标实操作数对应的第一目标虚操作数。
15.优选的,所述根据循环读取的所述m个第一操作数、所述m个第二操作数和个第一权重,计算共轭的加权互功率谱,包括:
16.所述m个第二操作数包含m/2个第二实操作数和m/2个第二虚操作数;
17.通过以下公式计算所述共轭的加权互功率谱:
18.prod.r=p
×w×
(xr×
yr xi×
yi)
19.prod.i=p
×w×
(xr×yi-xi×
yr)
20.其中,prod.r为所述共轭的加权互功率谱的实部,prod.i为所述共轭的加权互功率谱的虚部,yr为所述个第二实操作数中的第二目标实操作数,yi为所述个第二虚操作数中与所述第二目标实操作数对应的第二目标虚操作数,w为所述个第一权重中与所述xr、所述xi、所述yr和所述yi相对应的第一目标权重,所述p为总权重。
21.优选的,所述循环读取本端的第一音频的频域数据中的m个第一操作数,并循环读取对端的第二音频的频域数据中的m个第二操作数,包括:
22.从所述本端的终端的内存中循环读取所述本端的第一音频的频域数据中的m个第一操作数,并从所述本端的终端的内存中循环读取所述对端的第二音频的频域数据中的m个第二操作数。
23.优选的,所述本端的第一音频的频域数据为对所述本端的第一模拟音频数据进行采样,获得第一音频的时域数据之后,对所述第一音频的时域数据进行傅里叶变换所获得的。
24.优选的,按照48khz的采样频率对所述本端的第一模拟音频数据进行采样,获得所述第一音频的时域数据。
25.优选的,m取值为8。
26.第二方面,本发明还提供了一种音频数据的优化装置,包括:
27.循环读取模块,用于循环读取本端的第一音频的频域数据中的m个第一操作数,并循环读取对端的第二音频的频域数据中的m个第二操作数,其中m为正整数,且m》1;
28.第一计算模块,用于根据循环读取的所述m个第一操作数,计算所述第一音频的频域数据对应的功率谱;
29.第二计算模块,用于根据循环读取的所述m个第一操作数、所述m个第二操作数和个第一权重,计算共轭的加权互功率谱,其中,所述个第一权重与所述m个第一操作数以及所述m个第二操作数相对应;
30.消除模块,用于根据所述第一音频的频域数据对应的功率谱以及所述共轭的加权互功率谱,消除所述第一音频的频域数据中与所述第二音频的频域数据相关的回声分量。
31.第三方面,本发明还提供了一种电子设备,包括存储器、处理器,所述处理器用于
执行存储器中存储的计算机程序时实现第一方面所述的音频数据的优化方法的步骤。
32.第四方面,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现第一方面所述的音频数据的优化方法的步骤。
33.由以上技术方案可知,本发明实施例提供的一种音频数据的优化方法、装置、电子设备和存储介质,循环读取本端的第一音频的频域数据中的m个第一操作数,并循环读取对端的第二音频的频域数据中的m个第二操作数,其中m为正整数,且m》1;根据循环读取的所述m个第一操作数,计算所述第一音频的频域数据对应的功率谱;根据循环读取的所述m个第一操作数、所述m个第二操作数和个第一权重,计算共轭的加权互功率谱,其中,所述个第一权重与所述m个第一操作数以及所述m个第二操作数相对应;根据所述第一音频的频域数据对应的功率谱以及所述共轭的加权互功率谱,消除所述第一音频的频域数据中与所述第二音频的频域数据相关的回声分量。这样,可以循环读取本端的第一音频的频域数据中的m个第一操作数,并循环读取对端的第二音频的频域数据中的m个第二操作数。进而可以基于循环读取的本端的第一音频的频域数据中的m个第一操作数以及对端的第二音频的频域数据中的m个第二操作数,消除第一音频的频域数据中与第二音频的频域数据相关的回声分量。即可以实现对多个操作数进行并行处理,在进行回声消除时,所耗费的时间较短,效率较高。
附图说明
34.图1为本技术实施例提供的一种音频数据的优化方法的流程图;
35.图2为本技术实施例提供的一种本端的第一音频的频域数据x包含的前8个第一操作数的示意图;
36.图3为本技术实施例提供的一种本端的第一音频的频域数据x包含的前8个第一操作数,以及对端的第二音频的频域数据y包含的前8个第二操作数的示意图;
37.图4为本技术实施例提供的一种使用原始的mdf算法和本技术的方法进行回声消除的耗时结果对比图;
38.图5为本技术实施例提供的一种音频数据的优化装置的结构图;
39.图6为本技术实施例提供的一种电子设备的实施例示意图;
40.图7为本技术实施例提供的一种计算机可读存储介质的实施例示意图。
具体实施方式
41.为了更好的理解本说明书实施例提供的技术方案,下面通过附图以及具体实施例对本说明书实施例的技术方案做详细的说明,应当理解本说明书实施例以及实施例中的具体特征是对本说明书实施例技术方案的详细的说明,而不是对本说明书技术方案的限定,在不冲突的情况下,本说明书实施例以及实施例中的技术特征可以相互组合。
42.在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包
含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“两个以上”包括两个或大于两个的情况。
43.参见图1,图1是本发明提供的一种音频数据的优化方法的流程图。如图1所示,包括以下步骤:
44.s101、循环读取本端的第一音频的频域数据中的m个第一操作数,并循环读取对端的第二音频的频域数据中的m个第二操作数,其中m为正整数,且m》1。
45.在s101中,假设网络直播过程中一共存在两个主播,分别为主播a和主播b。如果主播b在直播过程中使用外放,则主播a在直播过程中的说话声音会通过主播b的外放设备外放出来。此时主播b的声卡除了会采集到主播b的说话声音之外,还会采集到主播b的外放设备外放出来的主播a的说话声音。此时主播a的终端接收到主播b的终端发送的音频信号之后,不仅会听到主播b的声音,还会听到自己所说的话的声音,即出现了回声;类似的,如果主播a在直播过程中使用外放,主播b的终端接收到主播a的终端发送的音频信号之后,不仅会听到主播a的声音,还会听到自己所说的话的声音,也会出现回声。此时主播a和主播b的直播体验较差。
46.因此,在本技术实施例中,可以循环读取本端的第一音频的频域数据中的m个第一操作数,并循环读取对端的第二音频的频域数据中的m个第二操作数。其中,m为正整数,且m》1。需要说明的是,可以将主播b这一侧作为本端,将主播a这一侧作为对端。此时本端的第一音频的频域数据x中可以包含主播b所说的话的音频数据以及主播a所说的话的音频数据,该主播a所说的话的音频数据为通过主播b的声卡采集到的外放出来的主播a所说的话的音频数据。而对端的第二音频的频域数据y则为主播a所说的话的音频数据。这样,可以实现对多个操作数进行并行处理,在进行回声消除时,所耗费的时间较短,效率较高。
47.优选的,所述循环读取本端的第一音频的频域数据中的m个第一操作数,并循环读取对端的第二音频的频域数据中的m个第二操作数,包括:
48.从所述本端的终端的内存中循环读取所述本端的第一音频的频域数据中的m个第一操作数,并从所述本端的终端的内存中循环读取所述对端的第二音频的频域数据中的m个第二操作数。
49.进一步的,可以从本端的终端的内存中循环读取本端的第一音频的频域数据中的m个第一操作数,并可以从本端的终端的内存中循环读取对端的第二音频的频域数据中的m个第二操作数。如前所述,可以将主播b这一侧作为本端,将主播a这一侧作为对端。此时可以从主播b的终端的内存中循环读取本端的第一音频的频域数据x中的m个第一操作数,并可以从主播b的终端的内存中循环读取对端的第二音频的频域数据y中的m个第二操作数。
50.优选的,m取值为8。
51.进一步的,m的取值可以为8。即可以从本端的终端的内存中循环读取本端的第一音频的频域数据x中的8个第一操作数,并可以从本端的终端的内存中循环读取对端的第二音频的频域数据y中的8个第二操作数。
52.优选的,所述本端的第一音频的频域数据为对所述本端的第一模拟音频数据进行
采样,获得第一音频的时域数据之后,对所述第一音频的时域数据进行傅里叶变换所获得的。
53.需要说明的是,本端的第一音频的频域数据x为对本端的第一模拟音频数据进行采样,获得第一音频的时域数据之后,对该第一音频的时域数据进行傅里叶变换所获得的。
54.优选的,按照48khz的采样频率对所述本端的第一模拟音频数据进行采样,获得所述第一音频的时域数据。
55.进一步的,可以按照48khz的采样频率对本端的第一模拟音频数据进行采样,获得第一音频的时域数据。
56.音频采样可以实现将声音的声波波形转换为一连串二进制数据进行表示。例如,采样频率可以为48khz,即每秒采样48000个数据点。也就是说,一段1s的音频可以表示为48000个数据点,这是音频在时域的表示。可以使用傅里叶变换(fast fourier transformation,fft)将时域的音频数据转换为频域的音频数据。频域的音频数据是复数的,包含实部和虚部。例如,可以以下标r表示实部,以下标i表示虚部。
57.s102、根据循环读取的所述m个第一操作数,计算所述第一音频的频域数据对应的功率谱。
58.在s102中,可以根据循环读取的m个第一操作数,计算第一音频的频域数据x对应的功率谱。即可以根据循环读取的8个第一操作数,计算第一音频的频域数据x对应的功率谱。
59.如前所述,1s的音频可以表示为48000个数据点,这是音频在时域的表示。将时域的音频数据转换为频域的音频数据之后,频域的音频数据也包含48000个数据点。第一次可以读取第一音频的频域数据x的48000个数据点中的第1个第一操作数~第8个第一操作数;第二次可以读取48000个数据点中的第9个第一操作数~第16个第一操作数;第三次可以读取48000个数据点中的第17个第一操作数~第24个第一操作数。如此循环下去,直至将48000个数据点均读取处理完毕为止。
60.优选的,所述根据循环读取的所述m个第一操作数,计算所述第一音频的频域数据对应的功率谱,包括:
61.所述m个第一操作数包含个第一实操作数和个第一虚操作数;
62.通过以下公式计算所述第一音频的频域数据对应的功率谱:
[0063][0064]
其中,ps为所述功率谱,xr为所述个第一实操作数中的第一目标实操作数,xi为所述个第一虚操作数中与所述第一目标实操作数对应的第一目标虚操作数。
[0065]
需要说明的是,m个第一操作数可以包含m/2个第一实操作数和m/2个第一虚操作数。即8个第一操作数可以包含8/2=4个第一实操作数和8/2=4个第一虚操作数。例如,每次读取第一操作数时,可以使用neon指令vld2q_f32以交错方式读取本端的第一音频的频域数据x的8个第一操作数。
[0066]
如图2所示,为一种本端的第一音频的频域数据x包含的前8个第一操作数的示意
图。在图2中,编号为1、3、5、7的4个第一操作数为第一实操作数;编号为2、4、6、8的4个第一操作数为第一虚操作数。且编号为1的第一实操作数与编号为2的第一虚操作数相对应;编号为3的第一实操作数与编号为4的第一虚操作数相对应;编号为5的第一实操作数与编号为6的第一虚操作数相对应;编号为7的第一实操作数与编号为8的第一虚操作数相对应。
[0067]
前述“交错方式”是指将编号为1、3、5、7的4个第一实操作数读入寄存器q1中;将编号为2、4、6、8的4个第一虚操作数读入寄存器q2中。需要说明的是,neon是进阶精简指令集机器(advanced risc machine,arm)架构下基于128位单指令多数据流(single instruction multiple data,simd)实现的扩展架构,能够复制多个操作数,并把它们打包在大型寄存器内的一组指令集。可以实现让一个寄存器中的多个操作数同时执行单个指令,从而做到并行处理,大大提高执行效率。mdf算法中涉及到的操作数类型通常为32位浮点型,而neon通常有16个128位的寄存器。这样就可以每次将4个操作数打包到一个neon的寄存器中,从而在执行矩阵算子操作的时候,对这4个操作数并行处理,处理完成后将寄存器中的数据回写到内存中即可。
[0068]
可以通过以下公式计算第一音频的频域数据x对应的功率谱:
[0069][0070]
其中,ps为功率谱,xr为个第一实操作数中的第一目标实操作数,xi为个第一虚操作数中与第一目标实操作数对应的第一目标虚操作数。即xr为编号为1、3、5、7的4个第一实操作数中的第一目标实操作数;xi为编号为2、4、6、8的4个第一虚操作数中的第一目标虚操作数。例如,xr为编号为1的第一目标实操作数时,xi即为对应的编号为2的第一目标虚操作数;xr为编号为3的第一目标实操作数时,xi即为对应的编号为4的第一目标虚操作数;xr为编号为5的第一目标实操作数时,xi即为对应的编号为6的第一目标虚操作数;xr为编号为7的第一目标实操作数时,xi即为对应的编号为8的第一目标虚操作数。
[0071]
可以使用neon指令vmulq_f32执行乘法操作,计算存入ps寄存器中。接下来,可以使用neon指令vmlaq_f32执行先乘后加操作,计算即计算完成第一音频的频域数据x对应的功率谱的计算。此时,可以得到4个的数据结果。然后,可以使用neon指令vst1q_f32将寄存器ps中的数据结果回写到本端的终端的内存中,即可以使用neon指令vst1q_f32将寄存器ps中的数据结果回写到主播b这一侧的终端的内存中。
[0072]
进一步的,可以按照如下顺序将寄存器ps中的数据结果回写到本端的终端的内存中:利用编号为1的第一实操作数和编号为2的第一虚操作数计算出的——利用编号为3的第一实操作数和编号为4的第一虚操作数计算出的——利用编号为5的第一实操作数和编号为6的第一虚操作数计算出的——利用编号为7的第一实操作数和编号为8的第一虚操作数计算出的这样,可以方便查找内存中的第一音频的频域数据x对应的功率谱。
[0073]
s103、根据循环读取的所述m个第一操作数、所述m个第二操作数和个第一权重,
计算共轭的加权互功率谱,其中,所述个第一权重与所述m个第一操作数以及所述m个第二操作数相对应。
[0074]
在s103中,可以根据循环读取的m个第一操作数、m个第二操作数和个第一权重,计算共轭的加权互功率谱。其中,个第一权重与m个第一操作数以及m个第二操作数相对应。即可以根据循环读取的8个第一操作数、8个第二操作数和个第一权重,计算共轭的加权互功率谱。其中,个第一权重与8个第一操作数以及8个第二操作数相对应。需要说明的是,对端的第二音频的频域数据y也可以包含48000个数据点。第一次可以读取48000个数据点中的第1个第二操作数~第8个第二操作数;第二次可以读取48000个数据点中的第9个第二操作数~第16个第二操作数;第三次可以读取48000个数据点中的第17个第二操作数~第24个第二操作数。如此循环下去,直至将48000个数据点均读取处理完毕为止。
[0075]
优选的,所述根据循环读取的所述m个第一操作数、所述m个第二操作数和个第一权重,计算共轭的加权互功率谱,包括:
[0076]
所述m个第二操作数包含m/2个第二实操作数和m/2个第二虚操作数;通过以下公式计算所述共轭的加权互功率谱:
[0077]
prod.r=p
×w×
(xr×
yr xi×
yi)
[0078]
prod.i=p
×w×
(xr×yi-xi×
yr)
[0079]
其中,prod.r为所述共轭的加权互功率谱的实部,prod.i为所述共轭的加权互功率谱的虚部,yr为所述个第二实操作数中的第二目标实操作数,yi为所述个第二虚操作数中与所述第二目标实操作数对应的第二目标虚操作数,w为所述个第一权重中与所述xr、所述xi、所述yr和所述yi相对应的第一目标权重,所述p为总权重。
[0080]
需要说明的是,m个第二操作数可以包含m/2个第二实操作数和m/2个第二虚操作数。即8个第二操作数可以包含8/2=4个第二实操作数和8/2=4个第二虚操作数。
[0081]
如图3所示,为一种本端的第一音频的频域数据x包含的前8个第一操作数,以及对端的第二音频的频域数据y包含的前8个第二操作数的示意图。在图3中,编号为1、3、5、7的4个第一操作数为第一实操作数;编号为2、4、6、8的4个第一操作数为第一虚操作数。且编号为1的第一实操作数与编号为2的第一虚操作数相对应;编号为3的第一实操作数与编号为4的第一虚操作数相对应;编号为5的第一实操作数与编号为6的第一虚操作数相对应;编号为7的第一实操作数与编号为8的第一虚操作数相对应。
[0082]
编号为1*、3*、5*、7*的4个第二操作数为第二实操作数;编号为2*、4*、6*、8*的4个第二操作数为第二虚操作数。且编号为1*的第二实操作数与编号为2*的第二虚操作数相对应;编号为3*的第二实操作数与编号为4*的第二虚操作数相对应;编号为5*的第二实操作数与编号为6*的第二虚操作数相对应;编号为7*的第二实操作数与编号为8*的第二虚操作
数相对应。
[0083]
每次读取第一操作数和第二操作数时,可以使用neon指令vld2q_f32以交错方式分别读取第一音频的频域数据x的8个第一操作数,以及第二音频的频域数据y的8个第二操作数。前述“交错方式”是指将编号为1、3、5、7的4个第一实操作数读入寄存器q1中;将编号为1*、3*、5*、7*的4个第二实操作数读入寄存器q2中;将编号为2、4、6、8的4个第一虚操作数读入寄存器q3中;将编号为2*、4*、6*、8*的4个第二虚操作数读入寄存器q4中。
[0084]
可以通过以下公式计算共轭的加权互功率谱:
[0085]
prod.r=p
×w×
(xr×
yr xi×
yi)
[0086]
prod.i=p
×w×
(xr×yi-xi×
yr)
[0087]
其中,prod.r为共轭的加权互功率谱的实部,prod.i为共轭的加权互功率谱的虚部,yr为个第二实操作数中的第二目标实操作数,yi为个第二虚操作数中与第二目标实操作数对应的第二目标虚操作数。即yr为编号为1*、3*、5*、7*的4个第二实操作数中的第二目标实操作数;yi为编号为2*、4*、6*、8*的4个第二虚操作数中的第二目标虚操作数。例如,yr为编号为1*的第二目标实操作数时,yi即为对应的编号为2*的第二目标虚操作数;yr为编号为3*的第二目标实操作数时,yi即为对应的编号为4*的第二目标虚操作数;yr为编号为5*的第二目标实操作数时,yi即为对应的编号为6*的第二目标虚操作数;yr为编号为7*的第二目标实操作数时,yi即为对应的编号为8*的第二目标虚操作数。
[0088]
w可以为个第一权重中与xr、xi、yr和yi相对应的第一目标权重,即w可以为个第一权重中与xr、xi、yr和yi相对应的第一目标权重。p为总权重。
[0089]
可以使用neon指令vld1q_f32以顺序方式读取4个第一权重,存入寄存器q5中。接下来,可以使用neon指令vmulq_f32执行乘法操作,计算综合权重w
×
p,存入寄存器q6中。
[0090]
然后,可以使用neon指令vmulq_f32和vmlaq_f32计算共轭互功率谱的实部,对应操作为xr×
yr xi×
yi;使用neon指令vmulq_f32和vmlsq_f32计算共轭互功率谱的虚部,对应操作为xr×yi-xi×
yr。
[0091]
接下来,可以使用neon指令vmluq_f32分别对共轭互功率谱的实部和共轭互功率谱的虚部乘以综合权重w
×
p,求得共轭的加权互功率谱的实部prod.r和共轭的加权互功率谱的虚部prod.i。
[0092]
需要说明的是,在图3中,可以将本端的第一音频的频域数据x中的编号为1的第一实操作数、本端的第一音频的频域数据x中的编号为2的第一虚操作数、对端的第二音频的频域数据y中的编号为1*的第二实操作数、对端的第二音频的频域数据y中的编号为2*的第二虚操作数作为一组数据计算共轭的加权互功率谱的实部prod.r和共轭的加权互功率谱的虚部prod.i,此时xr即为本端的第一音频的频域数据x中的编号为1的第一实操作数;xi即为本端的第一音频的频域数据x中的编号为2的第一虚操作数;yr即为对端的第二音频的频域数据y中的编号为1*的第二实操作数;yi即为对端的第二音频的频域数据y中的编号为2*的第二虚操作数。此时上述xr、xi、yr、yi对应一个第一目标权重w。
[0093]
类似的,也可以将本端的第一音频的频域数据x中的编号为3的第一实操作数、本端的第一音频的频域数据x中的编号为4的第一虚操作数、对端的第二音频的频域数据y中
的编号为3*的第二实操作数、对端的第二音频的频域数据y中的编号为4*的第二虚操作数作为一组数据计算共轭的加权互功率谱的实部prod.r和共轭的加权互功率谱的虚部prod.i。此时xr即为本端的第一音频的频域数据x中的编号为3的第一实操作数;xi即为本端的第一音频的频域数据x中的编号为4的第一虚操作数;yr即为对端的第二音频的频域数据y中的编号为3*的第二实操作数;yi即为对端的第二音频的频域数据y中的编号为4*的第二虚操作数。此时,该xr、xi、yr、yi也对应一个第一目标权重w。
[0094]
也可以将本端的第一音频的频域数据x中的编号为5的第一实操作数、本端的第一音频的频域数据x中的编号为6的第一虚操作数、对端的第二音频的频域数据y中的编号为5*的第二实操作数、对端的第二音频的频域数据y中的编号为6*的第二虚操作数作为一组数据计算共轭的加权互功率谱的实部prod.r和共轭的加权互功率谱的虚部prod.i。此时xr即为本端的第一音频的频域数据x中的编号为5的第一实操作数;xi即为本端的第一音频的频域数据x中的编号为6的第一虚操作数;yr即为对端的第二音频的频域数据y中的编号为5*的第二实操作数;yi即为对端的第二音频的频域数据y中的编号为6*的第二虚操作数。此时,该xr、xi、yr、yi也对应一个第一目标权重w。
[0095]
也可以将本端的第一音频的频域数据x中的编号为7的第一实操作数、本端的第一音频的频域数据x中的编号为8的第一虚操作数、对端的第二音频的频域数据y中的编号为7*的第二实操作数、对端的第二音频的频域数据y中的编号为8*的第二虚操作数作为一组数据计算共轭的加权互功率谱的实部prod.r和共轭的加权互功率谱的虚部prod.i。此时xr即为本端的第一音频的频域数据x中的编号为7的第一实操作数;xi即为本端的第一音频的频域数据x中的编号为8的第一虚操作数;yr即为对端的第二音频的频域数据y中的编号为7*的第二实操作数;yi即为对端的第二音频的频域数据y中的编号为8*的第二虚操作数。此时,该xr、xi、yr、yi也对应一个第一目标权重w。
[0096]
此时,可以得到4对prod.r和prod.i。最后,可以使用neon指令vst2q_f32将寄存器中的4对prod.r和prod.i以交错方式回写到本端的终端的内存中。即可以使用neon指令vst2q_f32将寄存器中的4对prod.r和prod.i以交错方式回写到主播b这一侧的终端的内存中。
[0097]
其中,该交错方式是指回写顺序可以为:编号为1的第一实操作数、编号为2的第一虚操作数、编号为1*的第二实操作数、编号为2*的第二虚操作数作为一组数据计算出的prod.r.1——编号为1的第一实操作数、编号为2的第一虚操作数、编号为1*的第二实操作数、编号为2*的第二虚操作数作为一组数据计算出的prod.i.1——编号为3的第一实操作数、编号为4的第一虚操作数、编号为3*的第二实操作数、编号为4*的第二虚操作数作为一组数据计算出的prod.r.2——编号为3的第一实操作数、编号为4的第一虚操作数、编号为3*的第二实操作数、编号为4*的第二虚操作数作为一组数据计算出的prod.i.2——编号为5的第一实操作数、编号为6的第一虚操作数、编号为5*的第二实操作数、编号为6*的第二虚操作数作为一组数据计算出的prod.r.3——编号为5的第一实操作数、编号为6的第一虚操作数、编号为5*的第二实操作数、编号为6*的第二虚操作数作为一组数据计算出的prod.i.3——编号为7的第一实操作数、编号为8的第一虚操作数、编号为7*的第二实操作数、编号为8*的第二虚操作数作为一组数据计算出的prod.r.4——编号为7的第一实操作数、编号为8的第一虚操作数、编号为7*的第二实操作数、编号为8*的第二虚操作数作为一
组数据计算出的prod.i.4。这样,可以方便查找内存中的共轭的加权互功率谱。
[0098]
s104、根据所述第一音频的频域数据对应的功率谱以及所述共轭的加权互功率谱,消除所述第一音频的频域数据中与所述第二音频的频域数据相关的回声分量。
[0099]
在s104中,可以根据第一音频的频域数据对应的功率谱以及共轭的加权互功率谱,消除第一音频的频域数据x中与第二音频的频域数据y相关的回声分量。此时,消除掉第一音频的频域数据x中与第二音频的频域数据y相关的回声分量之后,即将主播b的声卡采集到的外放出来的主播a的说话声音消除掉之后,主播a的终端接收到主播b的终端发送的音频信号时,就只会听到主播b的声音,不会听到自己所说的话的声音,即消除了回声。可以避免回声给主播a和主播b带来较差的直播体验。
[0100]
需要说明的是,可以选取一段时长约25s的音频数据,分别执行10次原始的mdf算法和本技术的方法,即使用neon指令集优化后的算法。将耗时精确到微秒级。如图4所示,为一种使用原始的mdf算法和本技术的方法进行回声消除的耗时结果对比图。在图4中,列出了10次执行中每次执行的结果。每次执行的结果包含使用原始的mdf算法进行回声消除的耗时、使用本技术的方法,即使用neon指令集优化后的算法进行回声消除的耗时、使用原始的mdf算法进行回声消除的耗时与使用本技术的方法进行回声消除的耗时的差值delta、以及该差值与使用原始的mdf算法进行回声消除的耗时的比值percent。另外,在图4中还列出了10次执行中使用原始的mdf算法进行回声消除的平均耗时、使用本技术的方法,即使用neon指令集优化后的算法进行回声消除的平均耗时、两个平均耗时之间的差值,以及两个平均耗时之间的差值与使用原始的mdf算法进行回声消除的平均耗时的比值。
[0101]
从图4可以看出,使用本技术的方法,即使用neon指令集优化后的算法进行回声消除的平均耗时,比使用原始的mdf算法进行回声消除的平均耗时缩短了大约38%,使用本技术的方法进行回声消除的耗时更短,效率更高。
[0102]
需要说明的是,现有技术中,由于mdf中的矩阵算子的计算量很大,导致在利用mdf进行回声消除时,所耗费的时间较长,效率较低。
[0103]
而在本技术中,可以循环读取本端的第一音频的频域数据中的m个第一操作数,并循环读取对端的第二音频的频域数据中的m个第二操作数。进而可以基于循环读取的本端的第一音频的频域数据中的m个第一操作数以及对端的第二音频的频域数据中的m个第二操作数,消除第一音频的频域数据中与第二音频的频域数据相关的回声分量。即可以实现对多个操作数进行并行处理,在进行回声消除时,所耗费的时间较短,效率较高。
[0104]
由以上技术方案可知,本发明实施例提供的一种音频数据的优化方法,循环读取本端的第一音频的频域数据中的m个第一操作数,并循环读取对端的第二音频的频域数据中的m个第二操作数,其中m为正整数,且m》1;根据循环读取的所述m个第一操作数,计算所述第一音频的频域数据对应的功率谱;根据循环读取的所述m个第一操作数、所述m个第二操作数和个第一权重,计算共轭的加权互功率谱,其中,所述个第一权重与所述m个第一操作数以及所述m个第二操作数相对应;根据所述第一音频的频域数据对应的功率谱以及所述共轭的加权互功率谱,消除所述第一音频的频域数据中与所述第二音频的频域数据相关的回声分量。这样,可以循环读取本端的第一音频的频域数据中的m个第一操作数,并循环读取对端的第二音频的频域数据中的m个第二操作数。进而可以基于循环读取的本端的
第一音频的频域数据中的m个第一操作数以及对端的第二音频的频域数据中的m个第二操作数,消除第一音频的频域数据中与第二音频的频域数据相关的回声分量。即可以实现对多个操作数进行并行处理,在进行回声消除时,所耗费的时间较短,效率较高。
[0105]
参见图5,图5是本发明提供的一种音频数据的优化装置的结构图。如图5所示,音频数据的优化装置500包括循环读取模块501、第一计算模块502、第二计算模块503和消除模块504,其中:
[0106]
循环读取模块501,用于循环读取本端的第一音频的频域数据中的m个第一操作数,并循环读取对端的第二音频的频域数据中的m个第二操作数,其中m为正整数,且m》1;
[0107]
第一计算模块502,用于根据循环读取的所述m个第一操作数,计算所述第一音频的频域数据对应的功率谱;
[0108]
第二计算模块503,用于根据循环读取的所述m个第一操作数、所述m个第二操作数和个第一权重,计算共轭的加权互功率谱,其中,所述个第一权重与所述m个第一操作数以及所述m个第二操作数相对应;
[0109]
消除模块504,用于根据所述第一音频的频域数据对应的功率谱以及所述共轭的加权互功率谱,消除所述第一音频的频域数据中与所述第二音频的频域数据相关的回声分量。
[0110]
音频数据的优化装置500能够实现图1的方法实施例中音频数据的优化装置实现的各个过程,为避免重复,这里不再赘述。且音频数据的优化装置500可以实现循环读取本端的第一音频的频域数据中的m个第一操作数,并循环读取对端的第二音频的频域数据中的m个第二操作数。进而可以基于循环读取的本端的第一音频的频域数据中的m个第一操作数以及对端的第二音频的频域数据中的m个第二操作数,消除第一音频的频域数据中与第二音频的频域数据相关的回声分量。即可以实现对多个操作数进行并行处理,在进行回声消除时,所耗费的时间较短,效率较高。
[0111]
请参阅图6,图6为本技术实施例提供的电子设备的实施例示意图。
[0112]
如图6所示,本技术实施例提供了一种电子设备600,包括存储器610、处理器620及存储在存储器610上并可在处理器620上运行的计算机程序611,处理器620执行计算机程序611时实现以下步骤:
[0113]
循环读取本端的第一音频的频域数据中的m个第一操作数,并循环读取对端的第二音频的频域数据中的m个第二操作数,其中m为正整数,且m》1;
[0114]
根据循环读取的所述m个第一操作数,计算所述第一音频的频域数据对应的功率谱;
[0115]
根据循环读取的所述m个第一操作数、所述m个第二操作数和个第一权重,计算共轭的加权互功率谱,其中,所述个第一权重与所述m个第一操作数以及所述m个第二操作数相对应;
[0116]
根据所述第一音频的频域数据对应的功率谱以及所述共轭的加权互功率谱,消除所述第一音频的频域数据中与所述第二音频的频域数据相关的回声分量。
[0117]
在具体实施过程中,处理器620执行计算机程序611时,可以实现图1对应的实施例
中任一实施方式。
[0118]
由于本实施例所介绍的电子设备为实施本技术实施例中一种音频数据的优化装置所采用的设备,故而基于本技术实施例中所介绍的方法,本领域所属技术人员能够了解本实施例的电子设备的具体实施方式以及其各种变化形式,所以在此对于该电子设备如何实现本技术实施例中的方法不再详细介绍,只要本领域所属技术人员实施本技术实施例中的方法所采用的设备,都属于本技术所欲保护的范围。
[0119]
请参阅图7,图7为本技术实施例提供的一种计算机可读存储介质的实施例示意图。
[0120]
如图7所示,本实施例提供了一种计算机可读存储介质700,其上存储有计算机程序711,该计算机程序711被处理器执行时实现如下步骤:
[0121]
循环读取本端的第一音频的频域数据中的m个第一操作数,并循环读取对端的第二音频的频域数据中的m个第二操作数,其中m为正整数,且m》1;
[0122]
根据循环读取的所述m个第一操作数,计算所述第一音频的频域数据对应的功率谱;
[0123]
根据循环读取的所述m个第一操作数、所述m个第二操作数和个第一权重,计算共轭的加权互功率谱,其中,所述个第一权重与所述m个第一操作数以及所述m个第二操作数相对应;
[0124]
根据所述第一音频的频域数据对应的功率谱以及所述共轭的加权互功率谱,消除所述第一音频的频域数据中与所述第二音频的频域数据相关的回声分量。
[0125]
在具体实施过程中,该计算机程序711被处理器执行时可以实现图1对应的实施例中任一实施方式。
[0126]
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
[0127]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0128]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0129]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或
多个方框中指定的功能。
[0130]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0131]
本技术实施例还提供了一种计算机程序产品,该计算机程序产品包括计算机软件指令,当计算机软件指令在处理设备上运行时,使得处理设备执行如图1对应实施例中的音频数据的优化方法中的流程。
[0132]
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘(solid state disk,ssd))等。
[0133]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0134]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0135]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0136]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0137]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,
rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0138]
以上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修该或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献