1.本申请涉及计算机技术领域,特别是涉及一种语音传输方法、系统、装置、计算机可读存储介质和计算机设备。
背景技术:2.互联网是非可靠的传输网络,基于互联网的语音传输面对的主要问题就是抗丢包问题,由于传输网络的不稳定性,传输过程会出现丢包现象。为了抵抗网络丢包,通常会采用fec(forward error correction,前向纠错)冗余编码这种信道编码算法生成冗余包,将冗余包与数据包一起发送到接收端,接收端收到后通过冗余包和原始包来恢复出丢失的数据包,从而起到抗丢包的效果。
3.然而,fec冗余编码依靠生成冗余包来抵抗传输网络的丢包问题,势必带来带宽成倍数的增大,消耗过多网络带宽资源,抗丢包能力越强则消耗网络带宽越多,尤其对于带宽受限场景下容易出现网络拥塞等问题反而会导致丢包更多。
技术实现要素:4.基于此,有必要针对现有技术中对数据包进行冗余编码消耗更多网络带宽资源可能造成丢包更多的技术问题,提供一种语音传输方法、装置、系统、计算机可读存储介质和计算机设备。
5.一种语音传输方法,包括:
6.获取语音编码码流中的当前编码数据;
7.通过基于机器学习的丢包恢复能力预测模型,根据当前编码数据对应的第一语音编码特征参数以及所述当前编码数据的在前编码数据对应的第二语音编码特征参数,获得所述当前编码数据对应的丢包恢复能力;
8.根据所述丢包恢复能力判决是否需要进行冗余编码处理;
9.若是,则根据所述当前编码数据进行冗余编码生成相应的冗余包后,再将所述当前编码数据及所述冗余包传输至接收端;
10.若否,则直接将所述当前编码数据传输至接收端。
11.一种语音传输系统,包括发送端和接收端,其中:
12.所述发送端用于获取语音编码码流中的当前编码数据,通过基于机器学习的丢包恢复能力预测模型,根据所述当前编码数据对应的第一语音编码特征参数以及所述当前编码数据的在前编码数据对应的第二语音编码特征参数,获得所述当前编码数据对应的丢包恢复能力;
13.所述发送端还用于根据所述丢包恢复能力判决是否需要进行冗余编码处理;若是,则根据所述当前编码数据进行冗余编码生成相应的冗余包后,再将所述当前编码数据及所述冗余包传输至接收端;若否,则直接将所述当前编码数据传输至接收端;
14.所述接收端用于接收到所述当前编码数据时,则直接对所述当前编码数据进行语
音解码,获得所述当前编码数据对应的语音信号;还用于当未接收到所述当前编码数据、且接收到所述冗余包时,则通过所述接收端基于所述冗余包进行冗余解码处理,得到所述当前编码数据后再对所述当前编码数据进行语音解码,获得所述当前编码数据对应的语音信号;
15.所述接收端还用于未接收到所述当前编码数据及所述冗余包时,则通过所述接收端对所述当前编码数据进行丢包恢复处理,获得对应于所述当前编码数据的恢复包,对所述恢复包进行语音解码,获得所述当前编码数据对应的语音信号。
16.一种语音传输装置,所述装置包括:
17.获取模块,用于获取语音编码码流中的当前编码数据;
18.预测模块,用于通过基于机器学习的丢包恢复能力预测模型,根据当前编码数据对应的第一语音编码特征参数以及所述当前编码数据的在前编码数据对应的第二语音编码特征参数,获得所述当前编码数据对应的丢包恢复能力;
19.冗余编码判决模块,用于根据所述丢包恢复能力判决是否需要进行冗余编码处理;若是,则根据所述当前编码数据进行冗余编码生成相应的冗余包后,再将所述当前编码数据及所述冗余包传输至接收端;若否,则直接将所述当前编码数据传输至接收端。
20.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行上述语音传输方法的步骤。
21.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行上述语音传输方法的步骤。
22.上述语音传输方法、系统、装置、计算机可读存储介质和计算机设备,在向接收端传输当前编码数据之前,通过基于机器学习的丢包恢复能力预测模型,根据当前编码数据对应的第一语音编码特征参数以及在前的编码数据对应的第二语音编码特征参数来预测接收端对当前编码数据的丢包恢复能力,从而根据该丢包恢复能力来判决是否对当前编码数据进行冗余编码,若是,则需要对当前编码数据进行冗余编码生成冗余包后,消耗必要的网络带宽资源将冗余包传输至接收端,反之,则不需要对当前编码数据进行冗余编码,直接将当前编码数据传输至接收端,避免消耗过多的网络带宽资源,从而在整体上有效提升网络带宽的利用率,同时也能保证传输网络的抗丢包能力。
附图说明
23.图1为一个实施例中语音传输方法的应用环境图;
24.图2为另一个实施例中语音传输方法的应用环境图;
25.图3为一个实施例中语音传输方法的流程示意图;
26.图4为一个实施例中采用fec冗余编码机制进行语音传输的示意框图;
27.图5为一个实施例中丢包恢复能力预测模型的训练步骤的流程示意图;
28.图6为一个实施例中丢包恢复能力预测模型的训练框图;
29.图7为一个实施例中语音传输方法的流程框图;
30.图8为一个具体的实施例中语音传输方法的流程示意图;
31.图9为一个实施例中语音传输装置的结构框图;
32.图10为一个实施例中计算机设备的结构框图。
具体实施方式
33.为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
34.图1为一个实施例中语音传输方法的应用环境图。参照图1,该语音传输方法应用于语音传输系统。该语音传输系统包括发送端110和接收端120。发送端110和接收端120通过网络连接。发送端110、接收端120均可以是终端,终端具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。在另一些实施例中,发送端110、接收端120也可以是服务器或服务器集群。
35.如图2所示,在一个具体的应用场景中,发送端110与接收端120上均运行有支持语音传输功能的应用程序,服务器130可以为该应用程序提供计算能力及存储能力,发送端110、接收端120均可以通过网络与服务器130连接,从而基于该服务器130实现两端的语音传输。服务器130可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
36.在一个实施例中,发送端110可以获取语音编码码流中的当前编码数据;通过基于机器学习的丢包恢复能力预测模型,根据当前编码数据对应的第一语音编码特征参数以及当前编码数据的在前编码数据对应的第二语音编码特征参数,获得当前编码数据对应的丢包恢复能力;根据丢包恢复能力判决是否需要进行冗余编码处理;若是,则根据当前编码数据进行冗余编码生成相应的冗余包后,再将当前编码数据及冗余包传输至接收端120;若否,则直接将当前编码数据传输至接收端120,能够在整体上有效提升网络带宽的利用率,同时也能保证传输网络的抗丢包能力。
37.如图3所示,在一个实施例中,提供了一种语音传输方法。本实施例主要以该方法应用于上述图1或图2中的发送端110来举例说明。参照图3,该语音传输方法具体包括如下步骤s302至s308:
38.s302,获取语音编码码流中的当前编码数据。
39.其中,语音编码码流是对语音信号进行语音编码后获得的原始码流,语音编码码流中包括一组待传输的编码数据。其中,编码数据可以是发送端的语音编码器按照特定帧长对语音信号进行编码获得的编码数据帧,发送端可以通过网络将语音编码码流中的编码数据帧传输至接收端。编码数据也可以是根据多个编码数据帧合成得到的一个编码数据包,发送端可以通过网络将语音编码码流中的编码数据包传输至接收端。例如,发送端的编码器获取60ms的语音信号,以15ms为帧长将语音信号划分为4帧,并按顺序进行编码,获得4个编码数据帧,发送端可以依次将编码数据帧传输至接收端,发送端还可以将这4个编码数据帧合成一个编码数据包后再通过网络传输至接收端。
40.通常为了抵抗传输网络的丢包问题,如图4所示,发送端在将语音编码码流传输至接收端之前,会直接采用fec冗余编码将语音编码码流中的各个编码数据发送至接收端,接收端可以通过网络接收各个编码数据及对应的冗余包,并根据冗余包进行冗余解码获得丢失的编码数据后再经过解码获得语音信号。例如,待传输的语音编码码流包括p1、p2、p3、p4及p5五个编码数据,接收端可以根据这5个编码数据进行冗余编码生成冗余包,冗余包的数量可以是一个或多个,这里假设生成2个冗余包r1和r2,再将p1、p2、p3、p4、p5与r1、r2打包后发送至接收端。
41.而在本申请提供的实施例中,在发送端对原始语音信息进行编码获得语音编码码流后,在将语音编码码流中的各个编码数据发送至接收端之前,发送端可以依次预测接收端对语音编码码流中各个编码数据的丢包恢复能力,因此,发送端可以依次获取语音编码码流中的编码数据,当前编码数据是当前待传输至接收端的编码数据。
42.可以理解,本申请所使用的当前编码数据用于描述发送端当前正在处理的编码数据,在前编码数据用于描述语音编码码流中在当前编码数据之前的编码数据,在前编码数据可以是当前编码数据的前一个编码数据,还可以是当前编码数据的前面多个编码数据,比如,可以是当前编码数据的前两个编码数据。另外,当前编码数据是一个相对变化的对象,比如,在发送端对当前编码数据f(i)处理结束后,则可将语音编码码流中该当前编码数据f(i)的下一个编码数据f(i+1)作为新的当前编码数据,将当前编码数据f(i)作为新的当前编码数据f(i+1)的在前编码数据。
43.在一个实施例中,上述语音传输方法还包括:获取原始语音信号;将原始语音信号进行分割,获得原始语音序列;依次对原始语音序列中的语音片段进行语音编码,获得语音编码码流。
44.例如,发送端获取的原始语音信号是一段2秒的语音,以20毫秒为单位将这一段语音信号进行分割,获得100个语音片段构成的原始语音序列,然后依次对该原始语音序列中的各个语音片段进行语音编码,获得各个语音片段对应的编码数据,从而生成原始语音信号对应的语音编码码流。
45.在一个实施例中,上述语音传输方法还包括:获取原始语音序列中的语音片段各自对应的语音编码特征参数;根据语音编码特征参数对相应的语音片段进行语音编码,生成对应的编码数据后获得语音编码码流;缓存语音编码过程中各个编码数据所采用的语音编码特征参数。
46.具体地,在语音编码过程中,发送端提取原始语音序列中的语音片段的语音编码特征参数,对提取的语音编码特征参数进行编码,生成各个语音片段对应的编码数据,例如,发送端的编码器通过一些语音信号处理模型(如滤波器、特征提取器等)提取语音片段的语音编码特征参数,再对这些语音编码特征参数进行编码(如熵编码)后按照一定数据格式进行打包获得对应的编码数据。需要说明的是,发送端可以根据当前语音片段的语音编码特征参数及在前语音片段的语音编码特征参数联合生成当前语音片段对应的当前编码数据,还可以根据当前语音片段的语音编码特征参数及在后语音片段的语音编码特征参数联合生成当前语音片段对应的当前编码数据。其中,语音编码特征参数可以是根据语音片段进行信号处理提取的线谱对频率(line spectrum frequency,lsf)、基音周期(pitch detection)、自适应码书增益(adaptive gain)及固定码书增益等参数。
47.进一步地,发送端生成每个语音片段对应的编码数据时,还会缓存编码过程中各个语音片段的语音编码特征参数,也就是生成各个编码数据时所采用的语音编码特征参数,用于后续基于缓存的语音编码特征参数预测各个编码数据对应的丢包恢复能力。
48.s304,通过基于机器学习的丢包恢复能力预测模型,根据当前编码数据对应的第一语音编码特征参数以及当前编码数据的在前编码数据对应的第二语音编码特征参数,获得当前编码数据对应的丢包恢复能力。
49.其中,丢包恢复能力是一种预测结果,能够反映接收端在当前编码数据丢失后对
当前编码数据进行丢包恢复处理所获得的恢复包的语音质量情况。预测结果指示了接收端可以很好地恢复丢失的当前编码数据或是不能很好地恢复丢失的当前编码数据。丢包恢复处理即为plc(packet loss concealment丢包隐藏),丢包恢复能力即为plc的丢包恢复能力。
50.在编码数据的语音编码特征参数存在数值突变的情况下,接收端丢包恢复能力存在局限,例如,在相邻或相近的编码数据存在基频跳变、lsf突变等情况下,接收端的丢包恢复能力有限,此种情况下发送端开启fec冗余编码能够有效提升丢包率从而保证接收端的语音质量;而在相邻编码数据的语音编码特征参数的数值波动相对平稳的情况下,接收端通常具备良好的丢包恢复能力,此种情况下发送端可以无需开启fec冗余编码。据此可知,当前编码数据对应的丢包恢复能力与其对应的语音编码特征参数存在联系,机器学习模型可以通过大量的训练样本进行训练后,学习到如何根据语音编码特征参数预测数据包对应的丢包恢复能力。
51.具体地,发送端可以获取缓存的当前编码数据对应的第一语音编码特征参数,以及在前编码数据对应的第二语音编码特征参数,并通过事先训练好的丢包恢复能力预测模型,根据第一语音编码特征参数与第二语音编码特征参数对当前编码数据对应的丢包恢复能力进行预测。
52.在另一些实施例中,发送端可以通过丢包恢复能力预测模型,根据当前编码数据对应的第一语音编码特征参数以及当前编码数据的在后编码数据对应的第三语音编码特征参数,获得当前编码数据对应的丢包恢复能力。或者,根据第二语音编码特征参数和/或第三语音编码特征参数,获得当前编码数据对应的丢包恢复能力。在后编码数据用于描述语音编码码流中在当前编码数据后面的编码数据,在后编码数据可以是当前编码数据的后一个编码数据,还可以是当前编码数据的后面多个编码数据,比如,可以是当前编码数据的后两个编码数据。
53.可以理解的是,发送端使用哪些编码数据对应的语音编码特征参数作为丢包恢复能力预测模型的输入,取决于发送端进行语音编码时所采用的算法规则或接收端进行语音解码时所采用的算法规则,编解码规则是相互对应的。例如,若发送端在生成当前编码数据时,需要根据前一编码数据所对应的语音编码特征参数,则对当前编码数据对应的丢包恢复能力进行预测时,需要将前一编码数据所采用的语音编码特征参数作为丢包恢复能力预测模型的输入;若发送端在生成当前编码数据时,需要根据后一编码数据所采用的语音编码特征参数,则对当前编码数据对应的丢包恢复能力进行预测时,需要将后一编码数据所采用的语音编码特征参数作为丢包恢复能力预测模型的输入。
54.丢包恢复能力预测模型是基于机器学习的计算机模型,可以采用神经网络模型实现。机器学习模型可通过样本进行学习,从而具备特定的能力。在本实施例中,丢包恢复能力预测模型是事先训练得到的具备预测丢包恢复能力的模型。
55.在一个实施例中,发送端可以事先设置机器学习模型的模型结构,得到初始机器学习模型,再通过大量样本语音和丢包模拟测试,对该初始机器学习模型进行训练得到机器学习模型的模型参数。据此,在需要通过网络传输语音时,发送端可以获取事先训练得到的模型参数,再将该模型参数导入初始机器学习模型,得到丢包恢复能力预测模型,并通过丢包恢复能力预测模型对语音编码码流中各个编码数据对应的丢包恢复能力进行预测,从
而根据预测的丢包恢复能力来决定是否对当前编码数据开启fec冗余编码。
56.如图5所示,为一个实施例中丢包恢复能力预测模型的训练步骤的流程示意图。需要说明的是,该训练步骤可以由任意的计算机设备执行后获得训练好的丢包恢复能力预测模型,然后将训练好的丢包恢复能力预测模型导入至需要进行语音传输的发送端中;该计算机设备也可以是图1或图2中的发送端,也就是说该训练步骤也可以直接由发送端执行并获得训练好的丢包恢复能力预测模型。下面以计算机设备为执行主体来举例说明丢包恢复能力预测模型的训练步骤,具体包括:
57.s502,获取训练集中的样本语音序列。
58.具体地,计算机设备可以获取大量的语音信号,并将语音信号进行分割,获得语音片段构成的大量的语音信号序列,作为用于训练机器学习模型的样本语音序列。
59.s504,对样本语音序列进行语音编码,获得样本语音编码码流。
60.具体地,对于每个样本语音序列,计算机设备提取各个语音片段对应的语音编码特征参数,并根据提取的语音编码特征参数生成各个语音片段对应的编码数据,获得每条样本语音序列对应的样本语音编码码流。计算机设备可以缓存编码过程中各个编码数据所采用的语音编码特征参数。
61.s506,提取样本语音编码码流中的当前编码数据所采用的第一语音编码特征参数以及当前编码数据的在前编码数据所采用的第二语音编码特征参数。
62.前面提到,编码数据对应的丢包恢复能力与其对应的语音编码特征参数存在联系,还可能与在前编码数据和/或在后编码数据对应的语音编码特征参数存在联系,因此,在训练时,计算机设备可以将语音编码特征参数作为机器学习模型的输入来进行训练。在本实施例中,发送端可以提取当前处理的当前编码数据对应的第一语音编码特征参数以及当前编码数据的在前编码数据对应的第二语音编码特征参数,作为机器学习模型的输入。如前文提到的,在前编码数据是当前编码数据的前一个编码数据,还可以是当前编码数据的前面多个编码数据。
63.需要说明的是,每一次的训练对象是一个编码数据,而每条样本语音编码码流包括多个编码数据,因此每条样本语音编码码流可以用于多次训练。例如,在训练过程中时,发送端可以提取样本语音编码码流s中的第i个编码数据对应的语音编码特征参数以及第i-1个编码数据对应的语音编码特征参数,发送端还可以提取样本语音编码码流s中的第i+1个编码数据对应的语音编码特征参数以及第i个编码数据对应的语音编码特征参数。
64.s508,获取直接对样本语音编码码流进行解码并获得第一语音信号后,基于第一语音信号所确定的第一语音质量评分。
65.为了获得本次训练过程机器学习模型的目标输出,发送端需要执行s508至步骤s512。计算机设备可以对编码后获得的样本语音编码码流直接进行解码获得第一语音信号后,使用语音质量测试工具测试该第一语音信号对应的第一语音质量评分。由于第一语音信号是直接对样本语音编码码流进行解码获得的,不存在编码数据丢失的情况,因而获得的第一语音信号与原始的样本语音序列非常靠近,可以称之为无损语音信号,对应的第一语音质量评分可以称之为无损语音质量评分。
66.在一个实施例中,语音质量测试工具可以是pesq(perceptual evaluation of speech quality,主观语音质量评估),pesq可以根据一些衡量标准来客观地评价语音信号
的质量,从而提供可以完全量化的语音质量衡量方法,这些衡量标准又是与人类对语音质量的感受吻合度较高。获得的第一语音质量评分可以记为mos_unloss。
67.s510,获取对当前编码数据进行模拟丢包恢复处理获得恢复包,对恢复包进行解码并获得第二语音信号后,基于第二语音信号所确定的第二语音质量评分。
68.接着,计算机设备可以将当前编码数据作为丢失的数据包,模拟接收端的解码器对当前编码数据进行丢包恢复处理并获得对应的恢复包,对恢复包进行解码后获得对应的第二语音信号,并将原始的样本语音序列中的其它语音片段与该第二语音信号拼接后进行语音质量评分,获得第二语音质量评分。由于第二语音信号是对模拟丢包情况下获得的恢复包进行解码获得的,恢复包与丢失的当前编码数据之间存在损失,因而获得的第二语音信号与当前编码数据对应的语音片段之间也会存在损失,第二语音信号可以称之为有损语音信号,所确定的第二语音质量评分可以称之为有损语音质量评分,记为mos_loss。
69.s512,根据第一语音质量评分与第二语音质量评分之间的评分差异确定当前编码数据对应的真实丢包恢复能力。
70.具体地,当前编码数据对应的真实丢包恢复能力可以用第一语音质量评分与第二语音质量评分之间的评分差异来衡量,即可以将mos_unloss-mos_loss作为当前编码数据对应的真实丢包恢复能力,也就是机器学习模型的目标输出。当前编码数据对应的真实丢包恢复能力与该评分差异成反相关,即该差值越小,代表模拟当前编码数据丢包后进行丢包恢复获得的恢复包的语音质量较好,当前编码数据对应的真实丢包恢复能力较强;反之,该差值越大,代表模拟当前编码数据丢包后进行丢包恢复获得的恢复包的语音质量较差。
71.s514,将第一语音编码特征参数及第二语音编码特征参数输入至机器学习模型,通过机器学习模型输出当前编码数据所对应的预测丢包恢复能力。
72.在获得本次训练过程的目标输出后,计算机设备可以将获得的第一语音编码特征参数及第二语音编码特征参数输入至机器学习模型,经过内部网络的处理输出当前编码数据所对应的预测丢包恢复能力。需要说明的是,s514也可以在步骤s508之前执行,本实施例对该步骤的执行顺序不作限制。
73.s516,根据真实丢包恢复能力与预测丢包恢复能力之间的差异调整机器学习模型的模型参数后,返回至获取训练集中的样本语音序列的步骤继续训练,直至满足训练结束条件。
74.具体地,计算机设备可以根据获取的真实丢包恢复能力与通过机器学习模型获得的预测丢包恢复能力构建损失函数,将该损失函数最小化时获得模型参数作为机器学习模型最新的模型参数,继续根据样本语音序列进行下一次的训练,直至机器学习模型收敛或是训练次数达到预设次数时,获得训练好的具备丢包恢复预测能力的丢包恢复能力预测模型。
75.如图6所示,为一个实施例中对机器学习模型进行训练获得丢包恢复能力预测模型的框架示意图。图6给出的是单次训练过程的流程示意图。计算机设备获取样本语音序列,对样本语音序列进行语音编码获得样本语音编码码流。先对样本语音编码码流在当前编码数据无丢包的情况下直接进行解码后采用pesq获得mos_unloss,再对当前编码数据丢失的情况下模拟进行丢包恢复处理后解码后采用pesq获得mos_loss。将当前编码数据的语音编码特征参数与其在前编码数据的语音编码特征参数作为机器学习模型的输入,获得预
测丢包恢复能力,将mos_unloss-mos_loss作为机器学习模型的目标输出即真实丢包恢复能力,再根据预测丢包恢复能力、真实丢包恢复能力来调整机器学习模型的模型参数,完成本次的训练过程。
76.在一个实施例中,步骤s304,通过基于机器学习的丢包恢复能力预测模型,根据当前编码数据对应的第一语音编码特征参数以及当前编码数据的在前编码数据对应的第二语音编码特征参数,获得当前编码数据对应的丢包恢复能力,包括:将当前编码数据对应的第一语音编码特征参数以及当前编码数据的在前编码数据对应的第二语音编码特征参数输入至丢包恢复能力预测模型;通过丢包恢复能力预测模型,根据第一语音编码特征参数及第二语音编码特征参数,输出对当前编码数据进行直接解码所确定的第一语音质量评分与对当前编码数据进行丢包恢复处理后解码所确定的第二语音质量评分之间的评分差异;根据评分差异确定当前编码数据对应的丢包恢复能力;其中,当前编码数据对应的丢包恢复能力与评分差异成反相关。
77.在本实施例中,在发送端将语音编码码流中的当前编码数据发送至接收端之前,可以通过事先训练好的丢包恢复能力预测模型对当前编码数据对应得丢包恢复能力进行预测。具体地,将当前编码数据对应的第一语音编码特征参数和在前编码数据对应的第二语音编码特征参数作为丢包恢复能力预测模型的输入,丢包恢复能力预测模型的输出是对当前编码数据进行直接解码所确定的第一语音质量评分与对当前编码数据进行丢包恢复处理后解码所确定的第二语音质量评分之间的评分差异,该评分差异反映了当前编码数据丢包后接收端进行丢包恢复处理的质量情况,也就是丢包恢复能力的大小,丢包恢复能力与评分差异成反相关。当该评分差异较大也就是丢包恢复能力小于预设阈值时,表示当前编码数据丢失后如果接收端进行丢包恢复处理获得的语音信号质量较差,反之,当该评分差异较小也就是丢包恢复能力大于预设阈值时,表示当前编码数据丢失后如果接收端进行丢包恢复处理获得的语音信号质量较在可接受范围内。
78.s306,根据丢包恢复能力判决是否需要进行冗余编码处理;若是,则执行步骤s308,根据当前编码数据进行冗余编码生成相应的冗余包后,再将当前编码数据及冗余包传输至接收端;若否,则执行步骤s310,直接将当前编码数据传输至接收端。
79.具体地,当发送端通过丢包恢复能力预测模型获得当前编码数据对应的丢包恢复能力后,根据预测的丢包恢复能力来判决是否将当前编码数据加入fec冗余编码。
80.在一个实施例中,丢包恢复能力预测模型输出的丢包恢复能力为处于一个数值范围内的数值,发送端可以将丢包恢复能力与预设阈值进行比较,根据比较结果来确定是否需要对当前编码数据进行冗余编码处理。
81.具体地,当丢包恢复能力小于预设阈值时,则根据当前编码数据进行冗余编码生成相应的冗余包后,再将当前编码数据及冗余包传输至接收端,当丢包恢复能力小于预设阈值时,表示当前编码数据丢失后如果接收端进行丢包恢复处理获得的语音信号质量较差,所以需要利用fec冗余编码对抗传输网络的丢包问题,也就是需要将当前编码数据加入fec冗余编码生成冗余包后再传输至接收端。当丢包恢复能力大于预设阈值时,则直接将当前编码数据传输至接收端,当丢包恢复能力大于预设阈值时,表示当前编码数据丢失后如果接收端进行丢包恢复处理获得的语音信号质量较在可接受范围内,所以对于该编码数据,发送端不需要使用fec冗余编码作为抗丢包策略,发送端可以直接将当前编码数据传输
至接收端,若存在该当前编码数据丢失的情况下,直接使用接收端的解码器中内置的丢包恢复算法对当前编码数据进行丢包恢复处理即可。
82.在一个实施例中,丢包恢复能力预测模型输出的丢包恢复能力为两种类型,当丢包恢复能力为第一值时,表示当前编码数据丢失后如果接收端进行丢包恢复处理获得的语音信号质量较差,则发送端需要对当前编码数据包进行fec冗余编码处理后再传输至接收端;当丢包恢复能力为第二值时,表示当前编码数据丢失后如果接收端进行丢包恢复处理获得的语音信号质量较在可接受范围内,则发送端可以直接将当前编码数据传输至接收端,在该当前编码数据丢失的情况下,直接使用接收端的解码器中内置的丢包恢复算法对当前编码数据进行丢包恢复处理即可。比如,第一值可以为1,第二值可以为0。又比如,第一值可以为0,第二值可以为1
83.例如,待传输的语音编码码流包括p1、p2、p3、p4
……
,假设当前编码数据为p7,发送端预测到p7对应的丢包恢复能力较弱,则可以将p7添加至需要进行冗余编码的缓存队列中(此时缓存队列可能为空,也可能已经存放了在前编码数据,如p5),若缓存队列未填满,则继续对后续的编码数据对应的丢包恢复能力进行预测,同样将后续的丢包恢复能力较弱的编码数据添加至缓存队列中,直至缓存队列被填满时,发送端可以缓存队列中的编码数据进行冗余编码生成冗余包后,将缓存队列中的编码数据及生成的冗余包发送至接收端,同时清空缓存队列。
84.在一个实施例中,根据所述当前编码数据进行冗余编码生成相应的冗余包后,再将所述当前编码数据及所述冗余包传输至接收端,包括:获取接收端所反馈的丢包状态信息;根据所述丢包状态信息确定所述当前编码数据所对应的冗余率;按照所述冗余率,根据所述当前编码数据生成冗余包后将所述当前编码数据及所述冗余包传输至所述接收端。
85.具体地,接收端可以根据接收到的数据包确定丢包状态信息,并将该丢包状态信息反馈至发送端。丢包状态信息可以用当前的丢包率来表示,接收端可以将该丢包率封装成报文并发送至发送端,发送端解析接收到的控制报文获得丢包率。冗余率r可以是冗余包的数量m与冗余包的数量m、编码数据n的数量n之和的比例,即r=m/(m+n),发送端可以通过调节冗余率来实现不同程度的抗丢包效果,即大冗余率可以解决更多的连续丢包问题,小冗余率可以解决少量连续丢包或者零星丢包问题,即在高丢包率下的r值较大,而低丢包率下的r值就较小。
86.在一个实施例中,语音传输方法还包括:当接收端接收到当前编码数据时,则直接对当前编码数据进行语音解码,获得当前编码数据对应的语音信号;当接收端未接收到当前编码数据、且接收到冗余包时,则通过接收端基于冗余包进行冗余解码处理,得到当前编码数据后再对当前编码数据进行语音解码,获得当前编码数据对应的语音信号。
87.例如,接着上面的举例,发送端经过丢包恢复能力的预测,将编码数据p3、p4、p6、p7、p8、p9添加至缓存队列(缓存队列的长度可以按需设置,比如为6)后,进行冗余编码生成冗余包r1、r2,将缓存队列中的编码数据p3、p4、p6、p7、p8、p9及生成的冗余包r1、r2封装成一个数据组后发送至接收端,为了方便接收端判断是否出现了丢包,该数据组中各个数据包的包序号可以是连续的,比如可以依次为1、2、3、4、5、6。若接收端接收到p3、p4、p6,因为包序号连续没有出现丢包,则接收端可以直接根据接收的p3、p4、p6进行语音解码,获得对应的语音信号;同时接收端可以缓存p3、p4、p6,以供后续可能的fec冗余解码使用,若后续
这一组数据均未出现丢包,则清空缓存。
88.当接收端收到p8、p9时,接收端可以根据包序号判断出p7出现丢失,此时接收端缓存p8、p9,直至接收到r1时,接收端可以根据缓存的p3、p4、p6、p8、p9及r1进行冗余解码处理,得到丢失的p7。当继续收到r2时,可以直接丢弃。
89.在一个实施例中,语音传输方法还包括:
90.当接收端未接收到当前编码数据及冗余包时,则通过接收端对当前编码数据进行丢包恢复处理,获得对应于当前编码数据的恢复包,对恢复包进行语音解码,获得当前编码数据对应的语音信号。
91.接着上面的例子,在p7出现丢失的情况下,若接收端在一定时间内未接收到r1及r2,则接收端无法根据缓存的p3、p4、p6、p8、p9来恢复p7,就需要通过解码器内置的plc算法对当前编码数据进行丢包恢复处理,通常是根据前一数据包的解码信息,利用基音同步重复的方法近似替代当前编码数据,作为恢复包,然后对恢复包进行解码,获得语音信号。另外需要说明的是,接收端可以通过冗余解码恢复该数据组中的丢包的条件是:接收端接收到的编码数据的数量+接收端接收到的冗余包的数量>=该数据组中编码数据的数量。在不满足该条件的情况下,接收端也需要通过解码器内置的plc算法对当前编码数据进行丢包恢复处理。
92.上述语音传输方法,在向接收端传输当前编码数据之前,通过基于机器学习的丢包恢复能力预测模型,根据当前编码数据对应的第一语音编码特征参数以及在前的编码数据对应的第二语音编码特征参数来预测接收端对当前编码数据的丢包恢复能力,从而根据该丢包恢复能力来判决是否对当前编码数据进行冗余编码,若是,则需要对当前编码数据进行冗余编码生成冗余包后,消耗必要的网络带宽资源将冗余包传输至接收端,反之,则不需要对当前编码数据进行冗余编码,直接将当前编码数据传输至接收端,避免消耗过多的网络带宽资源,从而在整体上有效提升网络带宽的利用率,同时也能保证传输网络的抗丢包能力。
93.如图7所示,为一个实施例中语音传输方法的流程框图。参照图7,发送端获取原始语音信号,对原始语音信号进行语音编码获得语音编码码流。接着,发送端通过基于机器学习的丢包恢复能力预测模型预测接收端的针对语音编码码流中每一编码数据的丢包恢复能力。再根据预测的丢包恢复能力判决是否对当前编码数据开启fec冗余编码。若判决对当前编码数据开启fec冗余编码,则根据接收端反馈的丢包状态信息设置冗余率后,并按照该冗余率根据当前编码数据生成冗余包,并将当前编码数据及冗余包传输至接收端。若判决不对当前编码数据开启冗余编码,则直接将当前编码数据传输至接收端。
94.若接收端接收到当前编码数据,则按照正常的解码流程重建语音信号。若接收端未接收到当前编码数据、但接收到了冗余包,在满足可以通过冗余解码恢复丢包的条件下,接收端可以进行fec冗余解码获得当前编码数据。若接收端在一定时间内未接收到当前编码数据及对应的冗余包,则判定当前编码数据丢失,接收端可以通过解码器内置的plc算法对当前编码数据进行丢包恢复处理后进行解码获得语音信号。
95.如图8所示,为一个具体的实施例中语音传输方法的流程示意图。参照图8,包括以下步骤:
96.s802,获取原始语音信号。
97.s804,将原始语音信号进行分割,获得原始语音序列。
98.s806,依次对原始语音序列中的语音片段进行语音编码,获得语音编码码流。
99.s808,缓存语音编码过程中各个编码数据所采用的语音编码特征参数。
100.s810,获取语音编码码流中的当前编码数据。
101.s812,将当前编码数据对应的第一语音编码特征参数以及当前编码数据的在前编码数据对应的第二语音编码特征参数输入至丢包恢复能力预测模型。
102.s814,通过丢包恢复能力预测模型,根据第一语音编码特征参数及第二语音编码特征参数,输出对当前编码数据进行直接解码所确定的第一语音质量评分与对当前编码数据进行丢包恢复处理后解码所确定的第二语音质量评分之间的评分差异。
103.s816,根据评分差异确定当前编码数据对应的丢包恢复能力。
104.s818,当丢包恢复能力小于预设阈值时,则获取接收端所反馈的丢包状态信息;根据丢包状态信息确定当前编码数据所对应的冗余率;按照冗余率,根据当前编码数据生成冗余包后将当前编码数据及冗余包传输至接收端。
105.s820,当丢包恢复能力大于预设阈值时,则直接将当前编码数据传输至接收端。
106.s822,当接收端接收到当前编码数据时,则直接对当前编码数据进行语音解码,获得当前编码数据对应的语音信号。
107.s824,当接收端未接收到当前编码数据、且接收到冗余包时,则通过接收端基于冗余包进行冗余解码处理,得到当前编码数据后再对当前编码数据进行语音解码,获得当前编码数据对应的语音信号。
108.s826,当接收端未接收到当前编码数据及冗余包时,则通过接收端对当前编码数据进行丢包恢复处理,获得对应于当前编码数据的恢复包,对恢复包进行语音解码,获得当前编码数据对应的语音信号。
109.应该理解的是,虽然图3、图5、图8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3、图5、图8中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
110.在一个实施例中,提供了一种语音传输系统,该语音传输系统可以是如图1或如图2所示的语音传输系统,包括发送端110和接收端120,其中:
111.发送端110用于获取语音编码码流中的当前编码数据,通过基于机器学习的丢包恢复能力预测模型,根据当前编码数据对应的第一语音编码特征参数以及当前编码数据的在前编码数据对应的第二语音编码特征参数,获得当前编码数据对应的丢包恢复能力;
112.发送端110还用于根据丢包恢复能力判决是否需要进行冗余编码处理;若是,则根据当前编码数据进行冗余编码生成相应的冗余包后,再将当前编码数据及冗余包传输至接收端;若否,则直接将当前编码数据传输至接收端;
113.接收端120用于接收到当前编码数据时,则直接对当前编码数据进行语音解码,获得当前编码数据对应的语音信号;还用于当未接收到当前编码数据、且接收到冗余包时,则
通过接收端基于冗余包进行冗余解码处理,得到当前编码数据后再对当前编码数据进行语音解码,获得当前编码数据对应的语音信号;
114.接收端120还用于未接收到当前编码数据及冗余包时,则通过接收端对当前编码数据进行丢包恢复处理,获得对应于当前编码数据的恢复包,对恢复包进行语音解码,获得当前编码数据对应的语音信号。
115.在一个实施例中,发送端110还用于获取原始语音信号;将原始语音信号进行分割,获得原始语音序列;依次对原始语音序列中的语音片段进行语音编码,获得语音编码码流。
116.在一个实施例中,发送端110还用于获取原始语音序列中的语音片段各自对应的语音编码特征参数;根据语音编码特征参数对相应的语音片段进行语音编码,生成对应的编码数据后获得语音编码码流;缓存语音编码过程中各个编码数据所采用的语音编码特征参数。
117.在一个实施例中,发送端110还用于将当前编码数据对应的第一语音编码特征参数以及当前编码数据的在前编码数据对应的第二语音编码特征参数输入至丢包恢复能力预测模型;通过丢包恢复能力预测模型,根据第一语音编码特征参数及第二语音编码特征参数,输出对当前编码数据进行直接解码所确定的第一语音质量评分与对当前编码数据进行丢包恢复处理后解码所确定的第二语音质量评分之间的评分差异;根据评分差异确定当前编码数据对应的丢包恢复能力;其中,当前编码数据对应的丢包恢复能力与评分差异成反相关。
118.在一个实施例中,发送端110还用于获取接收端所反馈的丢包状态信息;根据丢包状态信息确定当前编码数据所对应的冗余率;按照冗余率,根据当前编码数据生成冗余包后将当前编码数据及冗余包传输至接收端。
119.在一个实施例中,接收端120还用于当接收端接收到当前编码数据时,则直接对当前编码数据进行语音解码,获得当前编码数据对应的语音信号。
120.在一个实施例中,接收端120还用于当接收端未接收到当前编码数据、且接收到冗余包时,则通过接收端基于冗余包进行冗余解码处理,得到当前编码数据后再对当前编码数据进行语音解码,获得当前编码数据对应的语音信号。
121.在一个实施例中,接收端120还用于当接收端未接收到当前编码数据及冗余包时,则通过接收端对当前编码数据进行丢包恢复处理,获得对应于当前编码数据的恢复包,对恢复包进行语音解码,获得当前编码数据对应的语音信号。
122.在一个实施例中,发送端110还用于获取训练集中的样本语音序列;对样本语音序列进行语音编码,获得样本语音编码码流;提取样本语音编码码流中的当前编码数据所采用的第一语音编码特征参数以及当前编码数据的在前编码数据所采用的第二语音编码特征参数;获取直接对样本语音编码码流进行解码并获得第一语音信号后,基于第一语音信号所确定的第一语音质量评分;获取对当前编码数据进行模拟丢包恢复处理获得恢复包,对恢复包进行解码并获得第二语音信号后,基于第二语音信号所确定的第二语音质量评分;根据第一语音质量评分与第二语音质量评分之间的评分差异确定当前编码数据对应的真实丢包恢复能力;将的第一语音编码特征参数及第二语音编码特征参数输入至机器学习模型,通过机器学习模型输出当前编码数据所对应的预测丢包恢复能力;根据真实丢包恢
复能力与预测丢包恢复能力之间的差异调整机器学习模型的模型参数后,返回至获取训练集中的样本语音序列的步骤继续训练,直至满足训练结束条件。
123.上述语音传输系统,发送端在向接收端传输当前编码数据之前,通过基于机器学习的丢包恢复能力预测模型,根据当前编码数据对应的第一语音编码特征参数以及在前的编码数据对应的第二语音编码特征参数来预测接收端对当前编码数据的丢包恢复能力,从而根据该丢包恢复能力来判决是否对当前编码数据进行冗余编码,若是,则需要对当前编码数据进行冗余编码生成冗余包后,消耗必要的网络带宽资源将冗余包传输至接收端,反之,则不需要对当前编码数据进行冗余编码,直接将当前编码数据传输至接收端,避免消耗过多的网络带宽资源,从而在整体上有效提升网络带宽的利用率,同时也能保证传输网络的抗丢包能力。
124.在一个实施例中,如图9所示,提供了一种语音传输装置900,该装置可以通过软件、硬件或者两者的结合实现成为接收端的全部或一部分。该装置包括获取模块902、预测模块904和冗余编码判决模块906,其中:
125.获取模块902,用于获取语音编码码流中的当前编码数据;
126.预测模块904,用于通过基于机器学习的丢包恢复能力预测模型,根据当前编码数据对应的第一语音编码特征参数以及当前编码数据的在前编码数据对应的第二语音编码特征参数,获得当前编码数据对应的丢包恢复能力;
127.冗余编码判决模块906,用于根据丢包恢复能力判决是否需要进行冗余编码处理;若是,则根据当前编码数据进行冗余编码生成相应的冗余包后,再将当前编码数据及冗余包传输至接收端;若否,则直接将当前编码数据传输至接收端。
128.在一个实施例中,语音传输装置900还包括语音编码模块,用于获取原始语音信号;将原始语音信号进行分割,获得原始语音序列;依次对原始语音序列中的语音片段进行语音编码,获得语音编码码流。
129.在一个实施例中,语音传输装置900还包括语音编码模块和缓存模块,语音编码模块用于获取原始语音序列中的语音片段各自对应的语音编码特征参数;根据语音编码特征参数对相应的语音片段进行语音编码,生成对应的编码数据后获得语音编码码流;缓存模块用于缓存语音编码过程中各个编码数据所采用的语音编码特征参数。
130.在一个实施例中,预测模块904还用于将当前编码数据对应的第一语音编码特征参数以及当前编码数据的在前编码数据对应的第二语音编码特征参数输入至丢包恢复能力预测模型;通过丢包恢复能力预测模型,根据第一语音编码特征参数及第二语音编码特征参数,输出对当前编码数据进行直接解码所确定的第一语音质量评分与对当前编码数据进行丢包恢复处理后解码所确定的第二语音质量评分之间的评分差异;根据评分差异确定当前编码数据对应的丢包恢复能力;其中,当前编码数据对应的丢包恢复能力与评分差异成反相关。
131.在一个实施例中,冗余编码判决模块906还用于当丢包恢复能力小于预设阈值时,获取接收端所反馈的丢包状态信息;根据丢包状态信息确定当前编码数据所对应的冗余率;按照冗余率,根据当前编码数据生成冗余包后将当前编码数据及冗余包传输至接收端。
132.在一个实施例中,语音传输装置900还包括模型训练模块,用于获取训练集中的样本语音序列;对样本语音序列进行语音编码,获得样本语音编码码流;提取样本语音编码码
流中的当前编码数据所采用的第一语音编码特征参数以及当前编码数据的在前编码数据所采用的第二语音编码特征参数;获取直接对样本语音编码码流进行解码并获得第一语音信号后,基于第一语音信号所确定的第一语音质量评分;获取对当前编码数据进行模拟丢包恢复处理获得恢复包,对恢复包进行解码并获得第二语音信号后,基于第二语音信号所确定的第二语音质量评分;根据第一语音质量评分与第二语音质量评分之间的评分差异确定当前编码数据对应的真实丢包恢复能力;将第一语音编码特征参数及第二语音编码特征参数输入至机器学习模型,通过机器学习模型输出当前编码数据所对应的预测丢包恢复能力;根据真实丢包恢复能力与预测丢包恢复能力之间的差异调整机器学习模型的模型参数后,返回至获取训练集中的样本语音序列的步骤继续训练,直至满足训练结束条件。
133.上述语音传输装置900,在向接收端传输当前编码数据之前,通过基于机器学习的丢包恢复能力预测模型,根据当前编码数据对应的第一语音编码特征参数以及在前的编码数据对应的第二语音编码特征参数来预测接收端对当前编码数据的丢包恢复能力,从而根据该丢包恢复能力来判决是否对当前编码数据进行冗余编码,若是,则需要对当前编码数据进行冗余编码生成冗余包后,消耗必要的网络带宽资源将冗余包传输至接收端,反之,则不需要对当前编码数据进行冗余编码,直接将当前编码数据传输至接收端,避免消耗过多的网络带宽资源,从而在整体上有效提升网络带宽的利用率,同时也能保证传输网络的抗丢包能力。
134.图10示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的发送端110。如图10所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现语音传输方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行语音传输方法。
135.本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
136.在一个实施例中,本申请提供的语音传输装置900可以实现为一种计算机程序的形式,计算机程序可在如图10所示的计算机设备上运行。计算机设备的存储器中可存储组成该语音传输装置900的各个程序模块,比如,图9所示的获取模块902、预测模块904和冗余编码判决模块906。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的语音传输方法中的步骤。
137.例如,图10所示的计算机设备可以通过如图9所示的语音传输装置900中的获取模块902执行步骤s302。计算机设备可通过预测模块904执行步骤s304。计算机设备可通过冗余编码判决模块906执行步骤s306、s308和s310。
138.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述语音传输方法的步骤。此处语音传输方法的步骤可以是上述各个实施例的语音传输方法中的步骤。
139.在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述语音传输方法的步骤。此处语音传输方法的步骤
可以是上述各个实施例的语音传输方法中的步骤。
140.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。
141.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
142.以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。