语音信号处理方法、系统、装置、计算机设备和存储介质
技术领域
本申请涉及音视频编解码技术领域,特别是涉及一种语音信号处理方法、系统、装置、计算机设备和存储介质。
背景技术
目前的语音编码器普遍采用参数编码,即根据人的发声模型,对语音信号转化为声道参数与激励参数,对其进行量化编码生成码流,然后将码流发送到信道进行传输。接收方在收到该码流后,解码出声道参数与激励参数,然后根据发声模型,重新合成语音信号。
实际应用中,在传输码流时,经常会发生丢包。基于这样的现实,人们开发了很多抗丢包策略,主要分成两类,一类是面向传输,主要思路是低延时下重传,高延时下做前向纠错(Forward Error Correction,FEC)。其中,面向传输的FEC,重传等抗丢包策略在极弱网下(比如20kbps,甚至更低)不再适用,因此,需要采用另一类抗丢包策略,即对编码器本身进行改进,也称为抗丢包语音编码器。
但是,现有的语音编码器抗丢包性能普遍较差。
发明内容
基于此,有必要针对上述技术问题,提供一种语音信号处理方法、系统、装置、计算机设备和存储介质。
第一方面,本申请实施例提供一种语音信号处理方法,该方法包括:
获取待传输语音信号量化后的码本向量的码本索引;
从预设的二维量化表中,查找码本索引对应的目标坐标;二维量化表中包括多种语音信号量化后的码本向量的码本索引;目标坐标指示的码本索引对应的码本向量与待传输语音信号量化前的向量之间的误差最小;
将目标坐标的行坐标对应的码流和列坐标对应的码流分别发向解码器;码流用于指示解码器根据二维量化表进行解码。
第二方面,本申请实施例提供一种语音信号处理方法,该方法包括:
接收编码器发送的码流;码流为编码器基于待传输语音信号量化后的码本向量的码本索引,从预设的二维量化表中查找的码本索引对应的目标坐标的行坐标对应的码流和/或列坐标对应的码流;
其中,二维量化表中包括多种语音信号量化后的码本向量的码本索引;目标坐标指示的码本索引对应的码本向量与待传输语音信号量化前的向量之间的误差最小;
根据二维量化表对码流进行解码。
第三方面,本申请实施例提供一种语音信号处理系统,该系统包括:
编码器,用于实现上述第一方面和第二方面实施例提供的任一项语音信号处理方法的步骤;
解码器,用于实现上述第一方面和第二方面实施例提供的任一项语音信号处理方法的步骤。
第四方面,本申请实施例提供一种语音信号处理装置,该装置包括:
获取模块,用于获取待传输语音信号量化后的码本向量的码本索引;
查找模块,用于从预设的二维量化表中,查找码本索引对应的目标坐标;二维量化表中包括多种语音信号量化后的码本向量的码本索引;目标坐标指示的码本索引对应的码本向量与待传输语音信号量化前的向量之间的误差最小;
处理模块,用于将目标坐标的行坐标对应的码流和列坐标对应的码流分别发向解码器;码流用于指示解码器根据二维量化表进行解码。
第五方面,本申请实施例提供一种语音信号处理装置,该装置包括:
接收模块,用于接收编码器发送的码流;码流为编码器基于待传输语音信号量化后的码本向量的码本索引,从预设的二维量化表中查找的码本索引对应的目标坐标的行坐标对应的码流和/或列坐标对应的码流;
其中,二维量化表中包括多种语音信号量化后的码本向量的码本索引;目标坐标指示的码本索引对应的码本向量与待传输语音信号量化前的向量之间的误差最小;
解码模块,用于根据二维量化表对码流进行解码。
第六方面,本申请实施例提供一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述第一方面和第二方面实施例提供的任一项语音信号处理方法的步骤。
第七方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面和第二方面实施例提供的任一项语音信号处理方法的步骤。
本申请实施例提供的一种语音信号处理方法、系统、装置、计算机设备和存储介质,通过获取待传输语音信号量化后的码本向量的码本索引,从预设的二维量化表中,查找码本索引对应的目标坐标,然后将目标坐标的行坐标对应的码流和列坐标对应的码流分别发向解码器。该方法中,由于目标坐标是编码器从二维量化表中根据码本索引确定,且发送的是目标坐标的行坐标和列坐标,当解码器接收到目标坐标的行坐标对应的码流和列坐标对应的码流后,可根据行坐标或者列坐标,在二维向量表中确定出对应的码本索引或者相近的码本索引,这样,就通过对矢量量化索引多描述的方式,即使在传输过程中发生丢包,解码器也可以恢复出较好语音信号,因此,该方法可以有效提高语音编码器的抗丢包性能。
附图说明
图1为一个实施例提供的一种语音信号处理系统的结构框图;
图2为一个实施例提供的一种节语音信号处理方法的流程示意图;
图3为另一个实施例提供的一种语音信号处理方法的流程示意图;
图4为另一个实施例提供的一种语音信号处理方法的流程示意图;
图5为另一个实施例提供的一种语音信号处理方法的流程示意图;
图6为一个实施例提供的一种语音信号处理装置的结构框图;
图7为一个实施例提供的一种语音信号处理装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
为了更好的理解本申请实施例提供的语音信号处理方法,提供一个本申请实施例适用的应用环境。请参见图1,本申请提供的一种语音信号处理方法,可以应用于如图1所示的语音信号处理系统。该系统包括编码器01以及解码器02,其中编码器01可以与解码器02进行数据传输。其中,编码器01包括但不限于是接触式编码器、非接触式编码器、增量式编码器、绝对值编码器等,本申请实施例对编码器的类型不作具体限定。其中,解码器02包括但不限于是硬件解码器、无线解码器、软件解码器、多路解码器、单路解码器等,本实施例对解码器的类型也不作具体限定。
通常在极弱网下(比如20kbps,甚至更低),面向传输的抗丢包策略不再适用,此时需要开发抗丢语音包编码器,提高语音编码器本身的抗丢包能力。其中,分流多描述是抗丢包语音编码器的一种实现方式,这里分流多描述指的是对待传输的语音码流通过分流的方式进行传输的方式。
一般在语音信号中,线性预测系数(Linear Prediction Coefficients,LPC)是非常重要的声道参数,例如,其在G729编码器的码流中占有最大流量,在SILK中所占流量仅次于语音残留信号,所以有必要考虑在抗丢包语音编码器中对LPC参数进行分流。
LPC参数是直接对原始语音信号进行分析得来,但LPC本身对量化误差敏感,所以会将LPC参数转化为线谱频率(Line Spectral Frequency,LSF)。各帧语音的LSF之间具有较强的相关性,所以语音编码器普遍会采取矢量量化(Vector Quantization,VQ)技术对LSF进行量化。具体来说,就是用一组最有代表性的向量(比如128个向量,每个向量的维度是10),来近似所有的LSF取值。这样只需要一个7bit的索引,就能表示所有LSF值,最后将这个索引放入码流在信道上传输。基于此,本申请实施例提供一种语音信号处理方法、系统、装置、计算机设备和存储介质,通过对语音残留信号进行分流,提高语音编码器的抗丢包性能。
下面将通过实施例并结合附图具体地对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。需要说明的是,本申请提供的一种语音信号处理方法,图2-图4的执行主体为编码器,图5的执行主体为解码器,其中,其执行主体还可以是信号处理装置,其中该装置可以通过软件、硬件或者软硬件结合的方式实现成为编码器的部分或者全部。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。
下面对执行主体为编码器的一侧实施例进行说明。
在一个实施例中,图2提供了一种语音信号处理方法,本实施例涉及的是编码器根据待传输语音信号量化后的码本向量的码本索引,从预设的二维量化表中,查找码本索引对应的目标坐标,并将目标坐标的行坐标对应的码流和列坐标对应的码流分别发向解码器的具体过程,如图2所示,该方法包括:
S101,获取待传输语音信号量化后的码本向量的码本索引。
待传输语音信号表示的是编码器需要传输的语音信号。编码器在接收到传输语音信号后对该传输语音信号进行量化,其中,编码器进行量化的方法可以是通过VQ量化方法对待传输语音信号进行量化,得到各码本向量。
这里对语音信号进行量化可以理解为是对LSF进行量化,即用一组最有代表性的向量(比如128个向量,每个向量的维度是10),来近似所有的LSF取值。基于量化后的码本向量,获取各码本向量的码本索引,其中,一个码本索引对应一个码本向量。
S102,从预设的二维量化表中,查找码本索引对应的目标坐标;二维量化表中包括多种语音信号量化后的码本向量的码本索引;目标坐标指示的码本索引对应的码本向量与待传输语音信号量化前的向量之间的误差最小。
其中,二维量化表是编码器在传输码流之前,预先离线构建的,该二维量化表中存储了多种语音信号量化后的码本向量的码本索引,作为编码器传输码流以及解码器解码时的共同依据。由于该二维量化表中将各码本索引在填充时是基于一定规则的,该规则会使填充在二维量化表中的每个码本索引都对应至少一种坐标。而目标坐标即为这些码本索引的坐标中选择的最优坐标,也就是码本索引对应的码本向量与待传输语音信号量化前的向量之间的误差最小的坐标。
S103,将目标坐标的行坐标对应的码流和列坐标对应的码流分别发向解码器;码流用于指示解码器根据二维量化表进行解码。
基于上述确定的目标坐标,编码器将该目标坐标的行坐标对应的码流和列坐标对应的码流分别发向解码器。
本步骤中,将目标坐标的行坐标对应的码流和列坐标对应的码流分别发向解码器是先将量化后的码本向量对应一个码本索引,然后与码本索引确定的该目标坐标,其中,码本向量可以说是对LSF进行量化得到多个近似取值,而LS F是语音信号中的一个重要参数,这样,本申请实施例对码本向量对应的码本索引的目标坐标进行分流就相当于对语音信号的参数进行了分流,也即是说所谓的分流描述。
本实施例提供的语音信号处理方法,通过获取待传输语音信号量化后的码本向量的码本索引,从预设的二维量化表中,查找码本索引对应的目标坐标,然后将目标坐标的行坐标对应的码流和列坐标对应的码流分别发向解码器。该方法中,由于目标坐标是编码器从二维量化表中根据码本索引确定,且发送的是目标坐标的行坐标和列坐标,当解码器接收到目标坐标的行坐标对应的码流和列坐标对应的码流后,可根据行坐标或者列坐标,在二维向量表中确定出对应的码本索引或者相近的码本索引,这样,就通过对矢量量化索引多描述的方式,即使在传输过程中发生丢包,解码器也可以恢复出较好语音信号,因此,该方法可以有效提高语音编码器的抗丢包性能。
基于上述实施例,提供一种语音信号处理方法,在二维向量表中包括关键向量索引的情况下,对如何确定目标坐标的过程进行说明,则如图3所示,在一个实施例中,上述S102包括:
S201,从二维量化表中查找码本索引对应的所有候选坐标。
在二维向量表中,一个码本索引对应多种坐标,基于此,编码器在确定了待传输语音信号中LSF量化的码本向量后,获取各码本向量的码本索引,然后基于码本向量的码本索引从二维量化表中查找码本索引对应的所有候选坐标,即,将各码本索引对应的坐标都查找出来。
S202,获取所有候选坐标的关键向量索引对应的码本向量,分别与待传输语音信号量化前的向量之间的误差。
基于上述确定的各候选坐标,获取各候选坐标对应的关键向量索引,然后获取获取各关键向量索引对应的码本向量。其中,这里的关键向量索引可以理解为关键向量码本索引,而对于码本索引与码本向量之间的对应关系在一开始获取码本向量和码本索引时已经确定了,所以可以直接根据关键向量索引确定出对应的码本向量。
基于确定的关键向量索引对应的码本向量,获取各码本向量与传输语音信号量化前的向量之间的误差。由于码本向量是传输语音信号中的LSF量化后的向量,那么获取各码本向量与传输语音信号量化前的向量之间的误差,其实就是寻找与传输语音信号误差最小的码本向量。
可选地,若关键向量索引包括关键行向量索引和关键列向量索引,则该S202步骤包括:获取各候选坐标的关键行向量索引和关键列向量索引;获取各候选坐标的各关键行向量索引对应的码本向量,与待传输语音信号量化前向量之间的第一误差,以及各候选坐标的各关键列向量索引对应的码本向量,与待传输语音信号量化前向量之间的第二误差;将各候选坐标的第一误差与对应的第二误差之和,确定为各候选坐标的码本索引对应的码本向量,与待传输语音信号量化前向量之间的误差。
一个关键向量索引包括关键行向量索引和关键列向量索引,那么关键向量索引对应的码本向量与待传输语音信号量化前的向量之间的误差,就可以通过关键行向量索引对应的码本向量与待传输语音信号量化前向量之间的第一误差,以及关键列向量索引对应的码本向量与待传输语音信号量化前向量之间的第二误差,两者误差之和来确定,当然,也可以通过平方和或者平均值来确定,本实施例对此不作限定。
S203,将最小误差对应的候选坐标,确定为目标坐标。
基于上述确定的关键向量索引对应的码本向量与待传输语音信号量化前的向量之间的误差,将最小误差对应的码本索引的候选坐标,确定为目标坐标。这样,找出的目标坐标上的码本索引对应的码本向量与待传输语音信号量化前的向量之间的误差最小。
本实施例通过从多个候选坐标中,挑选出坐标上的码本索引对应的码本向量与待传输语音信号量化前的向量之间的误差最小的目标坐标,这样,使得编码器最终发送的码流中的行列坐标对应的码本向量最接近真实值,提高了码流发送的准确率,且解码器也可以恢复出的码本向量最接近真实值,这样即使在码流传输过程中发生了丢包现象,也可以保证恢复出的语音信号的质量,从提高了编码器的抗丢包性能。
在一个实施例中,如图4所示,上述二维向量表的获取过程包括:
S301,获取多种样本语音信号量化后样本码本向量的码本索引,以及各样本码本向量的概率。
S302,根据各样本码本向量的概率从大到小的顺序,对各码本索引进行排序,并基于排序结果和码本索引填充初始二维向量表中的关键行向量索引、关键列向量索引。
每个码本索引对应一种码本向量,基于一开始对语音信号量化的码本向量,从这些向量中选择关键向量,其中关键向量包括关键行向量与关键列向量,且关键行向量与关键列向量两者的维数与分流配置有关。例如,配置(3,2,2)表示将原始3bit(共8个VQ向量),用两条各为2bit的流表示,即每条流有2bit。这样的配置,关键行向量与关键列向量的维数都是2^2=4。
具体地,选择关键向量的方式包括以下四种步骤:
(1)将码本索引按照概率p,从大到小排列,构成序列s;概率P表示的是各码本索引对应的码本向量在语音信号量化后的码本向量中出现的概率。
(2)从序列s中依次取出码本索引,按照行列列行行列列之字的规则填入初始二维向量表的关键行向量索引与关键列向量索引中。
(3)尽量保证高概率的码本索引同时出现在关键行向量索引与关键列向量中索引。这里用尽量的意思是,在实际应用中,这条步骤可以不是必须执行,不执行本步骤也可以完成二维量化表的构建,但执行了本步骤可以使得构建的二维向量表在使用时更加精确。
(4)在以上基础上对行列关键索引进行微调,目标是尽量使得任意一个关键行向量索引与任意一个列索引之间的汉明距离小于等于2。
示例地,提供一个详细的实施例,假设配置为(3,2,2),原始码本有3bit,即L=8,根据他们的出现概率从大到小排列得到s。
假设排列后的s序列(二进制)为:100,011,010,101,000,111,001,110
根据之字形排列填充初始二维向量表后得到表1,其中之字形排列为:100(行),011(列),010(列),101(行),000(行),111(列),001(列),110(行)。
表1
|
关键行向量索引 |
100 |
101 |
000 |
110 |
关键列向量索引 |
坐标 |
0 |
1 |
2 |
3 |
011 |
0 |
|
|
|
|
010 |
1 |
|
|
|
|
111 |
2 |
|
|
|
|
001 |
3 |
|
|
|
|
由于上述按照概率排序中,索引100出现概率最大,则可以在s序列中复制100,则重新排列得到之字形排列为:100,(行),100(列),011(列),010(行),101(行),000(列),111(列),001(行),即下表2,表2即为最终的得到的初始二维向量表。
表2
需要说明的是,上述表2中关键列向量索引中有011,与关键行向量索引中的100的汉明距离为3,这种情况在实际应用中应该避免。一般遇到这种情况,可以将011与关键行向量索引中某个索引交换,使得011与100在同一行或者列即可,或者在关键行,列向量索引中只保留一个100,该操作将降低二维向量表的命中率,又或者可以对表项中填充的索引值做处理等,本实施例对解决这种情况的方式不作限定。
从上述表2中可以看出,除了关键行向量索引与关键列向量索引,表2中还有真正用于传输的坐标。坐标包括行坐标0,1,2,3,以及列坐标0,1,2,3,传输码流时传输的即为行坐标和列坐标。
S303,根据预设规则对填充后的初始二维向量表中的表项的索引值进行补充,得到二维向量表。
基于上述确定的初始二维向量表,请参见上述表2,初始二维向量表中对关键行向量索引和关键列向量索引进行了填充,且初始二维向量表中包括用于传输的坐标,即表2中行列的0,1,2,3。在此基础上,要完善初始二维向量表以得到最终的二维向量表,则需要对初始二维向量表中的表项填充对应的索引值。
具体地,对初始二维向量表中的表项的索引值进行补充时可以根据预设规则进行补充,可选地,上述预设规则包括:若表项的关键行向量索引与关键列向量索引相同,则表项的索引值与关键行向量索引和关键列向量索引相同;若表项的关键行向量索引与关键列向量索引不相同,则基于表项的待填充的索引值与关键行向量索引,或者,与关键列向量索引之间的汉明距离确定表项的索引值。
在对各表项进行填充时,预设规则从大的方向需要遵循两种:一种是表项对应的关键行向量索引和关键列向量索引相同,另外一种是表项对应的关键行向量索引和关键列向量索引不相同。
其中,第一种,表项对应的关键行向量索引与关键列向量索引相同,则对应表项必须与关键行列索引相同。例如,下表3中,(0,0)位置的表项,其关键行向量索引是100,关键列向量索引也是100,所以表项T(0,0)=100。
表3
|
关键行向量索引 |
100 |
010 |
101 |
001 |
关键列向量索引 |
坐标 |
0 |
1 |
2 |
3 |
100 |
0 |
100 |
|
|
|
011 |
1 |
|
|
|
|
000 |
2 |
|
|
|
|
111 |
3 |
|
|
|
|
而对于第二种,表项对应的关键行向量索引与关键列向量索引不相同,则需要基于表项的待填充的索引值与关键行向量索引,或者,与关键列向量索引之间的汉明距离确定表项的索引值。
可选地,表项对应的关键行向量索引与关键列向量索引不相同这种情况下需要遵循的填充表项的规则至少包括以下几种:A、B和C。
A、待填充的索引值与关键行向量索引,或者关键列向量索引的值相同时,与对应的关键列向量索引或者关键行向量索引之间的汉明距离等于1。
这个规则的表示该表项的索引值与对应的关键行向量索引的之间的汉明距离是0时,那么其与对应的关键列向量索引的汉明距离要等于1。例如,参照表4中的T(1,1)=010,对应的关键行向量索引就是010本身,而T(1,1)与对应的关键列向量索引011的汉明距离为1,还有表4中的T(2,1)=000,T(3,2)=111,T(0,2)=101,T(1,3)=011,T(2,3)=001,这些都是与关键列向量索引或者关键行向量索引中某一个相同,然后与另外一个之间的汉明距离等于1。
表4
B、待填充的索引值与关键行向量索引,或者关键列向量索引之间的汉明距离等于1时,与对应的关键列向量索引或者关键行向量索引之间的汉明距离等于1。
在依据上述各个规则将表中各表项填充完成后,将8个索引中剩余的码本索引填充到合适的表项中,这里选择的合适的表项需满足与对应关键列向量索引和关键行向量索引之间的汉明距离均要等于1。例如,除了上述表4中的已经填充的索引值以外,8个索引值中还剩余110未被填充,则基于该规则,可将110填充在表5中的T(3,0),如表5所示,110与关键列向量索引111之间的汉明距离为1,与关键行向量索引100的汉明距离也是1。
表5
|
关键行向量索引 |
100 |
010 |
101 |
001 |
关键列向量索引 |
坐标 |
0 |
1 |
2 |
3 |
100 |
0 |
100 |
|
101 |
|
011 |
1 |
|
010 |
|
011 |
000 |
2 |
|
000 |
|
001 |
111 |
3 |
110 |
|
111 |
|
以上规则对表项进行填充后得到的表5已经可用。
示例地,基于表5,编码器根据待传输语音信号的VQ码本索引,在表4中找到对应的行,列坐标,分别将行坐标和列坐标作为两条码流传输。
然后解码器如果收到两条流,则可以根据行坐标和列坐标在该表5无误差的定位到VQ码本索引。若解码器收到某条单流,则取该单流中的行坐标或者列坐标对应的关键行向量索引或者关键列向量索引作为最终需要的VQ码本索引。
由于解码器收到单流时,定位的是对应的关键行向量索引或者关键列向量索引,而对应的关键行向量索引或者关键列向量索引与该行坐标或者列坐标中每一个码本索引之间的汉明距离最大为1,而汉明距离为1的两个索引对应的向量,他们之间的距离的期望已经是最小,所以基于单流定位的码本索引与实际码本索引之间的误差很小。这样,通过该表5所示的二维向量表,编码器先发出坐标码流,解码器基于该二维向量表进行解码可以最大概率命中,即使未命中,误差的期望也最小。
根据以上规则对初始二维向量表中的表项进行填充后,从表5中可以看到还会有空白表项存在,为了进一步优化二维向量表的性能,可以进一步设定剩余空白表项的填充规则。
C、对于将满足条件的表项填充完成后余留的空白表项,则空白表项中待填充的索引值在二维向量表中出现的次数需小于等于预设次数阈值,且空白表项中待填充的索引值对应的码本向量的概率大于预设概率阈值。
在填充满足C规则之前,优先地,需要在表5中的空白表项中填入重复的V Q码本索引,填充时满足的规则与上述B规则相同,即表项中填充的索引值与对应的关键行向量索引和关键列向量索引的汉明距离均小于等于1。可以理解的是,这里填充重复的索引其实就是基于上述A和B规则,将表5中剩余的空白项可以填充的再继续填充,如下表6所示,表6中的T(0,1),T(0,3),T(1,2),T(2,1),T(2,2),T(3,1),T(3,3),均是重复填入的码本索引值。
表6
|
关键行向量索引 |
100 |
010 |
101 |
001 |
关键列向量索引 |
坐标 |
0 |
1 |
2 |
3 |
100 |
0 |
100 |
000 |
101 |
101 |
011 |
1 |
|
010 |
001 |
011 |
000 |
2 |
000 |
000 |
100 |
001 |
111 |
3 |
110 |
110 |
111 |
011 |
需要说明的是,在上述表6中加入新的码本索引后,会出现同一个码本索引,会与多个行列坐标对应。这种情况下,编码器在选择VQ码本索引时,需要选择一个与VQ码本索引对应的码本向量之间真实误差最小的一个坐标作为最后目标坐标,然后将目标坐标的行坐标和列坐标分为两条码流进行传输。
从表6可以看出,还是有空白表项,此时可以根据C规则填充剩余的空白表项,即将该空白表项中填入一个该表中出现少,但概率较高的VQ索引号。其中,在表中出现少表示在表中出现的次数需小于等于预设次数阈值,而概率较高表示的是选择出的码本索引其对应的码本向量在语音信号中的出现概率大于预设概率阈值。例如,下表7中,在T(1,0)处填入010,这样当编码器在选择目标坐标时也可以对010多一种选择。
表7
|
关键行向量索引 |
100 |
010 |
101 |
001 |
关键列向量索引 |
坐标 |
0 |
1 |
2 |
3 |
100 |
0 |
100 |
000 |
101 |
101 |
011 |
1 |
010 |
010 |
001 |
011 |
000 |
2 |
000 |
000 |
100 |
001 |
111 |
3 |
110 |
110 |
111 |
011 |
基于此,二维向量表已经建立完成,需要说明的是,该表中填写的各索引值只是一种举例,在实际应用中,只要满足这些规则,还可以填充入其他索引值。还需要说明的是,在实际应用中,若以上规则都无法满足,则会出现建表失败,此时需要通过以下方式进行调整,例如,修改关键索引,使得关键行向量索引与关键列向量索引的汉明距离都小于等于2,修改方法包括替换关键索引或者引入重复的关键索引等;或者,在一开始的PGC编码中增加汉明距离=2的情况;又或者,修改最开始的编码配置等,本实施例对此不做限定。
在一个实施例中,在根据各样本码本向量的概率从大到小的顺序,对各码本索引进行排序之前,该方法还包括:获取码本向量的整体代价函数,整体代价函数用于表征码本向量的重排映射关系;将整体代价函数值最小时对应的映射关系,确定为码本向量的目标重排映射关系;根据目标重排映射关系,对码本向量进行码本重排。
码本重排的对象是语音编码器中的VQ码本,例如LSF码本。VQ码本是一个数组,数组中每个元素是一个向量,每个向量根据数组位置赋予了索引值,即用于传输的数据也就是最终在通道中传输的数据。
码本重排就是找到一个映射π,对VQ码本中向量重新排列,重新排列后的VQ码本向量,当它们索引的汉明距离最近时,其对应的向量同时具有最小的某种尺度的距离,例如,欧式距离、加权距离等。
实际应用中,基于向量中元素的重要性,例如LSF码本,向量中较小频率,以及相邻频率较接近的向量应该具有较大权重。
例如,本申请实施例中统一定义向量y1,y2之间的距离为d(y1,y2);下面对码本重排进行详细说明:
定义码本索引的集合为I={k|k=0,1,...,L-1},其中,L是码本中向量的个数。再定义一个集合N
m(k),k是码本索引,m表示汉明距离。该集合是所有码本索引集合的一个子集,该子集仅包含所有满足与k的汉明距离为m的索引值,且集合中各子集无重复。定义码本中的向量为y
k,k=0,1,2,...,L-1其中k是码本索引,L是码本中向量的个数。定义码本索引为k的向量的代价函数为:
该代价函数在汉明距离为1时可化为:
其中,上式中p是特定向量yk出现的概率。p的获取有两种途径,1)从语料数据集中统计获得;2)有些编码器会提供该信息,比如SILK编码器,由于需要对LSF码本索引进行熵编码,所以编码器中包含了所有索引的CDF(通用数据)数据,从该数据可以推算出具体每个码本向量的出现概率p。
基于上述定义的函数以及集合,向量等,可确定出整体代价函数为:
其中,上式中L是VQ码本的向量个数,k是索引号。
在目标映射π时,是让整体代价函数最小,也就是代价函数最小时,对应的映射π即为目标映射,例如,01234567对应76543210,这里的映射就是0对7,1对6。
在一些情况中,采用PGC(Pseudo Gray Code)编码确定映射关系,需要指出的是PGC的整体代价函数只包含m=1的情况,其原因是误码率较小情况下可忽略m=2,3…等情况。但是我们目前提出的整体代价函数m=1,前提是对特定的分流配置,例如,(7,4,4)表示将7bit索引用两个4bit分流,若基于此配置,能够将二维向量表建表不成功,就可以进一步开放m=2的情况,并加入到整体代价函数中。
另外,本实施例提供给的编码重排在有些编码器中,由于其LSF码本本身已经经过PGC编码,比如G.729,可以直接跳过码本重排,不进行码本重排。
本实施例提供的码本重排,通过找到一个映射关系,将码本重新排列,可以使得新得到的码本在其对应的码本索引之间的距离最小时,各自之间的欧式距离最小,也就是更接近,这样在后续根据各向量的码本索引去定位码本向量时,定位的码本向量与真实码本向量之间的误差会最小。
下面对执行主体为解码器的一侧实施例进行说明。需要说明的是,本申请虽然分了解码器为执行主体的实施例和编码器为执行主体的实施例,但实际中,解码器与编码器是相互配合着交互完成语音信号处理的,因此,编码器为执行主体的实施例与解码器为执行主体的实施例中的过程描述可互相参考,而不是作为两者执行范围的限定。
在一个实施例中,如图5所示,本申请实施例提供一种语音信号处理方法,该方法包括:
S401,接收编码器发送的码流;码流为编码器基于待传输语音信号量化后的码本向量的码本索引,从预设的二维量化表中查找的码本索引对应的目标坐标的行坐标对应的码流和/或列坐标对应的码流;
其中,二维量化表中包括多种语音信号量化后的码本向量的码本索引;目标坐标指示的码本索引对应的码本向量与待传输语音信号量化前的向量之间的误差最小。
S402,根据二维量化表对码流进行解码。
本实施例中涉及的原理过程可参考上述编码器为执行主体的实施例,本实施例在此不再赘述。
本实施例中提供的语音信号处理方法,通过接收编码器发送的码流,然后根据二维量化表对码流进行解码,其中,码流为编码器基于待传输语音信号量化后的码本向量的码本索引,从预设的二维量化表中查找的码本索引对应的目标坐标的行坐标对应的码流和/或列坐标对应的码流,该方法中,由于目标坐标是编码器从二维量化表中根据码本索引确定,且发送的是目标坐标的行坐标和列坐标,当解码器接收到目标坐标的行坐标对应的码流和列坐标对应的码流后,可根据行坐标或者列坐标,在二维向量表中确定出对应的码本索引或者相近的码本索引,这样,就通过对矢量量化索引多描述的方式,即使在传输过程中发生丢包,解码器也可以恢复出较好语音信号,因此,该方法通过对矢量量化索引多描述的方式,可以有效提高语音编码器的抗丢包性能。
解码器接收到编码器发送的码流有两种情况:一种是接收到所有码流,即将行坐标对应的码流和列坐标对应的码流均接收到;另外一种是只接收到其中一条码流,即只接收到行坐标对应的码流,或者,只接收到列坐标对应的码流。针对这两种情况,分别提供一个实施例进行说明。
则在一个实施例中,若码流为行坐标对应的码流和列坐标对应的码流;上述S402包括:根据行坐标和列坐标定位目标码本索引,并根据目标码本索引对应的码本向量,对码流进行解码。
请参考上述表7所示,若解码器收到行坐标对应的码流和列坐标对应的码流,且行坐标为3,列坐标为2,那么根据(3,2)可以从表7中对应确定到码本索引111,则码本索引111即为目标码本索引。
基于确定的目标码本索引,获取该目标码本索引的码本向量以对码流进行解码,恢复出一开始的待传输的语音信号。
在另外一个实施例中,若码流为行坐标对应的码流,或者,列坐标对应的码流;上述S402包括:根据行坐标定位的关键行向量索引确定目标码本索引,或者,根据列坐标定位的关键列向量索引确定目标码本索引,并根据行坐标确定的目标码本索引对应的码本向量,对码流进行解码;或者,根据列坐标确定的目标码本索引对应的码本向量,对码流进行解码。
若接收到单条码流,根据单条码流中的行坐标定位对应的关键行向量索引,根据列坐标定位对应的关键列向量索引。例如,请继续参考上述表7所示,只收到行坐标3,那么从表7中确定的关键行向量索引为111;若只收到列坐标2,那么从表7中确定的关键列向量索引为101。
由于(3,2)可以从表7中对应确定到码本索引111,也就是说111是最优结果,根据111对应的码本向量解码后恢复的语音信号就是高音质的语音信号。而根据单流行坐标3,或者列坐标2确定的111或者101,一个是完美的与最优码本索引111完全一致,一个是与最优码本索引111之间的汉明距离为1,误差的期望最小,即基于101对应的码本向量恢复的语音信号的音质也较高。这样,即使在码流传输过程中发生丢包,解码器只收到一个包也能恢复出很好的音质,如果及时收到两个包,就可以完美恢复出原始音质。
应该理解的是,虽然图2-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
另外,本申请实施例还提供了一种语音信号处理系统,可参照上述图1所示,该系统包括:编码器和解码器;其中编码器,用于实现前面以编码器为执行主体的所有实施例中的过程;解码器,用于实现前面以解码器为执行主体的所有实施例中的过程。
上述实施例提供的一种语音信号处理系统,其实现原理和技术效果与上述语音信号处理方法实施例类似,在此不再赘述。
此外,还提供了上述语音信号处理方法对应的虚拟装置,在一个实施例中,如图6所示,提供了一种语音信号处理装置,该装置包括:获取模块10、查找模块11、处理模块12,其中,
获取模块10,用于获取待传输语音信号量化后的码本向量的码本索引;
查找模块11,用于从预设的二维量化表中,查找码本索引对应的目标坐标;二维量化表中包括多种语音信号量化后的码本向量的码本索引;目标坐标指示的码本索引对应的码本向量与待传输语音信号量化前的向量之间的误差最小;
处理模块12,用于将目标坐标的行坐标对应的码流和列坐标对应的码流分别发向解码器;码流用于指示解码器根据二维量化表进行解码。
在一个实施例中,提供了一种语音信号处理装置,二维向量表中包括关键向量索引,则上述查找模块11包括:
查找单元,用于从二维量化表中查找码本索引对应的所有候选坐标;
码本向量获取单元,用于获取所有候选坐标的关键向量索引对应的码本向量,分别与待传输语音信号量化前的向量之间的误差;
目标坐标确定单元,用于将最小误差对应的候选坐标,确定为目标坐标。
在一个实施例中,上述关键向量索引包括关键行向量索引和关键列向量索引;
则上述码本向量获取单元,具体用于获取各候选坐标的关键行向量索引和关键列向量索引;获取各候选坐标的各关键行向量索引对应的码本向量,与待传输语音信号量化前向量之间的第一误差,以及各候选坐标的各关键列向量索引对应的码本向量,与待传输语音信号量化前向量之间的第二误差;将各候选坐标的第一误差与对应的第二误差之和,确定为各候选坐标的码本索引对应的码本向量,与待传输语音信号量化前向量之间的误差。
在一个实施例中,提供了一种语音信号处理装置,该装置包括:
样本获取模块,用于获取多种样本语音信号量化后样本码本向量的码本索引,以及各样本码本向量的概率;
第一填充模块,用于根据各样本码本向量的概率从大到小的顺序,对各码本索引进行排序,并基于排序结果和码本索引填充初始二维向量表中的关键行向量索引、关键列向量索引;
第二填充模块,用于根据预设规则对填充后的初始二维向量表中的表项的索引值进行补充,得到二维向量表。
在一个实施例中,上述预设规则包括:若表项的关键行向量索引与关键列向量索引相同,则表项的索引值与关键行向量索引和关键列向量索引相同;若表项的关键行向量索引与关键列向量索引不相同,则基于表项的待填充的索引值与关键行向量索引,或者,与关键列向量索引之间的汉明距离确定表项的索引值。
在一个实施例中,上述基于表项的待填充的索引值与关键行向量索引,或者,与关键列向量索引之间的汉明距离确定表项的索引值的方法包括以下至少一个:
待填充的索引值与关键行向量索引,或者关键列向量索引的值相同时,与对应的关键列向量索引或者关键行向量索引之间的汉明距离等于1;
待填充的索引值与关键行向量索引,或者关键列向量索引之间的汉明距离等于1时,与对应的关键列向量索引或者关键行向量索引之间的汉明距离等于1;
对于将满足条件的表项填充完成后余留的空白表项,则空白表项中待填充的索引值在二维向量表中出现的次数需小于等于预设次数阈值,且空白表项中待填充的索引值对应的码本向量的概率大于预设概率阈值。
在一个实施例中,在装置还包括:
函数获取模块,用于获取码本向量的整体代价函数,整体代价函数用于表征码本向量的重排映射关系;
映射模块,用于将整体代价函数值最小时对应的映射关系,确定为码本向量的目标重排映射关系;
重排模块,用于根据目标重排映射关系,对码本向量进行码本重排。
在一个实施例中,如图7所示,提供了一种语音信号处理装置,提供一种语音信号处理装置,该装置包括:
接收模块13,用于接收编码器发送的码流;码流为编码器基于待传输语音信号量化后的码本向量的码本索引,从预设的二维量化表中查找的码本索引对应的目标坐标的行坐标对应的码流和/或列坐标对应的码流;
其中,二维量化表中包括多种语音信号量化后的码本向量的码本索引;目标坐标指示的码本索引对应的码本向量与待传输语音信号量化前的向量之间的误差最小;
解码模块14,用于根据二维量化表对码流进行解码。
在一个实施例中,提供了一种语音信号处理装置,若码流为行坐标对应的码流和列坐标对应的码流;则上述解码模块14包括:
目标索引确定单元,用于根据行坐标和列坐标定位目标码本索引;
解码单元,用于根据目标码本索引对应的码本向量,对码流进行解码。
在一个实施例中,提供了一种语音信号处理装置,若码流为行坐标对应的码流,或者,列坐标对应的码流;
则上述目标索引确定单元,用于根据行坐标定位的关键行向量索引确定目标码本索引,或者,根据列坐标定位的关键列向量索引确定目标码本索引;
上述解码单元,用于根据行坐标确定的目标码本索引对应的码本向量,对码流进行解码;或者,根据列坐标确定的目标码本索引对应的码本向量,对码流进行解码。
上述实施例提供的所有语音信号处理装置,其实现原理和技术效果与上述语音信号处理方法实施例类似,在此不再赘述。
关于语音信号处理装置的具体限定可以参见上文中对于语音信号处理方法的限定,在此不再赘述。上述语音信号处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种语音信号处理方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取待传输语音信号量化后的码本向量的码本索引;
从预设的二维量化表中,查找码本索引对应的目标坐标;二维量化表中包括多种语音信号量化后的码本向量的码本索引;目标坐标指示的码本索引对应的码本向量与待传输语音信号量化前的向量之间的误差最小;
将目标坐标的行坐标对应的码流和列坐标对应的码流分别发向解码器;码流用于指示解码器根据二维量化表进行解码。
或者,该处理器执行计算机程序时实现以下步骤:
接收编码器发送的码流;码流为编码器基于待传输语音信号量化后的码本向量的码本索引,从预设的二维量化表中查找的码本索引对应的目标坐标的行坐标对应的码流和/或列坐标对应的码流;
其中,二维量化表中包括多种语音信号量化后的码本向量的码本索引;目标坐标指示的码本索引对应的码本向量与待传输语音信号量化前的向量之间的误差最小;
根据二维量化表对码流进行解码。
上述实施例提供的一种计算机设备,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取待传输语音信号量化后的码本向量的码本索引;
从预设的二维量化表中,查找码本索引对应的目标坐标;二维量化表中包括多种语音信号量化后的码本向量的码本索引;目标坐标指示的码本索引对应的码本向量与待传输语音信号量化前的向量之间的误差最小;
将目标坐标的行坐标对应的码流和列坐标对应的码流分别发向解码器;码流用于指示解码器根据二维量化表进行解码。
或者,该计算机程序被处理器执行时实现以下步骤:
接收编码器发送的码流;码流为编码器基于待传输语音信号量化后的码本向量的码本索引,从预设的二维量化表中查找的码本索引对应的目标坐标的行坐标对应的码流和/或列坐标对应的码流;
其中,二维量化表中包括多种语音信号量化后的码本向量的码本索引;目标坐标指示的码本索引对应的码本向量与待传输语音信号量化前的向量之间的误差最小;
根据二维量化表对码流进行解码。
上述实施例提供的一种计算机可读存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。