音频编解码方法和装置与流程

文档序号:30055882发布日期:2022-05-17 18:05阅读:216来源:国知局
音频编解码方法和装置与流程

1.本技术涉及音频编解码技术,尤其涉及一种音频编解码方法和装置。


背景技术:

2.随着真无线立体声(true wireless stereo,tws)耳机、智能音箱和智能手表等无线蓝牙设备在人们日常生活中的广泛普及和使用,人们在各种场景下对高质量音乐播放体验的需求也变得越来越迫切,尤其是在地铁、机场、火车站等蓝牙信号易受干扰的环境中。由于蓝牙信道对数据传输大小的限制,音乐数据流必须经过蓝牙设备发送端的音频编码器进行数据压缩后才能传输到蓝牙设备接收端进行解码,这样同时也促使了各种蓝牙音频编解码器的蓬勃发展。
3.蓝牙音频编解码器主要应用于蓝牙互联的设备(耳机、音箱、智能可穿戴设备等)之间,以在不同场景需求下提供一个高质量的音乐传输和播放。目前音频编解码技术分为两种,一种是高码率编解码技术,可以适用于对蓝牙信道传输质量有较高需求的场景,另一种是低码率编解码技术,可以适用于对音质有较高需求的场景。
4.因此,如何在高码率编解码和低码率编解码之间实现平滑过渡,是满足用户在任意场景下对高品质音乐的需求的关键。


技术实现要素:

5.本技术提供一种音频编解码方法和装置,以实现低码率编解码处理和高码率编解码处理的无缝融合,使得在符合蓝牙信道对数据传输大小限制的前提下,最大化保证音频的音质,提高蓝牙信道的抗干扰能力,带给用户更优化的音频体验。
6.第一方面,本技术提供一种音频编解码方法,包括:音频发送设备获得待编码的当前音频帧的设定码率和上一帧音频帧的最终编码方式,最终编码方式包括第一码率编码方式、第二码率编码方式、第一码率编码向第二码率编码切换编码方式或者第二码率编码向第一码率编码切换编码方式,其中,第一码率低于第二码率;根据设定码率和上一帧音频帧的最终编码方式确定当前音频帧的最终编码方式;根据当前音频帧的最终编码方式对当前音频帧进行编码。音频发送设备将码流信息发送给音频接收设备。音频接收设备获得码流信息;解析码流信息以获得解码方式和编码码流,编码码流包括第一码率编码码流和/或第二码率编码码流,解码方式包括第一码率解码方式、第二码率解码方式、第一码率解码向第二码率解码切换解码方式或者第二码率解码向第一码率解码切换解码方式,当解码方式为第一码率解码方式时,编码码流包括第一码率编码码流,当解码方式为第二码率解码方式时,编码码流包括第二码率编码码流,当解码方式为第一码率解码向第二码率解码切换解码方式或者第二码率解码向第一码率解码切换解码方式时,编码码流包括第一码率编码码流和第二码率编码码流;根据解码方式对编码码流进行解码以获得目标音频帧。
7.音频帧可以是音频发送设备发送给音频接收设备的音频中的任意一帧。本技术中每次编码的对象可以是音频中的一帧音频帧,即本技术提供的音频编码方法是针对一帧音
频帧的,下文确定编码方式的方法适用于音频中的每一帧音频帧。因此为了区分,将音频发送设备正在进行编码的音频帧称为音频帧或者当前音频帧,将音频发送设备仅先于音频帧编码的音频帧称为上一帧音频帧。可选的,音频帧可以以音频脉冲编码调制(pulse code modulation,pcm)数据的形式表示。
8.设定码率可以是用户根据当前的信道状态预先设定的目标编码码率。该设定码率例如可以是192kbps、256kbps、400kbps或者600kbps。
9.最终编码方式是指音频发送设备对音频帧进行编码时实际采用的编码方式,可以包括第一码率编码方式、第二码率编码方式、第一码率编码向第二码率编码切换编码方式或者第二码率编码向第一码率编码切换编码方式,其中,第一码率低于第二码率,例如第一码率可以是64kbps,128kbps,192kbps,256kbps,400kbps,或600kbps等等,第二码率可以是128kbps,192kbps,256kbps,400kbps,或600kbps等等;需要说明的是,本发明实施例中并不限定第一码率和第二码率的具体数值,只要满足第一码率低于第二码率即可。下文中也可以将第一码率称作低码率,将第二码率称作高码率。
10.本技术中涉及两种编码处理,第一码率编码处理和第二码率编码处理,也即低码率编码处理和高码率编码处理,其中,低码率编码处理例如可以包括高级音频编码器(advanced audio coding,aac)、下一代蓝牙默认的低功耗低延迟的编码器(low complexity communication codec,lc3)等,高码率编码处理例如可以包括低时延高保真音频编码器(low-latency hi-definition audio codec,lhdc)、低功耗通信编码器高码率版本(low complexity communication codec plus,lc3plus)等。
11.在一种可能的实现方式中,低码率编码处理的帧长和高码率编码处理的帧长相同,且低码率编码处理的编解码的总时延与高码率编码处理的编解码的总时延相同的情况下,当设定码率小于设定阈值,且上一帧音频帧的最终编码方式为低码率编码方式时,确定当前音频帧的最终编码方式为低码率编码方式;或者,
12.当设定码率小于设定阈值,且上一帧音频帧的最终编码方式为高码率编码方式时,确定当前音频帧的最终编码方式为高码率编码向低码率编码切换编码方式;或者,
13.当设定码率小于设定阈值,且上一帧音频帧的最终编码方式为低码率编码向高码率编码切换编码方式时,确定当前音频帧的最终编码方式为高码率编码向低码率编码切换编码方式;或者,
14.当设定码率小于设定阈值,且上一帧音频帧的最终编码方式为高码率编码向低码率编码切换编码方式时,确定当前音频帧的最终编码方式为低码率编码方式;或者,
15.当设定码率大于设定阈值,且上一帧音频帧的最终编码方式为低码率编码方式时,确定当前音频帧的最终编码方式为低码率编码向高码率编码切换编码方式;或者,
16.当设定码率大于设定阈值,且上一帧音频帧的最终编码方式为高码率编码方式时,确定当前音频帧的最终编码方式为高码率编码方式;或者,
17.当设定码率大于设定阈值,且上一帧音频帧的最终编码方式为低码率编码向高码率编码切换编码方式时,确定当前音频帧的最终编码方式为高码率编码方式;或者,
18.当设定码率大于设定阈值,且上一帧音频帧的最终编码方式为高码率编码向低码率编码切换编码方式时,确定当前音频帧的最终编码方式为低码率编码向高码率编码切换编码方式。
19.上述设定阈值的取值与音频帧的声道数相关联。例如,音频帧的声道数为单声道时,设定阈值可以是150kbps,音频帧的声道数为双声道时,设定阈值可以是300kbps。
20.在一种可能的实现方式中,低码率编码处理的帧长和高码率编码处理的帧长不相同的情况下,当设定码率小于设定阈值,且上一帧音频帧的最终编码方式为低码率编码方式时,确定当前音频帧的最终编码方式为低码率编码方式;或者,
21.当设定码率小于设定阈值,且上一帧音频帧的最终编码方式为高码率编码方式时,确定当前音频帧的最终编码方式为高码率编码向低码率编码切换编码方式,且启动第一计数器,第一计数器的初始值为第一设定值,第一计数器在值为0时终止。启动第一计数器的目的在于统计切换帧的处理情况,在处理第一个切换帧时启动该第一计数器,并且将第一计数器的初始值设定为计算获得的切换帧的个数(第一设定值)。每处理完一个切换帧,就将第一计数器减1,当第一计数器的值为0时表示切换帧已经全部编码完成,此时将第一计数器终止。第一计数器的值为第一设定值时表示当前处理的是第一个切换帧,第一计数器的值为1时表示当前处理的是最后一个切换帧,第一计数器的值小于第一设定值且大于1时表示当前处理的是中间的切换帧;或者,
22.当设定码率大于设定阈值,且上一帧音频帧的最终编码方式为高码率编码方式时,确定当前音频帧的最终编码方式为高码率编码方式;或者,
23.当设定码率大于设定阈值,且上一帧音频帧的最终编码方式为低码率编码方式时,确定当前音频帧的最终编码方式为低码率编码向高码率编码切换编码方式,且启动第二计数器,第二计数器的初始值为第一设定值,第二计数器在值为0时终止。同样的,启动第二计数器的目的在于统计切换帧的处理情况,在处理第一个切换帧时启动该第二计数器,并且将第二计数器的初始值设定为计算获得的切换帧的个数(第一设定值)。每处理完一个切换帧,就将第二计数器减1,当第二计数器的值为0时表示切换帧已经全部编码完成,此时将第二计数器终止。第二计数器的值为第一设定值时表示当前处理的是第一个切换帧,第二计数器的值为1时表示当前处理的是最后一个切换帧,第二计数器的值小于第一设定值且大于1时表示当前处理的是中间的切换帧;或者,
24.当上一帧音频帧的最终编码方式为高码率编码向低码率编码切换编码方式,且第一计数器处于启动状态(亦即第一计数器的值大于0)时,将第一计数器的值减1;若第一计数器仍处于启动状态,则确定当前音频帧的最终编码方式为高码率编码向低码率编码切换编码方式;或者,若第一计数器终止(亦即第一计数器的值为0),则确定当前音频帧的最终编码方式为低码率编码方式;或者,
25.当上一帧音频帧的最终编码方式为低码率编码向高码率编码切换编码方式,且第二计数器处于启动状态(亦即第二计数器的值大于0)时,将第二计数器的值减1;若第二计数器仍处于启动状态,则确定当前音频帧的最终编码方式为低码率编码向高码率编码切换编码方式;或者,若第二计数器终止(亦即第二计数器的值为0),则确定当前音频帧的最终编码方式为高码率编码方式;
26.同样的,上述设定阈值的取值与音频帧的声道数相关联。例如,音频帧的声道数为单声道时,设定阈值可以是165kbps,音频帧的声道数为双声道时,设定阈值可以是330kbps。
27.上述切换帧的个数d的取值可以采用以下方法获得,其中,a表示低码率编码方式,
b表示高码率编码方式,a

b表示低码率编码向高码率编码切换编码方式,b

a表示高码率编码向低码率编码切换编码方式。
28.(1)a

b的切换帧的个数
29.d=取整((max(低码率的编解码的总时延,高码率的编解码的总时延)+低码率向高码率交叠长度+处理帧长-1)/处理帧长)
30.(2)b

a的切换帧的个数
31.d=取整((max(低码率的编解码的总时延,高码率的编解码的总时延)+高码率向低码率交叠长度+处理帧长-1)/处理帧长)
32.其中,处理帧长=max(低码率编码处理的帧长,高码率编码处理的帧长),低码率向高码率交叠长度=处理帧长

低码率的编解码的总时延%处理帧长,高码率向低码率交叠长度=处理帧长

高码率的编解码的总时延%处理帧长,%表示取余操作。
33.音频发送设备对当前音频帧进行编码,因此可以有以下几种情况:
34.1、低码率编码处理的帧长和高码率编码处理的帧长相同,且低码率编码处理的编解码的总时延与高码率编码处理的编解码的总时延相同
35.(1)当前音频帧的最终编码方式为低码率编码方式
36.音频发送设备对当前音频帧进行低码率编码处理。
37.在一种可能的实现方式中,音频发送设备可以先判断低码率编码处理是否支持当前音频帧的采样率,当低码率编码处理支持当前音频帧的采样率时,可以直接对当前音频帧进行低码率编码处理;或者,当低码率编码处理不支持当前音频帧的采样率时,可以先对当前音频帧进行下采样或上采样处理以获得下采样或上采样后的当前音频帧,然后再对下采样或上采样后的当前音频帧进行低码率编码处理,该低码率编码处理支持下采样或上采样后的当前音频帧的采样率。例如,低码率编码处理不支持88.2khz和96khz的采样率,音频发送设备可以采用正交镜像变换(quadrature mirror filter,qmf)进行下采样处理,将88.2khz对应的频带(0~44.1khz)分成两个子带0~22.05khz和22.05~44.1khz,选取低子带0~22.05khz进行低码率编码处理;将96khz对应的频带(0~48khz)分成两个子带0~24khz和24~48khz,选取低子带0~24khz进行低码率编码处理。
38.(2)当前音频帧的最终编码方式为高码率编码方式
39.音频发送设备对当前音频帧进行高码率编码处理。
40.在一种可能的实现方式中,音频发送设备可以先判断高码率编码处理是否支持当前音频帧的采样率,当高码率编码处理支持当前音频帧的采样率时,可以直接对当前音频帧进行高码率编码处理;或者,当高码率编码处理不支持当前音频帧的采样率时,可以先对当前音频帧进行下采样或上采样处理以获得下采样或上采样后的当前音频帧,然后再对下采样或上采样后的当前音频帧进行高码率编码处理,该高码率编码处理支持下采样或上采样后的当前音频帧的采样率。
41.(3)当前音频帧的最终编码方式为低码率编码向高码率编码切换编码方式或者高码率编码向低码率编码切换编码方式
42.音频发送设备可以对当前音频帧进行低码率编码处理和高码率编码处理。同样的,音频发送设备可以参照上述描述先判断高低码率两种编码处理是否支持当前音频帧的采样率,此处不再赘述。
43.2、低码率编码处理和高码率编码处理各自的帧长不相同,或者低码率编码处理和高码率编码处理各自的帧长相同且编解码的总时延不相同
44.(1)当前音频帧的最终编码方式为低码率编码方式
45.音频发送设备可以先判断低码率编码处理是否支持当前音频帧的采样率,当低码率编码处理支持当前音频帧的采样率时,可以直接对当前音频帧进行低码率编码处理;或者,当低码率编码处理不支持当前音频帧的采样率时,可以先对当前音频帧进行下采样或上采样处理以获得下采样或上采样后的当前音频帧,然后再对下采样或上采样后的当前音频帧进行低码率编码处理,该低码率编码处理支持下采样或上采样后的当前音频帧的采样率。
46.(2)当前音频帧的最终编码方式为高码率编码方式
47.音频发送设备可以先判断高码率编码处理是否支持当前音频帧的采样率,当高码率编码处理支持当前音频帧的采样率时,可以直接对当前音频帧进行高码率编码处理;或者,当高码率编码处理不支持当前音频帧的采样率时,可以先对当前音频帧进行下采样或上采样处理以获得下采样或上采样后的当前音频帧,然后再对下采样或上采样后的当前音频帧进行高码率编码处理,该高码率编码处理支持下采样或上采样后的当前音频帧的采样率。
48.(3)当前音频帧的最终编码方式为低码率编码向高码率编码切换编码方式
49.a、低码率编码处理的帧长大于高码率编码处理的帧长
50.如上所述,第二计数器的作用是统计切换帧的处理情况,第二计数器处于启动状态表示当前处理的仍然是切换帧,此时当第二计数器的值大于1(表示当前处理的仍然是切换帧且不是切换帧中的最后一帧)时,对当前音频帧进行低码率编码处理;对当前音频帧进行高码率编码处理。或者,当第二计数器的值等于1(表示当前处理的是切换帧中的最后一帧)时,对当前音频帧进行高码率编码处理。
51.音频发送设备可以参照上述描述先判断高低码率两种编码处理是否支持当前音频帧的采样率,此处不再赘述。
52.b、低码率编码处理的帧长小于高码率编码处理的帧长
53.如上所述,第二计数器的作用是统计切换帧的处理情况,第二计数器处于启动状态表示当前处理的仍然是切换帧,此时第二计数器的值等于第一设定值(表示当前处理的是切换帧中的第一帧)时,对当前音频帧进行低码率编码处理;对当前音频帧进行高码率编码处理。或者,当第二计数器的值小于第一设定值(表示当前处理的仍然是切换帧且不是切换帧中的第一帧)时,对当前音频帧进行高码率编码处理。
54.音频发送设备可以参照上述描述先判断高低码率两种编码处理是否支持当前音频帧的采样率,此处不再赘述。
55.(4)当前音频帧的最终编码方式为高码率编码向低码率编码切换编码方式
56.a、低码率编码处理的帧长大于高码率编码处理的帧长
57.如上所述,第一计数器的作用是统计切换帧的处理情况,第一计数器处于启动状态表示当前处理的仍然是切换帧,此时当第一计数器的值等于第一设定值(表示当前处理的是切换帧中的第一帧)时,对当前音频帧进行低码率编码处理;对当前音频帧进行高码率编码处理。或者,当第一计数器的值小于第一设定值(表示当前处理的仍然是切换帧且不是
切换帧中的第一帧)时,对当前音频帧进行低码率编码处理。
58.音频发送设备可以参照上述描述先判断高低码率两种编码处理是否支持当前音频帧的采样率,此处不再赘述。
59.b、低码率编码处理的帧长小于高码率编码处理的帧长
60.如上所述,第一计数器的作用是统计切换帧的处理情况,第一计数器处于启动状态表示当前处理的仍然是切换帧,此时当第一计数器的值大于1(表示当前处理的仍然是切换帧且不是切换帧中的最后一帧)时,对当前音频帧进行低码率编码处理;对当前音频帧进行高码率编码处理。或者,当第一计数器的值等于1(表示当前处理的是切换帧中的最后一帧)时,对当前音频帧进行低码率编码处理。
61.音频发送设备可以参照上述描述先判断高低码率两种编码处理是否支持当前音频帧的采样率,此处不再赘述。
62.编码后的当前音频帧对应的码流信息包括包头信息、低码率编码码流和/或高码率编码码流,其中,包头信息包括当前音频帧的最终编码方式、采样率、声道数、帧长和低码率编码码流的长度。如果音频发送设备对当前音频帧只进行低码率编码处理,那么码流信息中只包含低码率编码码流;如果音频发送设备对当前音频帧只进行高码率编码处理,那么码流信息中只包含高码率编码码流;如果音频发送设备对当前音频帧进行低码率编码处理和高码率编码处理,那么码流信息中包含低码率编码码流和高码率编码码流。
63.音频发送设备可以通过蓝牙连接等通信方式将码流信息发送给音频接收设备。
64.与编码端相对应,音频发送设备采用哪种编码方式对音频帧进行编码处理,在解码端就需要采用对应的解码方式对编码码流进行解码处理。因此有以下几种解码处理方式:
65.1、低码率编码处理的帧长和高码率编码处理的帧长相同,且低码率编码处理的编解码的总时延与高码率编码处理的编解码的总时延相同
66.(1)解码方式为低码率解码方式
67.音频接收设备对低码率编码码流进行低码率解码处理。
68.在一种可能的实现方式中,音频接收设备可以先判断低码率解码处理是否支持低码率编码码流对应的采样率,当低码率解码处理支持该采样率时,可以直接对低码率编码码流进行低码率解码处理;或者,当低码率解码处理不支持该采样率时,可以先对低码率编码码流进行低码率解码处理,然后对解码后的数据进行上采样或下采样处理以获得目标音频帧。需要说明的是,编码端和解码端所执行的上采样或下采样处理时相对应的,即编码端如果采用了下采样处理,那么解码端可以采用上采样处理;编码端如果采用了上采样处理,那么解码端可以采用下采样处理。例如,上述描述中在编码端,音频发送设备对音频帧进行下采样处理后取低子带进行编码处理,相应的,在解码端,音频接收设备对低码率编码码流解码后,由于缺少高子带部分的数据,因此通过补0的方式上采样获得目标音频帧。
69.(2)解码方式为高码率解码方式
70.音频接收设备对高码率编码码流进行高码率解码处理。
71.在一种可能的实现方式中,音频接收设备可以先判断高码率解码处理是否支持高码率编码码流对应的采样率,当高码率解码处理支持该采样率时,可以直接对高码率编码码流进行高码率解码处理;或者,当高码率解码处理不支持该采样率时,可以先对高码率编
码码流进行高码率解码处理,然后对解码后的数据进行上采样或下采样处理以获得目标音频帧。
72.(3)解码方式为低码率解码向高码率解码切换解码方式
73.音频接收设备对低码率编码码流进行低码率解码处理以获得第二数据,并对高码率编码码流进行高码率解码处理以获得第一数据。得到第二数据和第一数据之后,音频接收设备可以对第二数据的后端数据和第一数据的前端数据进行平滑处理,以确保低高码率之间的平滑切换,平滑的数据长度为n个样点数据,即将第二数据的后n个样点数据与第一数据的前n个样点数据进行加权平均以获得n个样点平滑数据,根据第二数据除后n个样点数据外的其他数据和n个样点平滑数据获得目标音频帧。
74.同样的,音频接收设备可以上述描述先判断高低码率两种解码处理是否支持采样率,此处不再赘述。
75.(4)解码方式为高码率解码向低码率解码切换解码方式
76.音频接收设备对高码率编码码流进行高码率解码处理以获得第一数据,并对低码率编码码流进行低码率解码处理以获得第二数据。得到第一数据和第二数据之后,音频接收设备可以对第一数据的后端数据和第二数据的前端数据进行平滑处理,以确保高低码率之间的平滑切换,平滑的数据长度为n个样点数据,即将第一数据的后n个样点数据与第二数据的前n个样点数据进行加权平均以获得n个样点平滑数据,根据第一数据除后n个样点数据外的其他数据和n个样点平滑数据获得目标音频帧。
77.同样的,音频接收设备可以上述描述先判断高低码率两种解码处理是否支持采样率,此处不再赘述。
78.2、低码率编码处理和高码率编码处理各自的帧长不相同
79.(1)解码方式为低码率解码方式
80.a、低码率编码处理的帧长大于高码率编码处理的帧长
81.音频接收设备对低码率编码码流进行低码率解码处理。
82.在一种可能的实现方式中,音频接收设备可以先判断低码率解码处理是否支持低码率编码码流对应的采样率,当低码率解码处理支持该采样率时,可以直接对低码率编码码流进行低码率解码处理;或者,当低码率解码处理不支持该采样率时,可以先对低码率编码码流进行低码率解码处理,然后对解码后的数据进行上采样或下采样处理以获得目标音频帧。
83.b、低码率编码处理的帧长小于高码率编码处理的帧长
84.音频接收设备对低码率编码码流进行低码率解码处理以获得第二数据。由于低码率解码处理的帧长小于高码率解码处理的帧长,为了使低码率解码处理和高码率解码处理得到的音频帧对齐,音频接收设备可以在得到第二数据后,将低码率解码处理对应的第二数据队列从队头溢出m个样点数据,按照先入先出(first input first output,fifo)方式将第二数据放入第二数据队列,然后从第二数据队列的队头提取m个样点数据以获得目标音频帧。该第二数据队列遵循先入先出的原则。m与高码率解码处理的帧长相关联,例如,m=处理帧长
×
声道数,处理帧长是高码率解码处理的帧长。
85.同样的,音频接收设备可以上述描述先判断低码率解码处理是否支持采样率,此处不再赘述。
86.(2)解码方式为高码率解码方式
87.a、低码率编码处理的帧长大于高码率编码处理的帧长
88.音频接收设备对高码率编码码流进行高码率解码处理以获得第一数据。由于低码率编码处理的帧长大于高码率编码处理的帧长,为了使低码率解码处理和高码率解码处理得到的音频帧对齐,音频接收设备可以在得到第一数据后,将高码率解码处理对应的第一数据队列从队头溢出m个样点数据,并将第一数据放入第一数据队列的队尾,然后从第一数据队列的队头提取m个样点数据以获得目标音频帧。该第一数据队列遵循先入先出的原则。m与低码率解码处理的帧长相关联。
89.同样的,音频接收设备可以上述描述先判断高码率解码处理是否支持采样率,此处不再赘述。
90.b、低码率编码处理的帧长小于高码率编码处理的帧长
91.音频接收设备对高码率编码码流进行高码率解码处理。
92.在一种可能的实现方式中,音频接收设备可以先判断高码率解码处理是否支持高码率编码码流对应的采样率,当高码率解码处理支持该采样率时,可以直接对高码率编码码流进行高码率解码处理;或者,当高码率解码处理不支持该采样率时,可以先对高码率编码码流进行高码率解码处理,然后对解码后的数据进行上采样或下采样处理以获得目标音频帧。
93.(3)解码方式为低码率解码向高码率解码切换解码方式
94.a、低码率编码处理的帧长大于高码率编码处理的帧长
95.当上一帧音频帧的解码方式不是低码率解码向高码率解码切换解码方式时,将高码率解码处理对应的第一数据队列置为全0,第一数据队列遵循先入先出的原则;对低码率编码码流进行低码率解码处理以获得第二数据;对高码率编码码流进行高码率解码处理以获得第一数据;将第一数据队列从队头溢出m个样点数据,并将第一数据放入第一数据队列的队尾,m与低码率解码处理的帧长相关联;从第一数据队列的队头提取m个样点数据以获得第三数据;将第二数据的后n个样点数据与第三数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据第二数据除后n个样点数据外的其他数据和n个样点平滑数据获得目标音频帧。
96.音频发送设备可以参照上述描述先判断高低码率两种编码处理是否支持当前音频帧的采样率,此处不再赘述。
97.b、低码率编码处理的帧长小于高码率编码处理的帧长
98.当上一帧音频帧的解码方式不是低码率解码向高码率解码切换解码方式时,对低码率编码码流进行低码率解码处理以获得第二数据;将低码率解码处理对应的第二数据队列从队头溢出m个样点数据,并将第二数据放入第二数据队列的队尾,第二数据队列遵循先入先出的原则,m与高码率解码处理的帧长相关联;从第二数据队列的队头提取m个样点数据以获得第四数据;对高码率编码码流进行高码率解码处理以获得第一数据;将第四数据的后n个样点数据与第一数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据第四数据除后n个样点数据外的其他数据和n个样点平滑数据获得目标音频帧。或者,当上一帧音频帧的解码方式是低码率解码向高码率解码切换解码方式时,将第二数据队列从队头溢出m个样点数据;从第二数据队列的队头提取m个样点数据以获得第四数据;对高码
率编码码流进行高码率解码处理以获得第一数据;将第四数据的后n个样点数据与第一数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据第四数据除后n个样点数据外的其他数据和n个样点平滑数据获得目标音频帧。
99.音频发送设备可以参照上述描述先判断高低码率两种编码处理是否支持当前音频帧的采样率,此处不再赘述。
100.(4)解码方式为高码率解码向低码率解码切换解码方式
101.a、低码率编码处理的帧长大于高码率编码处理的帧长
102.当上一帧音频帧的解码方式不是高码率解码向低码率解码切换解码方式时,对高码率编码码流进行高码率解码处理以获得第一数据;将高码率解码处理对应的第一数据队列从队头溢出m个样点数据,并将第一数据放入第一数据队列的队尾,第一数据队列遵循先入先出的原则,m与低码率解码处理的帧长相关联;从第一数据队列的队头提取m个样点数据以获得第三数据;对低码率编码码流进行低码率解码处理以获得第二数据;将第三数据的后n个样点数据与第二数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据第三数据除后n个样点数据外的其他数据和n个样点平滑数据获得目标音频帧。或者,当上一帧音频帧的解码方式是高码率解码向低码率解码切换解码方式时,将第一数据队列从队头溢出m个样点数据;从第一数据队列的队头提取m个样点数据以获得第三数据;对低码率编码码流进行低码率解码处理以获得第二数据;将第三数据的后n个样点数据与第二数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据第三数据除后n个样点数据外的其他数据和n个样点平滑数据获得目标音频帧。
103.音频发送设备可以参照上述描述先判断高低码率两种编码处理是否支持当前音频帧的采样率,此处不再赘述。
104.b、低码率编码处理的帧长小于高码率编码处理的帧长
105.当上一帧音频帧的解码方式不是高码率解码向低码率解码切换解码方式时,将低码率解码处理对应的第二数据队列置为全0,第二数据队列遵循先入先出的原则;对高码率编码码流进行高码率解码处理以获得第一数据;对低码率编码码流进行低码率解码处理以获得第二数据;将第二数据队列从队头溢出m个样点数据,并将第二数据放入第二数据队列的队尾,m与高码率解码处理的帧长相关联;从第二数据队列的队头提取m个样点数据以获得第四数据;将第一数据的后n个样点数据与第四数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据第一数据除后n个样点数据外的其他数据和n个样点平滑数据获得目标音频帧。
106.音频发送设备可以参照上述描述先判断高低码率两种编码处理是否支持当前音频帧的采样率,此处不再赘述。
107.在一种可能的实现方式中,音频发送设备可以根据上一帧音频帧的设定码率和当前音频帧的设定码率确定低码率编码处理对应的第一码率和高码率编码处理对应的第二码率,第一码率和第二码率之和为当前音频帧的设定码率。
108.(1)当前音频帧的最终编码方式为高码率编码向低码率编码切换编码方式,可以有:
109.a、如果上一帧音频帧的设定码率brp满足:双声道:600kbps<brp≤990kbps,单声道:300kbps<brp≤495kbps,当前音频帧的设定码率brf满足:双声道:brf<300kbps,单声
道:brf<150kbps,那么当前音频帧的码率分配为:第一码率为brf,第二码率为为brp-brf。
110.b、如果上一帧音频帧的设定码率brp满足:双声道:364kbps<brp≤600kbps,单声道:182kbps<brp≤300kbps,当前音频帧的设定码率brf满足:双声道:brf<300kbps,单声道:brf<150kbps,那么当前音频帧的码率分配为:第一码率为双声道是brp-300kbps,第一码率为单声道是brp-150kbps,第二码率为双声道是300kbps,第二码率为单声道是150kbps。
111.c、如果上一帧音频帧的设定码率brp满足:双声道:300kbps≤brp≤364kbps,单声道:150kbps≤brp≤182kbps,当前音频帧的设定码率brf满足:双声道:brf<300kbps,单声道:brf<150kbps,那么当前音频帧的码率分配为:第一码率为双声道是64kbps,第一码率为单声道是32kbps,第二码率为双声道是300kbps,第二码率为单声道是150kbps。
112.(2)当前音频帧的最终编码方式为低码率编码向高码率编码切换编码方式,可以有:
113.a、如果上一帧音频帧的设定码率brp满足:双声道:64kbps≤brp<300kbps,单声道:32kbps≤brp<150kbps,当前音频帧的设定码率brf满足:双声道:600kbps<brf≤990kbps,单声道:300kbps<brf≤495kbps,那么当前音频帧的码率分配为:第一码率为brp第二码率为brf-brp。
114.b、如果上一帧音频帧的设定码率brp满足:双声道:364kbps<brf≤600kbps,单声道:182kbps<brf≤300kbps,那么当前音频帧的码率分配为:第一码率为双声道是brf-300kbps,第一码率为单声道是brf-150kbps,第二码率为双声道是300kbps,第二码率为单声道是150kbps。
115.c、如果上一帧音频帧的设定码率brp满足:双声道:300kbps≤brf≤364kbps,单声道:150kbps≤brf≤182kbps,那么当前音频帧的码率分配为:第一码率为双声道是64kbps,第一码率为单声道是32kbps,第二码率为双声道是300kbps,第二码率为单声道是150kbps。
116.d、如果上一帧音频帧的设定码率brp满足:双声道:600kbps<brp≤990kbps,单声道:300kbps<brp≤495kbps,当前音频帧的设定码率brf满足:双声道:600kbps<brf≤990kbps,单声道:300kbps<brf≤495kbps,那么当前音频帧的码率分配为:第一码率和第二码率与上一帧音频帧的分配情况一致。
117.e、如果上一帧音频帧的设定码率brp满足:双声道:364kbps≤brp≤600kbps,单声道:182kbps≤brp≤300kbps,当前音频帧的设定码率brf满足:双声道:600kbps<brf≤990kbps,单声道:300kbps<brf≤495kbps,那么当前音频帧的码率分配为:第一码率为双声道是299kbps,第一码率为单声道是149kbps,第二码率为双声道是brf-299kbps,第二码率为单声道是brf-149kbps。
118.本技术基于设定码率和上一帧音频帧的最终编码方式确定当前音频帧的最终编码方式,并且据此设定发生高低码率切换的音频帧上的低码率编码处理和高码率编码处理各自对应的码率,编码端将码流信息发送给解码端;解码端解析码流信息获取解码方式,进而对码流数据进行解码,尤其是在发生高低码率切换的音频帧上对高低码率解码后的数据进行平滑处理,以实现低码率编解码处理和高码率编解码处理的无缝融合,使得在符合蓝牙信道对数据传输大小限制的前提下,最大化保证音频的音质,提高蓝牙信道的抗干扰能力,带给用户更优化的音频体验。
119.第二方面,本技术提供一种音频编码装置,包括:获得模块,用于获得待编码的当前音频帧的设定码率和上一帧音频帧的最终编码方式,所述最终编码方式包括第一码率编码方式、第二码率编码方式、第一码率编码向第二码率编码切换编码方式或者第二码率编码向第一码率编码切换编码方式,其中,第一码率低于第二码率;确定模块,用于根据所述设定码率和所述上一帧音频帧的最终编码方式确定所述当前音频帧的最终编码方式;编码模块,用于根据所述当前音频帧的最终编码方式对所述当前音频帧进行编码。
120.在一种可能的实现方式中,当第一码率编码处理的帧长和第二码率编码处理的帧长相同,且所述第一码率编码处理的编解码的总时延与所述第二码率编码处理的编解码的总时延相同时,所述确定模块,具体用于当所述设定码率小于设定阈值,且所述上一帧音频帧的最终编码方式为第一码率编码方式时,确定所述当前音频帧的最终编码方式为第一码率编码方式;或者,当所述设定码率小于设定阈值,且所述上一帧音频帧的最终编码方式为第二码率编码方式时,确定所述当前音频帧的最终编码方式为第二码率编码向第一码率编码切换编码方式;或者,当所述设定码率小于设定阈值,且所述上一帧音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式时,确定所述当前音频帧的最终编码方式为第二码率编码向第一码率编码切换编码方式;或者,当所述设定码率小于设定阈值,且所述上一帧音频帧的最终编码方式为第二码率编码向第一码率编码切换编码方式时,确定所述当前音频帧的最终编码方式为第一码率编码方式;或者,当所述设定码率大于设定阈值,且所述上一帧音频帧的最终编码方式为第一码率编码方式时,确定所述当前音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式;或者,当所述设定码率大于设定阈值,且所述上一帧音频帧的最终编码方式为第二码率编码方式时,确定所述当前音频帧的最终编码方式为第二码率编码方式;或者,当所述设定码率大于设定阈值,且所述上一帧音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式时,确定所述当前音频帧的最终编码方式为第二码率编码方式;或者,当所述设定码率大于设定阈值,且所述上一帧音频帧的最终编码方式为第二码率编码向第一码率编码切换编码方式时,确定所述当前音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式;其中,所述设定阈值的取值与音频帧的声道数相关联。
121.在一种可能的实现方式中,当第一码率编码处理的帧长和第二码率编码处理的帧长不相同时,所述确定模块,具体用于当所述设定码率小于设定阈值,且所述上一帧音频帧的最终编码方式为第一码率编码方式时,确定所述当前音频帧的最终编码方式为第一码率编码方式;或者,当所述设定码率小于设定阈值,且所述上一帧音频帧的最终编码方式为第二码率编码方式时,确定所述当前音频帧的最终编码方式为第二码率编码向第一码率编码切换编码方式,且启动第一计数器,所述第一计数器的初始值为第一设定值,所述第一计数器在值为0时终止;或者,当所述设定码率大于设定阈值,且所述上一帧音频帧的最终编码方式为第二码率编码方式时,确定所述当前音频帧的最终编码方式为第二码率编码方式;或者,当所述设定码率大于设定阈值,且所述上一帧音频帧的最终编码方式为第一码率编码方式时,确定所述当前音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式,且启动第二计数器,所述第二计数器的初始值为第一设定值,所述第二计数器在值为0时终止;或者,当所述上一帧音频帧的最终编码方式为第二码率编码向第一码率编码切换编码方式,且所述第一计数器的值大于0时,将所述第一计数器的值减1;若所述第一计数器
的值仍大于0,则确定所述当前音频帧的最终编码方式为第二码率编码向第一码率编码切换编码方式;或者,若所述第一计数器的值为0,则确定所述当前音频帧的最终编码方式为第一码率编码方式;或者,当所述上一帧音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式,且所述第二计数器的值大于0时,将所述第二计数器的值减1;若所述第二计数器的值仍大于0,则确定所述当前音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式;或者,若所述第二计数器的值为0,则确定所述当前音频帧的最终编码方式为第二码率编码方式;其中,所述设定阈值的取值与音频帧的声道数相关联。
122.在一种可能的实现方式中,当所述当前音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式或者第二码率编码向第一码率编码切换编码方式时,所述编码模块,具体用于对所述当前音频帧进行第一码率编码处理;对所述当前音频帧进行第二码率编码处理。
123.在一种可能的实现方式中,当所述当前音频帧的最终编码方式为第二码率编码向第一码率编码切换编码方式,且所述第一码率编码处理的帧长大于所述第二码率编码处理的帧长时,所述编码模块,具体用于当所述第一计数器的值等于所述第一设定值时,对所述当前音频帧进行第一码率编码处理;对所述当前音频帧进行第二码率编码处理;或者,当所述第一计数器的值小于所述第一设定值时,对所述当前音频帧进行第一码率编码处理。
124.在一种可能的实现方式中,当所述当前音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式,且所述第一码率编码处理的帧长大于所述第二码率编码处理的帧长时,所述编码模块,具体用于当所述第二计数器的值大于1时,对所述当前音频帧进行第一码率编码处理;对所述当前音频帧进行第二码率编码处理;或者,当所述第二计数器的值等于1时,对所述当前音频帧进行第二码率编码处理。
125.在一种可能的实现方式中,当所述当前音频帧的最终编码方式为第二码率编码向第一码率编码切换编码方式,且所述第一码率编码处理的帧长小于所述第二码率编码处理的帧长时,所述编码模块,具体用于当所述第一计数器的值大于1时,对所述当前音频帧进行第一码率编码处理;对所述当前音频帧进行第二码率编码处理;或者,当所述第一计数器的值等于1时,对所述当前音频帧进行第一码率编码处理。
126.在一种可能的实现方式中,当所述当前音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式,且所述第一码率编码处理的帧长小于所述第二码率编码处理的帧长时,所述编码模块,具体用于当所述第二计数器的值等于所述第一设定值时,对所述当前音频帧进行第一码率编码处理;对所述当前音频帧进行第二码率编码处理;或者,当所述第二计数器的值小于所述第一设定值时,对所述当前音频帧进行第二码率编码处理。
127.在一种可能的实现方式中,所述编码模块,具体用于当所述第一码率编码处理支持所述当前音频帧的采样率时,对所述当前音频帧进行所述第一码率编码处理;或者,当所述第一码率编码处理不支持所述当前音频帧的采样率时,对所述当前音频帧进行下采样或上采样处理以获得下采样或上采样后的当前音频帧,对所述下采样或上采样后的当前音频帧进行所述第一码率编码处理,所述第一码率编码处理支持所述下采样或上采样后的当前音频帧的采样率。
128.在一种可能的实现方式中,所述编码模块,具体用于当所述第二码率编码处理支持所述当前音频帧的采样率时,对所述当前音频帧进行所述第二码率编码处理;或者,当所
述第二码率编码处理不支持所述当前音频帧的采样率时,对所述当前音频帧进行下采样或上采样处理以获得下采样或上采样后的当前音频帧,对所述下采样或上采样后的当前音频帧进行所述第二码率编码处理,所述第二码率编码处理支持所述下采样或上采样后的当前音频帧的采样率。
129.在一种可能的实现方式中,当所述当前音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式或者第二码率编码向第一码率编码切换编码方式时,所述确定模块,还用于根据所述上一帧音频帧的设定码率和所述当前音频帧的设定码率确定第一码率编码处理对应的第一码率和第二码率编码处理对应的第二码率,所述第一码率和所述第二码率之和为所述当前音频帧的设定码率;所述编码模块,具体用于以所述第一码率对所述当前音频帧进行所述第一码率编码处理;以所述第二码率对所述当前音频帧进行所述第二码率编码处理。
130.在一种可能的实现方式中,编码后的当前音频帧对应的码流信息包括包头信息、第一码率编码码流和/或第二码率编码码流,其中,所述包头信息包括所述当前音频帧的最终编码方式、采样率、声道数、帧长和所述第一码率编码码流的长度。
131.第三方面,本技术提供一种音频解码装置,包括:获得模块,用于获得码流信息;解析模块,用于解析所述码流信息以获得解码方式和编码码流,所述编码码流包括第一码率编码码流和/或第二码率编码码流,所述解码方式包括第一码率解码方式、第二码率解码方式、第一码率解码向第二码率解码切换解码方式或者第二码率解码向第一码率解码切换解码方式,当所述解码方式为第一码率解码方式时,所述编码码流包括第一码率编码码流,当所述解码方式为第二码率解码方式时,所述编码码流包括第二码率编码码流,当所述解码方式为第一码率解码向第二码率解码切换解码方式或者第二码率解码向第一码率解码切换解码方式时,所述编码码流包括第一码率编码码流和第二码率编码码流;解码模块,用于根据所述解码方式对所述编码码流进行解码以获得目标音频帧。
132.在一种可能的实现方式中,当所述解码方式为第一码率解码方式,并且第一码率编码处理的帧长和第二码率编码处理的帧长相同,且所述第一码率编码处理的编解码的总时延与所述第二码率编码处理的编解码的总时延相同时,或者,当所述解码方式为第一码率解码方式,并且第一码率解码处理的帧长大于第二码率解码处理的帧长时,所述解码模块,具体用于根据所述第一码率解码方式对所述第一码率编码码流进行解码处理以获得所述目标音频帧。
133.在一种可能的实现方式中,当所述解码方式为第一码率解码方式,并且第一码率解码处理的帧长小于第二码率解码处理的帧长时,所述解码模块,具体用于根据所述第一码率解码方式对所述第一码率编码码流进行解码处理以获得第二数据;将所述第一码率解码处理对应的第二数据队列从队头溢出m个样点数据,按照先入先出fifo方式将所述第二数据放入所述第二数据队列,m与所述第二码率解码处理的帧长相关联;从所述第二数据队列的队头提取m个样点数据以获得所述目标音频帧。
134.在一种可能的实现方式中,当所述解码方式为第二码率解码方式,并且第一码率编码处理的帧长和第二码率编码处理的帧长相同,且所述第一码率编码处理的编解码的总时延与所述第二码率编码处理的编解码的总时延相同时,或者,当所述解码方式为第二码率解码方式,并且第一码率解码处理的帧长小于第二码率解码处理的帧长时,所述解码模
块,具体用于根据所述第二码率解码方式对所述第二码率编码码流进行解码处理以获得所述目标音频帧。
135.在一种可能的实现方式中,当所述解码方式为第二码率解码方式,并且第一码率解码处理的帧长大于第二码率解码处理的帧长时,所述解码模块,具体用于根据所述第二码率解码方式对所述第二码率编码码流进行解码处理以获得第一数据;将所述第二码率解码处理对应的第一数据队列从队头溢出m个样点数据,按照先入先出fifo方式将所述第一数据放入所述第一数据队列,m与所述第一码率解码处理的帧长相关联;从所述第一数据队列的队头提取m个样点数据以获得所述目标音频帧。
136.在一种可能的实现方式中,当所述解码方式为第一码率解码向第二码率解码切换解码方式,并且第一码率编码处理的帧长和第二码率编码处理的帧长相同,且所述第一码率编码处理的编解码的总时延与所述第二码率编码处理的编解码的总时延相同时,所述解码模块,具体用于根据所述第一码率解码方式对所述第一码率编码码流进行解码处理以获得第二数据;根据所述第二码率解码方式对所述第二码率编码码流进行解码处理以获得第一数据;将所述第二数据的后n个样点数据与所述第一数据的前n个样点数据进行加权平均以获得n个样点平滑数据,n为第二设定值;根据所述第二数据除所述后n个样点数据外的其他数据和所述n个样点平滑数据获得所述目标音频帧。
137.在一种可能的实现方式中,当所述解码方式为第一码率解码向第二码率解码切换解码方式,并且第一码率解码处理的帧长大于第二码率解码处理的帧长时,所述解码模块,具体用于当上一帧音频帧的解码方式不是所述第一码率解码向第二码率解码切换解码方式时,将所述第二码率解码处理对应的第一数据队列置为全0,所述第一数据队列遵循先入先出的原则;根据所述第一码率解码方式对所述第一码率编码码流进行解码处理以获得第二数据;根据所述第二码率解码方式对所述第二码率编码码流进行解码处理以获得第一数据;将所述第一数据队列从队头溢出m个样点数据,并将所述第一数据放入所述第一数据队列的队尾,m与所述第一码率解码处理的帧长相关联;从所述第一数据队列的队头提取m个样点数据以获得第三数据;将所述第二数据的后n个样点数据与所述第三数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据所述第二数据除所述后n个样点数据外的其他数据和所述n个样点平滑数据获得所述目标音频帧。
138.在一种可能的实现方式中,当所述解码方式为第一码率解码向第二码率解码切换解码方式,并且第一码率解码处理的帧长小于第二码率解码处理的帧长时,所述解码模块,具体用于当所述上一帧音频帧的解码方式不是所述第一码率解码向第二码率解码切换解码方式时,根据所述第一码率解码方式对所述第一码率编码码流进行解码处理以获得第二数据;将所述第一码率解码处理对应的第二数据队列从队头溢出m个样点数据,按照先入先出fifo方式将所述第二数据放入所述第二数据队列,m与所述第二码率解码处理的帧长相关联;从所述第二数据队列的队头提取m个样点数据以获得第四数据;根据所述第二码率解码方式对所述第二码率编码码流进行解码处理以获得第一数据;将所述第四数据的后n个样点数据与所述第一数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据所述第四数据除所述后n个样点数据外的其他数据和所述n个样点平滑数据获得所述目标音频帧;或者,当所述上一帧音频帧的解码方式是所述第一码率解码向第二码率解码切换解码方式时,将所述第二数据队列从队头溢出m个样点数据;从所述第二数据队列的队头提取
m个样点数据以获得第四数据;根据所述第二码率解码方式对所述第二码率编码码流进行解码处理以获得第一数据;将所述第四数据的后n个样点数据与所述第一数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据所述第四数据除所述后n个样点数据外的其他数据和所述n个样点平滑数据获得所述目标音频帧。
139.在一种可能的实现方式中,当所述解码方式为第二码率解码向第一码率解码切换解码方式,并且第一码率编码处理的帧长和第二码率编码处理的帧长相同,且所述第一码率编码处理的编解码的总时延与所述第二码率编码处理的编解码的总时延相同时,所述解码模块,具体用于根据所述第二码率解码方式对所述第二码率编码码流进行解码处理以获得第一数据;根据所述第一码率解码方式对所述第一码率编码码流进行解码处理以获得第二数据;将所述第一数据的后n个样点数据与所述第二数据的前n个样点数据进行加权平均以获得n个样点平滑数据,n为第二设定值;根据所述第一数据除所述后n个样点数据外的其他数据和所述n个样点平滑数据获得所述目标音频帧。
140.在一种可能的实现方式中,当所述解码方式为第二码率解码向第一码率解码切换解码方式,并且第一码率解码处理的帧长大于第二码率解码处理的帧长时,所述解码模块,具体用于当所述上一帧音频帧的解码方式不是所述第二码率解码向第一码率解码切换解码方式时,根据所述第二码率解码方式对所述第二码率编码码流进行解码处理以获得第一数据;将所述第二码率解码处理对应的第一数据队列从队头溢出m个样点数据,按照先入先出fifo方式将所述第一数据放入所述第一数据队列,m与所述第一码率解码处理的帧长相关联;从所述第一数据队列的队头提取m个样点数据以获得第三数据;根据所述第一码率解码方式对所述第一码率编码码流进行解码处理以获得第二数据;将所述第三数据的后n个样点数据与所述第二数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据所述第三数据除所述后n个样点数据外的其他数据和所述n个样点平滑数据获得所述目标音频帧;或者,当所述上一帧音频帧的解码方式是所述第二码率解码向第一码率解码切换解码方式时,将所述第一数据队列从队头溢出m个样点数据;从所述第一数据队列的队头提取m个样点数据以获得第三数据;根据所述第一码率解码方式对所述第一码率编码码流进行解码处理以获得第二数据;将所述第三数据的后n个样点数据与所述第二数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据所述第三数据除所述后n个样点数据外的其他数据和所述n个样点平滑数据获得所述目标音频帧。
141.在一种可能的实现方式中,当所述解码方式为第二码率解码向第一码率解码切换解码方式,并且第一码率解码处理的帧长小于第二码率解码处理的帧长时,所述解码模块,具体用于当上一帧音频帧的解码方式不是所述第二码率解码向第一码率解码切换解码方式时,将所述第一码率解码处理对应的第二数据队列置为全0,所述第二数据队列遵循先入先出的原则;根据所述第二码率解码方式对所述第二码率编码码流进行解码处理以获得第一数据;根据所述第一码率解码方式对所述第一码率编码码流进行解码处理以获得第二数据;将所述第二数据队列从队头溢出m个样点数据,并将所述第二数据放入所述第二数据队列的队尾,m与所述第二码率解码处理的帧长相关联;从所述第二数据队列的队头提取m个样点数据以获得第四数据;将所述第一数据的后n个样点数据与所述第四数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据所述第一数据除所述后n个样点数据外的其他数据和所述n个样点平滑数据获得所述目标音频帧。
142.在一种可能的实现方式中,所述解码模块,具体用于判断所述第一码率解码处理是否支持所述第一码率编码码流对应的采样率;若所述第一码率解码处理支持所述采样率,则对所述第一码率编码码流进行所述第一码率解码处理;或者,若所述第一码率解码处理不支持所述采样率,则对所述第一码率编码码流进行所述第一码率解码处理以获得第五数据,对所述第五数据进行上采样或下采样处理。
143.在一种可能的实现方式中,所述解码模块,具体用于判断所述第二码率解码处理是否支持所述第二码率编码码流对应的采样率;若所述第二码率解码处理支持所述采样率,则对所述第二码率编码码流进行所述第二码率解码处理;或者,若所述第二码率解码处理不支持所述采样率,则对所述第二码率编码码流进行所述第二码率解码处理以获得第六数据,对所述第六数据进行上采样或下采样处理。
144.第四方面,本技术提供一种音频编码设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述第一方面中由音频发送设备执行的任一项所述的方法。
145.第五方面,本技术提供一种音频解码设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述第一方面中由音频接收设备执行的任一项所述的方法。
146.第六方面,本技术提供一种计算机可读存储介质,包括计算机程序,所述计算机程序在计算机上被执行时,使得所述计算机执行上述第一方面中任一项所述的方法。
147.第七方面,本技术提供一种计算机可读存储介质,包括根据如上述第一方面中由音频发送设备执行的任一项所述的音频编码方法获得的码流信息。
148.第八方面,本技术提供一种计算机可读存储介质,包括根据如上述第一方面中由音频接收设备执行的任一项所述的音频解码方法获得的音频帧。
附图说明
149.图1为本技术音频播放系统的一个示例性的结构图;
150.图2为本技术音频译码系统10的一个示例性的结构框图;
151.图3是本技术音频编解码方法的一个示例性的流程图;
152.图4为本技术码流信息的一个示例性的格式图;
153.图5a为本技术数据平滑处理的一个示例性的示意图;
154.图5b为本技术数据平滑处理的一个示例性的示意图;
155.图6为本技术数据队列的一个示例性的示意图;
156.图7为本技术音频帧的编解码处理的一个示例性的示意图;
157.图8为本技术音频编码装置实施例的结构示意图;
158.图9为本技术音频解码装置实施例的结构示意图。
具体实施方式
159.为使本技术的目的、技术方案和优点更加清楚,下面将结合本技术中的附图,对本技术中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳
动前提下所获得的所有其他实施例,都属于本技术保护的范围。
160.本技术的说明书实施例和权利要求书及附图中的术语“第一”、“第二”等仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
161.应当理解,在本技术中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
162.本技术涉及到的相关名词解释:
163.音频帧:音频数据是流式的,在实际应用中,为了便于音频处理和传输,通常取一时长内的音频数据量作为一帧音频,该时长被称为“采样时间”,可以根据编解码器和具体应用的需求确定其值,例如该时长为2.0ms~60ms,ms为毫秒。
164.图1为本技术音频播放系统的一个示例性的结构图,如图1所示,该音频播放系统包括:音频发送设备和音频接收设备,其中,音频发送设备包括例如手机、电脑(笔记本电脑、台式电脑等)、平板(手持平板、车载平板等)等可以进行音频编码并发送音频码流的设备;音频接收设备包括例如tws耳机、普通无线耳机、音响、智能手表、智能眼镜等可以接收音频码流、解码音频码流并播放的设备。
165.音频发送设备和音频接收设备之间可以建立蓝牙连接,二者之间可以支持语音和音乐的传输。音频发送设备和音频接收设备的较为广泛的示例是手机与tws耳机、无线头戴式耳机或者无线颈圈式耳机之间,或者手机与其他终端设备(例如智能音箱、智能手表、智能眼镜和车载音箱等)之间。可选的,音频发送设备和音频接收设备的示例也可以是平板、笔记本电脑或者台式电脑与tws耳机、无线头戴式耳机、无线颈圈式耳机或其他终端设备(例如智能音箱、智能手表、智能眼镜和车载音箱)之间。
166.需要说明的是,音频发送设备和音频接收设备之间除蓝牙连接外,还可以通过其他通信方式连接,例如wifi连接、有线连接或其他无线连接等,本技术对此不做具体限定。
167.图2为本技术音频译码系统10的一个示例性的结构框图,如图2所示,音频译码系统10可包括源设备12和目的设备14,源设备12可以是图1的音频发送设备,目的设备14可以是图1的音频接收设备。源设备12产生经编码的码流信息,因此,源设备12可被称为音频编码装置。目的设备14可对由源设备12所产生的经编码的码流信息进行解码,因此,目的设备14可被称为音频解码装置。
168.源设备12包括编码器20,可选地,可包括输入接口16、音频预处理器18、通信接口22。
169.输入接口16用于输入音频脉冲编码调制(pulse code modulation,pcm)数据和设定码率。其中,音频pcm数据可以分为语音类型或音乐类型,设定码率可以由用户预先设定。
170.音频预处理器18用于根据输入接口16输入的设定码率确定编码方式。即基于期望目的:设定码率小于阈值时,使用低码率编码处理对音频帧进行编码,设定码率大于阈值时,使用高码率编码处理对音频帧进行编码。因此音频帧的最终编码方式取决于当前帧的设定码率和上一帧的最终编码方式。
171.编码器20用于根据音频预处理器18确定出的编码方式对音频帧进行编码得到码流信息。
172.源设备12中的通信接口22可用于接收码流信息并通过通信信道13向目的设备14发送该码流。
173.目的设备14包括解码器30,可选地,可包括通信接口28、音频后处理器32和播放设备34。
174.目的设备14中的通信接口28用于直接从源设备12接收码流,并将码流提供给解码器30。
175.通信接口22和通信接口28可用于通过源设备12与目的设备14之间的通信链路,例如蓝牙连接等,发送或接收码流。
176.例如,通信接口22可用于将码流封装为报文等合适的格式,和/或使用蓝牙的传输编码或处理来处理码流,以便在通信链路上进行传输。
177.通信接口28与通信接口22对应,例如,可用于接收码流,并使用对应传输解码或处理和/或解封装,得到码流。
178.通信接口22和通信接口28均可配置为如图2中从源设备12指向目的设备14的对应通信信道13的箭头所指示的单向通信接口,或双向通信接口,并且可用于发送和接收消息等,以建立连接,确认并交换与通信链路和/或编码音频数据等数据传输相关的任何其它信息,等等。
179.解码器30用于接收码流信息,并根据码流信息中的解码方式对码流信息中的码流解码得到音频数据。
180.音频后处理器32用于对解码的音频数据进行后处理,得到后处理后的音频数据。音频后处理器32执行的后处理可以包括例如修剪或重采样等。
181.播放设备34用于接收后处理后的音频数据,以向用户或收听者播放音频。播放设备34可以为或包括任意类型的用于播放重建后音频的播放器,例如,集成或外部扬声器。例如,扬声器可包括喇叭、音响等。
182.基于上述实施例的描述,本技术提供了一种音频编解码方法。
183.图3是本技术音频编解码方法的一个示例性的流程图。该过程300可由音频播放系统中的音频发送设备和音频接收设备执行,即由音频发送设备实现音频编码,然后将码流信息发送给音频接收设备,由音频接收设备对码流信息进行解码以获得目标音频帧。过程300描述为一系列的步骤或操作,应当理解的是,过程300可以以各种顺序执行和/或同时发生,不限于图3所示的执行顺序。如图3所示,该方法包括:
184.步骤301、音频发送设备获得待编码的当前音频帧的设定码率和上一帧音频帧的最终编码方式。
185.音频帧可以是音频发送设备发送给音频接收设备的音频中的任意一帧。本技术中每次编码的对象可以是音频中的一帧音频帧,即本技术提供的音频编码方法是针对一帧音
频帧的,下文确定编码方式的方法适用于音频中的每一帧音频帧。因此为了区分,将音频发送设备正在进行编码的音频帧称为音频帧或者当前音频帧,将音频发送设备仅先于音频帧编码的音频帧称为上一帧音频帧。可选的,音频帧可以以pcm数据的形式表示。
186.设定码率可以是用户根据当前的信道状态预先设定的目标编码码率。该设定码率例如可以是192kbps、256kbps、400kbps或者600kbps。
187.最终编码方式是指音频发送设备对音频帧进行编码时实际采用的编码方式,可以包括第一码率编码方式、第二码率编码方式、第一码率编码向第二码率编码切换编码方式或者第二码率编码向第一码率编码切换编码方式,其中,第一码率低于第二码率,例如第一码率可以是64kbps,128kbps,192kbps,256kbps,400kbps,或600kbps等等,第二码率可以是128kbps,192kbps,256kbps,400kbps,或600kbps等等;需要说明的是,本发明实施例中并不限定第一码率和第二码率的具体数值,只要满足第一码率低于第二码率即可。下文中也可以将第一码率称作低码率,将第二码率称作高码率。
188.步骤302、音频发送设备根据设定码率和上一帧音频帧的最终编码方式确定当前音频帧的最终编码方式。
189.本技术中涉及两种编码处理,即低码率编码处理和高码率编码处理,其中,低码率编码处理例如可以包括aac、下一代蓝牙默认的lc3等,高码率编码处理例如可以包括lhdc、lc3plus等。
190.表1
[0191][0192]
表1示例性的示出了在低码率编码处理的帧长和高码率编码处理的帧长相同,且低码率编码处理的编解码的总时延与高码率编码处理的编解码的总时延相同的情况下,音频发送设备根据设定码率和上一帧音频帧的最终编码方式确定出的当前音频帧的最终编码方式。表1中a表示低码率编码方式,b表示高码率编码方式,a

b表示低码率编码向高码率编码切换编码方式,b

a表示高码率编码向低码率编码切换编码方式。因此可以通过以下方法确定当前音频帧的最终编码方式:
[0193]
当设定码率小于设定阈值,且上一帧音频帧的最终编码方式为低码率编码方式时,确定当前音频帧的最终编码方式为低码率编码方式;或者,
[0194]
当设定码率小于设定阈值,且上一帧音频帧的最终编码方式为高码率编码方式时,确定当前音频帧的最终编码方式为高码率编码向低码率编码切换编码方式;或者,
[0195]
当设定码率小于设定阈值,且上一帧音频帧的最终编码方式为低码率编码向高码率编码切换编码方式时,确定当前音频帧的最终编码方式为高码率编码向低码率编码切换编码方式;或者,
[0196]
当设定码率小于设定阈值,且上一帧音频帧的最终编码方式为高码率编码向低码
率编码切换编码方式时,确定当前音频帧的最终编码方式为低码率编码方式;或者,
[0197]
当设定码率大于设定阈值,且上一帧音频帧的最终编码方式为低码率编码方式时,确定当前音频帧的最终编码方式为低码率编码向高码率编码切换编码方式;或者,
[0198]
当设定码率大于设定阈值,且上一帧音频帧的最终编码方式为高码率编码方式时,确定当前音频帧的最终编码方式为高码率编码方式;或者,
[0199]
当设定码率大于设定阈值,且上一帧音频帧的最终编码方式为低码率编码向高码率编码切换编码方式时,确定当前音频帧的最终编码方式为高码率编码方式;或者,
[0200]
当设定码率大于设定阈值,且上一帧音频帧的最终编码方式为高码率编码向低码率编码切换编码方式时,确定当前音频帧的最终编码方式为低码率编码向高码率编码切换编码方式。
[0201]
上述设定阈值的取值与音频帧的声道数相关联。例如,音频帧的声道数为单声道时,设定阈值可以是150kbps,音频帧的声道数为双声道时,设定阈值可以是300kbps。
[0202]
表2
[0203][0204]
表2示例性的示出了在低码率编码处理的帧长和高码率编码处理的帧长不相同的情况下,音频发送设备根据设定码率和上一帧音频帧的最终编码方式确定出的当前音频帧的最终编码方式。表2中a表示低码率编码方式,b表示高码率编码方式,a

b表示低码率编码向高码率编码切换编码方式,b

a表示高码率编码向低码率编码切换编码方式。
[0205]
在表2所示的情况下,增加切换帧,即无论上一帧音频帧采用a或者b的编码方式,只要接下来的音频帧确定是采用a

b或者b

a的编码方式,那么从该帧开始连续d个音频帧均直接被确定为是切换帧,d的取值可以采用以下方法获得:
[0206]
(1)a

b的切换帧的个数
[0207]
d=取整((max(低码率的编解码的总时延,高码率的编解码的总时延)+低码率向高码率交叠长度+处理帧长-1)/处理帧长)
[0208]
(2)b

a的切换帧的个数
[0209]
d=取整((max(低码率的编解码的总时延,高码率的编解码的总时延)+高码率向低码率交叠长度+处理帧长-1)/处理帧长)
[0210]
其中,处理帧长=max(低码率编码处理的帧长,高码率编码处理的帧长),低码率向高码率交叠长度=处理帧长

低码率的编解码的总时延%处理帧长,高码率向低码率交
叠长度=处理帧长

高码率的编解码的总时延%处理帧长,%表示取余操作。
[0211]
因此可以通过以下方法确定当前音频帧的最终编码方式:
[0212]
当设定码率小于设定阈值,且上一帧音频帧的最终编码方式为低码率编码方式时,确定当前音频帧的最终编码方式为低码率编码方式;或者,
[0213]
当设定码率小于设定阈值,且上一帧音频帧的最终编码方式为高码率编码方式时,确定当前音频帧的最终编码方式为高码率编码向低码率编码切换编码方式,且启动第一计数器,第一计数器的初始值为第一设定值,第一计数器在值为0时终止。启动第一计数器的目的在于统计切换帧的处理情况,在处理第一个切换帧时启动该第一计数器,并且将第一计数器的初始值设定为计算获得的切换帧的个数(第一设定值)。每处理完一个切换帧,就将第一计数器减1,当第一计数器的值为0时表示切换帧已经全部编码完成,此时将第一计数器终止。第一计数器的值为第一设定值时表示当前处理的是第一个切换帧,第一计数器的值为1时表示当前处理的是最后一个切换帧,第一计数器的值小于第一设定值且大于1时表示当前处理的是中间的切换帧;或者,
[0214]
当设定码率大于设定阈值,且上一帧音频帧的最终编码方式为高码率编码方式时,确定当前音频帧的最终编码方式为高码率编码方式;或者,
[0215]
当设定码率大于设定阈值,且上一帧音频帧的最终编码方式为低码率编码方式时,确定当前音频帧的最终编码方式为低码率编码向高码率编码切换编码方式,且启动第二计数器,第二计数器的初始值为第一设定值,第二计数器在值为0时终止。同样的,启动第二计数器的目的在于统计切换帧的处理情况,在处理第一个切换帧时启动该第二计数器,并且将第二计数器的初始值设定为计算获得的切换帧的个数(第一设定值)。每处理完一个切换帧,就将第二计数器减1,当第二计数器的值为0时表示切换帧已经全部编码完成,此时将第二计数器终止。第二计数器的值为第一设定值时表示当前处理的是第一个切换帧,第二计数器的值为1时表示当前处理的是最后一个切换帧,第二计数器的值小于第一设定值且大于1时表示当前处理的是中间的切换帧;或者,
[0216]
当上一帧音频帧的最终编码方式为高码率编码向低码率编码切换编码方式,且第一计数器处于启动状态(亦即第一计数器的值大于0)时,将第一计数器的值减1;若第一计数器仍处于启动状态,则确定当前音频帧的最终编码方式为高码率编码向低码率编码切换编码方式;或者,若第一计数器终止(亦即第一计数器的值为0),则确定当前音频帧的最终编码方式为低码率编码方式;或者,
[0217]
当上一帧音频帧的最终编码方式为低码率编码向高码率编码切换编码方式,且第二计数器处于启动状态(亦即第二计数器的值大于0)时,将第二计数器的值减1;若第二计数器仍处于启动状态,则确定当前音频帧的最终编码方式为低码率编码向高码率编码切换编码方式;或者,若第二计数器终止(亦即第二计数器的值为0),则确定当前音频帧的最终编码方式为高码率编码方式;
[0218]
同样的,上述设定阈值的取值与音频帧的声道数相关联。例如,音频帧的声道数为单声道时,设定阈值可以是165kbps,音频帧的声道数为双声道时,设定阈值可以是330kbps。
[0219]
上述第一设定值即为切换帧的个数d。
[0220]
步骤303、音频发送设备根据当前音频帧的最终编码方式对当前音频帧进行编码。
[0221]
根据步骤302中确定的当前音频帧的最终编码方式,音频发送设备对当前音频帧进行编码,因此可以有以下几种情况:
[0222]
1、低码率编码处理的帧长和高码率编码处理的帧长相同,且低码率编码处理的编解码的总时延与高码率编码处理的编解码的总时延相同
[0223]
(1)当前音频帧的最终编码方式为低码率编码方式
[0224]
音频发送设备对当前音频帧进行低码率编码处理。
[0225]
在一种可能的实现方式中,音频发送设备可以先判断低码率编码处理是否支持当前音频帧的采样率,当低码率编码处理支持当前音频帧的采样率时,可以直接对当前音频帧进行低码率编码处理;或者,当低码率编码处理不支持当前音频帧的采样率时,可以先对当前音频帧进行下采样或上采样处理,然后再对下采样或上采样后的当前音频帧进行低码率编码处理。例如,低码率编码处理不支持88.2khz和96khz的采样率,音频发送设备可以采用qmf进行下采样处理,将88.2khz对应的频带(0~44.1khz)分成两个子带0~22.05khz和22.05~44.1khz,选取低子带0~22.05khz进行低码率编码处理;将96khz对应的频带(0~48khz)分成两个子带0~24khz和24~48khz,选取低子带0~24khz进行低码率编码处理。
[0226]
(2)当前音频帧的最终编码方式为高码率编码方式
[0227]
音频发送设备对当前音频帧进行高码率编码处理。
[0228]
在一种可能的实现方式中,音频发送设备可以先判断高码率编码处理是否支持当前音频帧的采样率,当高码率编码处理支持当前音频帧的采样率时,可以直接对当前音频帧进行高码率编码处理;或者,当高码率编码处理不支持当前音频帧的采样率时,可以先对当前音频帧进行下采样或上采样处理,然后再对下采样或上采样后的当前音频帧进行高码率编码处理。
[0229]
(3)当前音频帧的最终编码方式为低码率编码向高码率编码切换编码方式或者高码率编码向低码率编码切换编码方式
[0230]
音频发送设备可以对当前音频帧进行低码率编码处理和高码率编码处理。同样的,音频发送设备可以参照上述描述先判断高低码率两种编码处理是否支持当前音频帧的采样率,此处不再赘述。
[0231]
2、低码率编码处理和高码率编码处理各自的帧长不相同,或者低码率编码处理和高码率编码处理各自的帧长相同且编解码的总时延不相同
[0232]
(1)当前音频帧的最终编码方式为低码率编码方式
[0233]
音频发送设备可以先判断低码率编码处理是否支持当前音频帧的采样率,当低码率编码处理支持当前音频帧的采样率时,可以直接对当前音频帧进行低码率编码处理;或者,当低码率编码处理不支持当前音频帧的采样率时,可以先对当前音频帧进行下采样或上采样处理,然后再对下采样或上采样后的当前音频帧进行低码率编码处理。
[0234]
(2)当前音频帧的最终编码方式为高码率编码方式
[0235]
音频发送设备可以先判断高码率编码处理是否支持当前音频帧的采样率,当高码率编码处理支持当前音频帧的采样率时,可以直接对当前音频帧进行高码率编码处理;或者,当高码率编码处理不支持当前音频帧的采样率时,可以先对当前音频帧进行下采样或上采样处理,然后再对下采样或上采样后的当前音频帧进行高码率编码处理。
[0236]
(3)当前音频帧的最终编码方式为低码率编码向高码率编码切换编码方式
[0237]
a、低码率编码处理的帧长大于高码率编码处理的帧长
[0238]
如上所述,第二计数器的作用是统计切换帧的处理情况,第二计数器处于启动状态表示当前处理的仍然是切换帧,此时当第二计数器的值大于1(表示当前处理的仍然是切换帧且不是切换帧中的最后一帧)时,对当前音频帧进行低码率编码处理;对当前音频帧进行高码率编码处理。或者,当第二计数器的值等于1(表示当前处理的是切换帧中的最后一帧)时,对当前音频帧进行高码率编码处理。
[0239]
音频发送设备可以参照上述描述先判断高低码率两种编码处理是否支持当前音频帧的采样率,此处不再赘述。
[0240]
b、低码率编码处理的帧长小于高码率编码处理的帧长
[0241]
如上所述,第二计数器的作用是统计切换帧的处理情况,第二计数器处于启动状态表示当前处理的仍然是切换帧,此时第二计数器的值等于第一设定值(表示当前处理的是切换帧中的第一帧)时,对当前音频帧进行低码率编码处理;对当前音频帧进行高码率编码处理。或者,当第二计数器的值小于第一设定值(表示当前处理的仍然是切换帧且不是切换帧中的第一帧)时,对当前音频帧进行高码率编码处理。
[0242]
音频发送设备可以参照上述描述先判断高低码率两种编码处理是否支持当前音频帧的采样率,此处不再赘述。
[0243]
(4)当前音频帧的最终编码方式为高码率编码向低码率编码切换编码方式
[0244]
a、低码率编码处理的帧长大于高码率编码处理的帧长
[0245]
如上所述,第一计数器的作用是统计切换帧的处理情况,第一计数器处于启动状态表示当前处理的仍然是切换帧,此时当第一计数器的值等于第一设定值(表示当前处理的是切换帧中的第一帧)时,对当前音频帧进行低码率编码处理;对当前音频帧进行高码率编码处理。或者,当第一计数器的值小于第一设定值(表示当前处理的仍然是切换帧且不是切换帧中的第一帧)时,对当前音频帧进行低码率编码处理。
[0246]
音频发送设备可以参照上述描述先判断高低码率两种编码处理是否支持当前音频帧的采样率,此处不再赘述。
[0247]
b、低码率编码处理的帧长小于高码率编码处理的帧长
[0248]
如上所述,第一计数器的作用是统计切换帧的处理情况,第一计数器处于启动状态表示当前处理的仍然是切换帧,此时当第一计数器的值大于1(表示当前处理的仍然是切换帧且不是切换帧中的最后一帧)时,对当前音频帧进行低码率编码处理;对当前音频帧进行高码率编码处理。或者,当第一计数器的值等于1(表示当前处理的是切换帧中的最后一帧)时,对当前音频帧进行低码率编码处理。
[0249]
音频发送设备可以参照上述描述先判断高低码率两种编码处理是否支持当前音频帧的采样率,此处不再赘述。
[0250]
在一种可能的实现方式中,音频发送设备可以根据上一帧音频帧的设定码率和当前音频帧的设定码率确定低码率编码处理对应的第一码率和高码率编码处理对应的第二码率,第一码率和第二码率之和为设定码率。
[0251]
(1)当前音频帧的最终编码方式为高码率编码向低码率编码切换编码方式,可以有:
[0252]
a、如果上一帧音频帧的设定码率brp满足:双声道:600kbps<brp≤990kbps,单声
道:300kbps<brp≤495kbps,当前音频帧的设定码率brf满足:双声道:brf<300kbps,单声道:brf<150kbps,那么当前音频帧的码率分配为:第一码率为brf,第二码率为为brp-brf。
[0253]
b、如果上一帧音频帧的设定码率brp满足:双声道:364kbps<brp≤600kbps,单声道:182kbps<brp≤300kbps,当前音频帧的设定码率brf满足:双声道:brf<300kbps,单声道:brf<150kbps,那么当前音频帧的码率分配为:第一码率为双声道是brp-300kbps,第一码率为单声道是brp-150kbps,第二码率为双声道是300kbps,第二码率为单声道是150kbps。
[0254]
c、如果上一帧音频帧的设定码率brp满足:双声道:300kbps≤brp≤364kbps,单声道:150kbps≤brp≤182kbps,当前音频帧的设定码率brf满足:双声道:brf<300kbps,单声道:brf<150kbps,那么当前音频帧的码率分配为:第一码率为双声道是64kbps,第一码率为单声道是32kbps,第二码率为双声道是300kbps,第二码率为单声道是150kbps。
[0255]
(2)当前音频帧的最终编码方式为低码率编码向高码率编码切换编码方式,可以有:
[0256]
a、如果上一帧音频帧的设定码率brp满足:双声道:64kbps≤brp<300kbps,单声道:32kbps≤brp<150kbps,当前音频帧的设定码率brf满足:双声道:600kbps<brf≤990kbps,单声道:300kbps<brf≤495kbps,那么当前音频帧的码率分配为:第一码率为brp第二码率为brf-brp。
[0257]
b、如果上一帧音频帧的设定码率brp满足:双声道:364kbps<brf≤600kbps,单声道:182kbps<brf≤300kbps,那么当前音频帧的码率分配为:第一码率为双声道是brf-300kbps,第一码率为单声道是brf-150kbps,第二码率为双声道是300kbps,第二码率为单声道是150kbps。
[0258]
c、如果上一帧音频帧的设定码率brp满足:双声道:300kbps≤brf≤364kbps,单声道:150kbps≤brf≤182kbps,那么当前音频帧的码率分配为:第一码率为双声道是64kbps,第一码率为单声道是32kbps,第二码率为双声道是300kbps,第二码率为单声道是150kbps。
[0259]
d、如果上一帧音频帧的设定码率brp满足:双声道:600kbps<brp≤990kbps,单声道:300kbps<brp≤495kbps,当前音频帧的设定码率brf满足:双声道:600kbps<brf≤990kbps,单声道:300kbps<brf≤495kbps,那么当前音频帧的码率分配为:第一码率和第二码率与上一帧音频帧的分配情况一致。
[0260]
e、如果上一帧音频帧的设定码率brp满足:双声道:364kbps≤brp≤600kbps,单声道:182kbps≤brp≤300kbps,当前音频帧的设定码率brf满足:双声道:600kbps<brf≤990kbps,单声道:300kbps<brf≤495kbps,那么当前音频帧的码率分配为:第一码率为双声道是299kbps,第一码率为单声道是149kbps,第二码率为双声道是brf-299kbps,第二码率为单声道是brf-149kbps。
[0261]
编码后的当前音频帧对应的码流信息包括包头信息、低码率编码码流和/或高码率编码码流,其中,包头信息包括当前音频帧的最终编码方式、采样率、声道数、帧长和低码率编码码流的长度。如果音频发送设备对当前音频帧只进行低码率编码处理,那么码流信息中只包含低码率编码码流;如果音频发送设备对当前音频帧只进行高码率编码处理,那么码流信息中只包含高码率编码码流;如果音频发送设备对当前音频帧进行低码率编码处理和高码率编码处理,那么码流信息中包含低码率编码码流和高码率编码码流。图4为本申
请码流信息的一个示例性的格式图,如图4所示,码流信息中包含包头信息、低码率编码码流和高码率编码码流,其中包头信息包含最终编码方式(2bit)、采样率(2bit)、声道数(1bit)、帧长(1bit)、低码率编码码流的长度(10bit),可见包头信息的长度为2字节。如果码流信息中有低码率编码码流,那么低码率编码码流的长度为低码率编码码流的实际长度,并且低码率编码码流中写入实际数据;如果码流信息中没有低码率编码码流,那么低码率编码码流的长度为0,并且低码率编码码流为空,或默认数据;如果码流信息中有高码率编码码流,那么高码率编码码流中写入实际数据;如果码流信息中没有高码率编码码流,那么高码率编码码流为空,或默认数据。
[0262]
步骤304、音频发送设备将码流信息发送给音频接收设备。
[0263]
音频发送设备可以通过蓝牙连接等通信方式将码流信息发送给音频接收设备。
[0264]
步骤305、音频接收设备解析码流信息以获得解码方式和编码码流。
[0265]
编码码流包括低码率编码码流和/或高码率编码码流,解码方式包括低码率解码方式、高码率解码方式、低码率解码向高码率解码切换解码方式或者高码率解码向低码率解码切换解码方式。如图4所示,编码码流的实际内容与音频发送设备对音频帧的最终编码方式相关联,因此音频接收设备在解析码流信息后,可以得到两个信息,一个是需要采用的解码方式,另一个是编码码流的内容。当解码方式为低码率解码方式时,编码码流只包含低码率编码码流;当解码方式为高码率解码方式时,编码码流只包含高码率编码码流;当解码方式为低码率解码向高码率解码切换解码方式或者高码率解码向低码率解码切换解码方式时,编码码流包含低码率编码码流和/或高码率编码码流。
[0266]
步骤306、音频接收设备根据解码方式对编码码流进行解码以获得目标音频帧。
[0267]
与编码端相对应,音频发送设备采用哪种编码方式对音频帧进行编码处理,在解码端就需要采用对应的解码方式对编码码流进行解码处理。因此有以下几种解码处理方式:
[0268]
1、低码率编码处理的帧长和高码率编码处理的帧长相同,且低码率编码处理的编解码的总时延与高码率编码处理的编解码的总时延相同
[0269]
(1)解码方式为低码率解码方式
[0270]
音频接收设备对低码率编码码流进行低码率解码处理。
[0271]
在一种可能的实现方式中,音频接收设备可以先判断低码率解码处理是否支持低码率编码码流对应的采样率,当低码率解码处理支持该采样率时,可以直接对低码率编码码流进行低码率解码处理;或者,当低码率解码处理不支持该采样率时,可以先对低码率编码码流进行低码率解码处理,然后对解码后的数据进行上采样或下采样处理以获得目标音频帧。需要说明的是,编码端和解码端所执行的上采样或下采样处理时相对应的,即编码端如果采用了下采样处理,那么解码端可以采用上采样处理;编码端如果采用了上采样处理,那么解码端可以采用下采样处理。例如,上述描述中在编码端,音频发送设备对音频帧进行下采样处理后取低子带进行编码处理,相应的,在解码端,音频接收设备对低码率编码码流解码后,由于缺少高子带部分的数据,因此通过补0的方式上采样获得目标音频帧。
[0272]
(2)解码方式为高码率解码方式
[0273]
音频接收设备对高码率编码码流进行高码率解码处理。
[0274]
在一种可能的实现方式中,音频接收设备可以先判断高码率解码处理是否支持高
码率编码码流对应的采样率,当高码率解码处理支持该采样率时,可以直接对高码率编码码流进行高码率解码处理;或者,当高码率解码处理不支持该采样率时,可以先对高码率编码码流进行高码率解码处理,然后对解码后的数据进行上采样或下采样处理以获得目标音频帧。
[0275]
(3)解码方式为低码率解码向高码率解码切换解码方式
[0276]
音频接收设备对低码率编码码流进行低码率解码处理以获得第二数据,并对高码率编码码流进行高码率解码处理以获得第一数据。得到第二数据和第一数据之后,音频接收设备可以对第二数据的后端数据和第一数据的前端数据进行平滑处理,以确保低高码率之间的平滑切换,平滑的数据长度为n个样点数据,即将第二数据的后n个样点数据与第一数据的前n个样点数据进行加权平均以获得n个样点平滑数据,根据第二数据除后n个样点数据外的其他数据和n个样点平滑数据获得目标音频帧。图5a为本技术数据平滑处理的一个示例性的示意图,如图5a所示,两条虚线之间的样点数据为需要进行平滑处理的n个样点数据,第二数据中的n个样点数据内的斜线表示第二数据的权重变化,第一数据中的n个样点数据内的斜线表示第一数据的权重变化。由于是低码率解码向高码率解码切换解码方式,因此低码率解码处理的第二数据在前,高码率解码处理的第一数据在后,并且目标音频帧的数据包含第二数据的前部分数据,以及平滑后的n个样点平滑数据。假设第二数据的后n个样点数据表示为ai,i=1,2,3

,n,第一数据的前n个样点数据表示为bi,i=1,2,3

,n,n个样点平滑数据表示为ci,i=1,2,3

,n,可以通过以下计算得到:
[0277][0278]
c1=a1
[0279]
cn=bn
[0280]
同样的,音频接收设备可以上述描述先判断高低码率两种解码处理是否支持采样率,此处不再赘述。
[0281]
(4)解码方式为高码率解码向低码率解码切换解码方式
[0282]
音频接收设备对高码率编码码流进行高码率解码处理以获得第一数据,并对低码率编码码流进行低码率解码处理以获得第二数据。得到第一数据和第二数据之后,音频接收设备可以对第一数据的后端数据和第二数据的前端数据进行平滑处理,以确保高低码率之间的平滑切换,平滑的数据长度为n个样点数据,即将第一数据的后n个样点数据与第二数据的前n个样点数据进行加权平均以获得n个样点平滑数据,根据第一数据除后n个样点数据外的其他数据和n个样点平滑数据获得目标音频帧。图5b为本技术数据平滑处理的一个示例性的示意图,如图5b所示,两条虚线之间的样点数据为需要进行平滑处理的n个样点数据,第一数据中的n个样点数据内的斜线表示第一数据的权重变化,第二数据中的n个样点数据内的斜线表示第二数据的权重变化。由于是高码率解码向低码率解码切换解码方式,因此高码率解码处理的第一数据在前,低码率解码处理的第二数据在后,并且目标音频帧的数据包含第一数据的前部分数据,以及平滑后的n个样点平滑数据。n个样点平滑数据的计算方法可以参照上述描述,此处不再赘述。
[0283]
同样的,音频接收设备可以上述描述先判断高低码率两种解码处理是否支持采样率,此处不再赘述。
[0284]
2、低码率编码处理和高码率编码处理各自的帧长不相同
[0285]
(1)解码方式为低码率解码方式
[0286]
a、低码率编码处理的帧长大于高码率编码处理的帧长
[0287]
音频接收设备对低码率编码码流进行低码率解码处理。
[0288]
在一种可能的实现方式中,音频接收设备可以先判断低码率解码处理是否支持低码率编码码流对应的采样率,当低码率解码处理支持该采样率时,可以直接对低码率编码码流进行低码率解码处理;或者,当低码率解码处理不支持该采样率时,可以先对低码率编码码流进行低码率解码处理,然后对解码后的数据进行上采样或下采样处理以获得目标音频帧。
[0289]
b、低码率编码处理的帧长小于高码率编码处理的帧长
[0290]
音频接收设备对低码率编码码流进行低码率解码处理以获得第二数据。由于低码率解码处理的帧长小于高码率解码处理的帧长,为了使低码率解码处理和高码率解码处理得到的音频帧对齐,音频接收设备可以在得到第二数据后,将低码率解码处理对应的第二数据队列从队头溢出m个样点数据,并将第二数据放入第二数据队列的队尾,然后从第二数据队列的队头提取m个样点数据以获得目标音频帧。该第二数据队列遵循先入先出的原则。m与高码率解码处理的帧长相关联,例如,m=处理帧长
×
声道数,处理帧长是高码率解码处理的帧长。图6为本技术数据队列的一个示例性的示意图,如图6所示,假设第二数据队列的长度为n+m,按照先入先出的原则,从队头溢出m个样点数据,这样第二数据队列的队尾空出m个数据的位置,然后将第二数据放入第二数据队列的队尾,然后从第二数据队列的队头提取m个样点数据即为目标音频帧。例如,高码率解码处理对应的帧长大于低码率解码处理对应的帧长,且前者是后者的四倍,高码率解码处理对应的第一数据队列的长度a=帧长
×
声道数,低码率解码处理对应的第二数据队列的长度b=帧长
×
声道数+(高码率的编解码的总时延-低码率的编解码的总时延)
×
声道数。
[0291]
同样的,音频接收设备可以上述描述先判断低码率解码处理是否支持采样率,此处不再赘述。
[0292]
(2)解码方式为高码率解码方式
[0293]
a、低码率编码处理的帧长大于高码率编码处理的帧长
[0294]
音频接收设备对高码率编码码流进行高码率解码处理以获得第一数据。由于低码率编码处理的帧长大于高码率编码处理的帧长,为了使低码率解码处理和高码率解码处理得到的音频帧对齐,音频接收设备可以在得到第一数据后,将高码率解码处理对应的第一数据队列从队头溢出m个样点数据,并将第一数据放入第一数据队列的队尾,然后从第一数据队列的队头提取m个样点数据以获得目标音频帧。该第一数据队列遵循先入先出的原则。m与低码率解码处理的帧长相关联。
[0295]
同样的,音频接收设备可以上述描述先判断高码率解码处理是否支持采样率,此处不再赘述。
[0296]
b、低码率编码处理的帧长小于高码率编码处理的帧长
[0297]
音频接收设备对高码率编码码流进行高码率解码处理。
[0298]
在一种可能的实现方式中,音频接收设备可以先判断高码率解码处理是否支持高码率编码码流对应的采样率,当高码率解码处理支持该采样率时,可以直接对高码率编码
码流进行高码率解码处理;或者,当高码率解码处理不支持该采样率时,可以先对高码率编码码流进行高码率解码处理,然后对解码后的数据进行上采样或下采样处理以获得目标音频帧。
[0299]
(3)解码方式为低码率解码向高码率解码切换解码方式
[0300]
a、低码率编码处理的帧长大于高码率编码处理的帧长
[0301]
当上一帧音频帧的解码方式不是低码率解码向高码率解码切换解码方式时,将高码率解码处理对应的第一数据队列置为全0,第一数据队列遵循先入先出的原则;对低码率编码码流进行低码率解码处理以获得第二数据;对高码率编码码流进行高码率解码处理以获得第一数据;将第一数据队列从队头溢出m个样点数据,并将第一数据放入第一数据队列的队尾,m与低码率解码处理的帧长相关联;从第一数据队列的队头提取m个样点数据以获得第三数据;将第二数据的后n个样点数据与第三数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据第二数据除后n个样点数据外的其他数据和n个样点平滑数据获得目标音频帧。
[0302]
音频发送设备可以参照上述描述先判断高低码率两种编码处理是否支持当前音频帧的采样率,此处不再赘述。
[0303]
b、低码率编码处理的帧长小于高码率编码处理的帧长
[0304]
当上一帧音频帧的解码方式不是低码率解码向高码率解码切换解码方式时,对低码率编码码流进行低码率解码处理以获得第二数据;将低码率解码处理对应的第二数据队列从队头溢出m个样点数据,并将第二数据放入第二数据队列的队尾,第二数据队列遵循先入先出的原则,m与高码率解码处理的帧长相关联;从第二数据队列的队头提取m个样点数据以获得第四数据;对高码率编码码流进行高码率解码处理以获得第一数据;将第四数据的后n个样点数据与第一数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据第四数据除后n个样点数据外的其他数据和n个样点平滑数据获得目标音频帧。或者,当上一帧音频帧的解码方式是低码率解码向高码率解码切换解码方式时,将第二数据队列从队头溢出m个样点数据;从第二数据队列的队头提取m个样点数据以获得第四数据;对高码率编码码流进行高码率解码处理以获得第一数据;将第四数据的后n个样点数据与第一数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据第四数据除后n个样点数据外的其他数据和n个样点平滑数据获得目标音频帧。
[0305]
音频发送设备可以参照上述描述先判断高低码率两种编码处理是否支持当前音频帧的采样率,此处不再赘述。
[0306]
(4)解码方式为高码率解码向低码率解码切换解码方式
[0307]
a、低码率编码处理的帧长大于高码率编码处理的帧长
[0308]
当上一帧音频帧的解码方式不是高码率解码向低码率解码切换解码方式时,对高码率编码码流进行高码率解码处理以获得第一数据;将高码率解码处理对应的第一数据队列从队头溢出m个样点数据,并将第一数据放入第一数据队列的队尾,第一数据队列遵循先入先出的原则,m与低码率解码处理的帧长相关联;从第一数据队列的队头提取m个样点数据以获得第三数据;对低码率编码码流进行低码率解码处理以获得第二数据;将第三数据的后n个样点数据与第二数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据第三数据除后n个样点数据外的其他数据和n个样点平滑数据获得目标音频帧。或者,当
上一帧音频帧的解码方式是高码率解码向低码率解码切换解码方式时,将第一数据队列从队头溢出m个样点数据;从第一数据队列的队头提取m个样点数据以获得第三数据;对低码率编码码流进行低码率解码处理以获得第二数据;将第三数据的后n个样点数据与第二数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据第三数据除后n个样点数据外的其他数据和n个样点平滑数据获得目标音频帧。
[0309]
音频发送设备可以参照上述描述先判断高低码率两种编码处理是否支持当前音频帧的采样率,此处不再赘述。
[0310]
b、低码率编码处理的帧长小于高码率编码处理的帧长
[0311]
当上一帧音频帧的解码方式不是高码率解码向低码率解码切换解码方式时,将低码率解码处理对应的第二数据队列置为全0,第二数据队列遵循先入先出的原则;对高码率编码码流进行高码率解码处理以获得第一数据;对低码率编码码流进行低码率解码处理以获得第二数据;将第二数据队列从队头溢出m个样点数据,并将第二数据放入第二数据队列的队尾,m与高码率解码处理的帧长相关联;从第二数据队列的队头提取m个样点数据以获得第四数据;将第一数据的后n个样点数据与第四数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据第一数据除后n个样点数据外的其他数据和n个样点平滑数据获得目标音频帧。
[0312]
音频发送设备可以参照上述描述先判断高低码率两种编码处理是否支持当前音频帧的采样率,此处不再赘述。
[0313]
本技术基于设定码率和上一帧音频帧的最终编码方式确定当前音频帧的最终编码方式,并且据此设定发生高低码率切换的音频帧上的低码率编码处理和高码率编码处理各自对应的码率,编码端将码流信息发送给解码端;解码端解析码流信息获取解码方式,进而对码流数据进行解码,尤其是在发生高低码率切换的音频帧上对高低码率解码后的数据进行平滑处理,以实现低码率编解码处理和高码率编解码处理的无缝融合,使得在符合蓝牙信道对数据传输大小限制的前提下,最大化保证音频的音质,提高蓝牙信道的抗干扰能力,带给用户更优化的音频体验。
[0314]
以下采用几个具体的实施例对本技术提供的音频编解码方法作进一步描述。
[0315]
实施例一
[0316]
低码率编解码处理支持64~300kbps,高码率编解码处理支持300~990kbps,二者支持的位深为16bit、24bit、32bit浮点或者32bit定点,均支持单声道和双声道的音频信号,低码率编解码处理支持的采样率包括44.1khz和48khz,不支持的采样率包括88.2khz和96khz。
[0317]
低码率编解码处理和高码率编解码处理的帧长一致,编解码的总时延一致,相邻音频帧之间存在部分交叠(overlap),因此采取并行融合策略,即当进行低码率编码处理和高码率编码处理切换时,两种编码处理同时运行,来保证音频流的连续。为了叙述方便,设定低码率编解码处理为a,高码率编解码处理为b。
[0318]
本实施例可以参照表1所示,确定当前音频帧的最终编码方式,此处不再赘述。而在a和b同时运行的音频帧,可以采用上述方法确定a和b的采样率,此处不再赘述。
[0319]
a和/或b的编码处理和解码处理可以参照图3所示实施例,此处不再赘述。
[0320]
其中,对于a不支持的采样率88.2khz和96khz,编码端可以采用qmf进行下采样处
理,将88.2khz对应的频带(0~44.1khz)分成两个子带0~22.05khz和22.05~44.1khz,选取低子带0~22.05khz进行低码率编码处理;将96khz对应的频带(0~48khz)分成两个子带0~24khz和24~48khz,选取低子带0~24khz进行低码率编码处理。解码端可以采用qmf将解码后的数据的高子带(88.2khz中的高子带为22.05khz-44.1khz,96khz中的高子带为24khz-48khz)补0实现上采样处理,使得上采样后的数据符合原始音频的采样率。
[0321]
实施例二
[0322]
低码率编解码处理支持64~300kbps,高码率编解码处理支持300~990kbps,二者支持的位深为16bit、24bit、32bit浮点或者32bit定点,均支持单声道和双声道的音频信号,低码率编解码处理和高码率编解码处理均支持的采样率包括44.1khz、48khz、88.2khz和96khz。
[0323]
为了叙述方便,设定低码率编解码处理为a,高码率编解码处理为b。低码率编解码处理和高码率编解码处理的帧长不一致,例如,a的帧长为1024个样点数据,b的帧长为256个样点数据。a和b的编解码的总时延不一致,例如,a延迟2048个样点数据,b在采样率大于等于88.2khz时为11个样点数据的延迟,在采样率低于88.2khz时为5个样点数据的延迟。因此采取并行融合策略,即当进行低码率编码处理和高码率编码处理切换时,两种编码处理同时运行,来保证音频流的连续。
[0324]
本实施例可以参照表2所示,确定当前音频帧的最终编码方式,此处不再赘述。而在a和b同时运行的音频帧,可以采用上述方法确定a和b的采样率,此处不再赘述。
[0325]
图7为本技术音频帧的编解码处理的一个示例性的示意图,如图7所示,设定切换帧的个数为3,音频帧采用单声道,已确定帧序列中的各个音频帧的最终编码方式的顺序为(a)(a)(a)(a

b)(a

b)(a

b)(b)(b)(b)(b

a)(b

a)(b

a)(a)
[0326]
a处理一个音频帧(长度为1024个样点数据),b需要处理4个音频帧(长度为256个样点数据)拼成1024个样点数据。
[0327]
在编码端,按照上述顺序,a连续编码三个音频帧。接下来三个切换帧(a

b),其中,第一个切换帧,a和b同时运行,且b只编码该音频帧的后一半数据;第二个切换帧,a和b仍然同时运行,a编码的数据全部置为0,b对整帧数据编码;第三个切换帧,a停止运行,b对整帧数据编码。接下来b连续编码三个音频帧。接下来又是三个切换帧(b

a),其中,第一个切换帧,a和b同时运行,且b只编码该音频帧的前一半数据;第二个和第三个切换帧,a对整帧数据编码,b停止运行。接下来a编码一个音频帧。
[0328]
在解码端,按照上述顺序,a连续解码三个音频帧。接下来三个切换帧(a

b),其中,第一个切换帧,先将b对应的第一数据队列置为全0,该切换帧上a和b同时运行,b只解码该音频帧的后一半数据。将第一数据队列从队头溢出1024个样点数据,并将b解码得到的第一数据放入第一数据队列的队尾。从第一数据队列的队头提取1024个样点数据与a解码得到的第二数据进行平滑处理以获得音频帧;第二个切换帧和第三个切换帧,a和b仍然同时运行,均对整帧数据解码。在第二个切换帧和第三个切换帧上均将第一数据队列从队头溢出1024个样点数据,并将b解码得到的第一数据放入第一数据队列的队尾。从第一数据队列的队头提取1024个样点数据与a解码得到的第二数据进行平滑处理以获得音频帧。接下来b连续解码三个音频帧。接下来又是三个切换帧(b

a),其中,第一个切换帧,a和b同时运行,且b只解码该音频帧的前一半数据。将b对应的第一数据队列从队头溢出1024个样点数据,
并将b解码得到的第一数据放入第一数据队列的队尾。从第一数据队列的队头提取1024个样点数据与a解码得到的第二数据进行平滑处理以获得音频帧;第二个切换帧和第三个切换帧,a对整帧数据解码,b停止运行。在第二个切换帧和第三个切换帧上均将第一数据队列从队头溢出1024个样点数据。从第一数据队列的队头提取1024个样点数据与a解码得到的第二数据进行平滑处理以获得音频帧。接下来a解码一个音频帧。
[0329]
图8为本技术音频编码装置实施例的结构示意图,如图8所示,该装置可以应用于上述实施例中的音频发送设备。本实施例的编码装置可以包括:获得模块801、确定模块802和编码模块803。其中,
[0330]
获得模块801,用于获得待编码的当前音频帧的设定码率和上一帧音频帧的最终编码方式,所述最终编码方式包括第一码率编码方式、第二码率编码方式、第一码率编码向第二码率编码切换编码方式或者第二码率编码向第一码率编码切换编码方式,其中,第一码率低于第二码率;确定模块802,用于根据所述设定码率和所述上一帧音频帧的最终编码方式确定所述当前音频帧的最终编码方式;编码模块803,用于根据所述当前音频帧的最终编码方式对所述当前音频帧进行编码。
[0331]
在一种可能的实现方式中,当第一码率编码处理的帧长和第二码率编码处理的帧长相同,且所述第一码率编码处理的编解码的总时延与所述第二码率编码处理的编解码的总时延相同时,所述确定模块802,具体用于当所述设定码率小于设定阈值,且所述上一帧音频帧的最终编码方式为第一码率编码方式时,确定所述当前音频帧的最终编码方式为第一码率编码方式;或者,当所述设定码率小于设定阈值,且所述上一帧音频帧的最终编码方式为第二码率编码方式时,确定所述当前音频帧的最终编码方式为第二码率编码向第一码率编码切换编码方式;或者,当所述设定码率小于设定阈值,且所述上一帧音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式时,确定所述当前音频帧的最终编码方式为第二码率编码向第一码率编码切换编码方式;或者,当所述设定码率小于设定阈值,且所述上一帧音频帧的最终编码方式为第二码率编码向第一码率编码切换编码方式时,确定所述当前音频帧的最终编码方式为第一码率编码方式;或者,当所述设定码率大于设定阈值,且所述上一帧音频帧的最终编码方式为第一码率编码方式时,确定所述当前音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式;或者,当所述设定码率大于设定阈值,且所述上一帧音频帧的最终编码方式为第二码率编码方式时,确定所述当前音频帧的最终编码方式为第二码率编码方式;或者,当所述设定码率大于设定阈值,且所述上一帧音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式时,确定所述当前音频帧的最终编码方式为第二码率编码方式;或者,当所述设定码率大于设定阈值,且所述上一帧音频帧的最终编码方式为第二码率编码向第一码率编码切换编码方式时,确定所述当前音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式;其中,所述设定阈值的取值与音频帧的声道数相关联。
[0332]
在一种可能的实现方式中,当第一码率编码处理的帧长和第二码率编码处理的帧长不相同时,所述确定模块802,具体用于当所述设定码率小于设定阈值,且所述上一帧音频帧的最终编码方式为第一码率编码方式时,确定所述当前音频帧的最终编码方式为第一码率编码方式;或者,当所述设定码率小于设定阈值,且所述上一帧音频帧的最终编码方式为第二码率编码方式时,确定所述当前音频帧的最终编码方式为第二码率编码向第一码率
编码切换编码方式,且启动第一计数器,所述第一计数器的初始值为第一设定值,所述第一计数器在值为0时终止;或者,当所述设定码率大于设定阈值,且所述上一帧音频帧的最终编码方式为第二码率编码方式时,确定所述当前音频帧的最终编码方式为第二码率编码方式;或者,当所述设定码率大于设定阈值,且所述上一帧音频帧的最终编码方式为第一码率编码方式时,确定所述当前音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式,且启动第二计数器,所述第二计数器的初始值为第一设定值,所述第二计数器在值为0时终止;或者,当所述上一帧音频帧的最终编码方式为第二码率编码向第一码率编码切换编码方式,且所述第一计数器的值大于0时,将所述第一计数器的值减1;若所述第一计数器的值仍大于0,则确定所述当前音频帧的最终编码方式为第二码率编码向第一码率编码切换编码方式;或者,若所述第一计数器的值为0,则确定所述当前音频帧的最终编码方式为第一码率编码方式;或者,当所述上一帧音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式,且所述第二计数器的值大于0时,将所述第二计数器的值减1;若所述第二计数器的值仍大于0,则确定所述当前音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式;或者,若所述第二计数器的值为0,则确定所述当前音频帧的最终编码方式为第二码率编码方式;其中,所述设定阈值的取值与音频帧的声道数相关联。
[0333]
在一种可能的实现方式中,当所述当前音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式或者第二码率编码向第一码率编码切换编码方式时,所述编码模块803,具体用于对所述当前音频帧进行第一码率编码处理;对所述当前音频帧进行第二码率编码处理。
[0334]
在一种可能的实现方式中,当所述当前音频帧的最终编码方式为第二码率编码向第一码率编码切换编码方式,且所述第一码率编码处理的帧长大于所述第二码率编码处理的帧长时,所述编码模块803,具体用于当所述第一计数器的值等于所述第一设定值时,对所述当前音频帧进行第一码率编码处理;对所述当前音频帧进行第二码率编码处理;或者,当所述第一计数器的值小于所述第一设定值时,对所述当前音频帧进行第一码率编码处理。
[0335]
在一种可能的实现方式中,当所述当前音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式,且所述第一码率编码处理的帧长大于所述第二码率编码处理的帧长时,所述编码模块803,具体用于当所述第二计数器的值大于1时,对所述当前音频帧进行第一码率编码处理;对所述当前音频帧进行第二码率编码处理;或者,当所述第二计数器的值等于1时,对所述当前音频帧进行第二码率编码处理。
[0336]
在一种可能的实现方式中,当所述当前音频帧的最终编码方式为第二码率编码向第一码率编码切换编码方式,且所述第一码率编码处理的帧长小于所述第二码率编码处理的帧长时,所述编码模块803,具体用于当所述第一计数器的值大于1时,对所述当前音频帧进行第一码率编码处理;对所述当前音频帧进行第二码率编码处理;或者,当所述第一计数器的值等于1时,对所述当前音频帧进行第一码率编码处理。
[0337]
在一种可能的实现方式中,当所述当前音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式,且所述第一码率编码处理的帧长小于所述第二码率编码处理的帧长时,所述编码模块803,具体用于当所述第二计数器的值等于所述第一设定值时,对所述当前音频帧进行第一码率编码处理;对所述当前音频帧进行第二码率编码处理;或者,
当所述第二计数器的值小于所述第一设定值时,对所述当前音频帧进行第二码率编码处理。
[0338]
在一种可能的实现方式中,所述编码模块803,具体用于当所述第一码率编码处理支持所述当前音频帧的采样率时,对所述当前音频帧进行所述第一码率编码处理;或者,当所述第一码率编码处理不支持所述当前音频帧的采样率时,对所述当前音频帧进行下采样或上采样处理以获得下采样或上采样后的当前音频帧,对所述下采样或上采样后的当前音频帧进行所述第一码率编码处理,所述第一码率编码处理支持所述下采样或上采样后的当前音频帧的采样率。
[0339]
在一种可能的实现方式中,所述编码模块803,具体用于当所述第二码率编码处理支持所述当前音频帧的采样率时,对所述当前音频帧进行所述第二码率编码处理;或者,当所述第二码率编码处理不支持所述当前音频帧的采样率时,对所述当前音频帧进行下采样或上采样处理以获得下采样或上采样后的当前音频帧,对所述下采样或上采样后的当前音频帧进行所述第二码率编码处理,所述第二码率编码处理支持所述下采样或上采样后的当前音频帧的采样率。
[0340]
在一种可能的实现方式中,当所述当前音频帧的最终编码方式为第一码率编码向第二码率编码切换编码方式或者第二码率编码向第一码率编码切换编码方式时,所述确定模块802,还用于根据所述上一帧音频帧的设定码率和所述当前音频帧的设定码率确定第一码率编码处理对应的第一码率和第二码率编码处理对应的第二码率,所述第一码率和所述第二码率之和为所述当前音频帧的设定码率;所述编码模块803,具体用于以所述第一码率对所述当前音频帧进行所述第一码率编码处理;以所述第二码率对所述当前音频帧进行所述第二码率编码处理。
[0341]
在一种可能的实现方式中,编码后的当前音频帧对应的码流信息包括包头信息、第一码率编码码流和/或第二码率编码码流,其中,所述包头信息包括所述当前音频帧的最终编码方式、采样率、声道数、帧长和所述第一码率编码码流的长度。
[0342]
本实施例的装置,可以用于执行图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
[0343]
图9为本技术音频解码装置实施例的结构示意图,如图9所示,该装置可以应用于上述实施例中的音频接收设备。本实施例的解码装置可以包括:获得模块901、解析模块902和解码模块903。其中,
[0344]
获得模块901,用于获得码流信息;解析模块902,用于解析所述码流信息以获得解码方式和编码码流,所述编码码流包括第一码率编码码流和/或第二码率编码码流,所述解码方式包括第一码率解码方式、第二码率解码方式、第一码率解码向第二码率解码切换解码方式或者第二码率解码向第一码率解码切换解码方式,当所述解码方式为第一码率解码方式时,所述编码码流包括第一码率编码码流,当所述解码方式为第二码率解码方式时,所述编码码流包括第二码率编码码流,当所述解码方式为第一码率解码向第二码率解码切换解码方式或者第二码率解码向第一码率解码切换解码方式时,所述编码码流包括第一码率编码码流和第二码率编码码流;解码模块903,用于根据所述解码方式对所述编码码流进行解码以获得目标音频帧。
[0345]
在一种可能的实现方式中,当所述解码方式为第一码率解码方式,并且第一码率
编码处理的帧长和第二码率编码处理的帧长相同,且所述第一码率编码处理的编解码的总时延与所述第二码率编码处理的编解码的总时延相同时,或者,当所述解码方式为第一码率解码方式,并且第一码率解码处理的帧长大于第二码率解码处理的帧长时,所述解码模块903,具体用于根据所述第一码率解码方式对所述第一码率编码码流进行解码处理以获得所述目标音频帧。
[0346]
在一种可能的实现方式中,当所述解码方式为第一码率解码方式,并且第一码率解码处理的帧长小于第二码率解码处理的帧长时,所述解码模块903,具体用于根据所述第一码率解码方式对所述第一码率编码码流进行解码处理以获得第二数据;将所述第一码率解码处理对应的第二数据队列从队头溢出m个样点数据,按照先入先出fifo方式将所述第二数据放入所述第二数据队列,m与所述第二码率解码处理的帧长相关联;从所述第二数据队列的队头提取m个样点数据以获得所述目标音频帧。
[0347]
在一种可能的实现方式中,当所述解码方式为第二码率解码方式,并且第一码率编码处理的帧长和第二码率编码处理的帧长相同,且所述第一码率编码处理的编解码的总时延与所述第二码率编码处理的编解码的总时延相同时,或者,当所述解码方式为第二码率解码方式,并且第一码率解码处理的帧长小于第二码率解码处理的帧长时,所述解码模块903,具体用于根据所述第二码率解码方式对所述第二码率编码码流进行解码处理以获得所述目标音频帧。
[0348]
在一种可能的实现方式中,当所述解码方式为第二码率解码方式,并且第一码率解码处理的帧长大于第二码率解码处理的帧长时,所述解码模块903,具体用于根据所述第二码率解码方式对所述第二码率编码码流进行解码处理以获得第一数据;将所述第二码率解码处理对应的第一数据队列从队头溢出m个样点数据,按照先入先出fifo方式将所述第一数据放入所述第一数据队列,m与所述第一码率解码处理的帧长相关联;从所述第一数据队列的队头提取m个样点数据以获得所述目标音频帧。
[0349]
在一种可能的实现方式中,当所述解码方式为第一码率解码向第二码率解码切换解码方式,并且第一码率编码处理的帧长和第二码率编码处理的帧长相同,且所述第一码率编码处理的编解码的总时延与所述第二码率编码处理的编解码的总时延相同时,所述解码模块903,具体用于根据所述第一码率解码方式对所述第一码率编码码流进行解码处理以获得第二数据;根据所述第二码率解码方式对所述第二码率编码码流进行解码处理以获得第一数据;将所述第二数据的后n个样点数据与所述第一数据的前n个样点数据进行加权平均以获得n个样点平滑数据,n为第二设定值;根据所述第二数据除所述后n个样点数据外的其他数据和所述n个样点平滑数据获得所述目标音频帧。
[0350]
在一种可能的实现方式中,当所述解码方式为第一码率解码向第二码率解码切换解码方式,并且第一码率解码处理的帧长大于第二码率解码处理的帧长时,所述解码模块903,具体用于当上一帧音频帧的解码方式不是所述第一码率解码向第二码率解码切换解码方式时,将所述第二码率解码处理对应的第一数据队列置为全0,所述第一数据队列遵循先入先出的原则;根据所述第一码率解码方式对所述第一码率编码码流进行解码处理以获得第二数据;根据所述第二码率解码方式对所述第二码率编码码流进行解码处理以获得第一数据;将所述第一数据队列从队头溢出m个样点数据,并将所述第一数据放入所述第一数据队列的队尾,m与所述第一码率解码处理的帧长相关联;从所述第一数据队列的队头提取
m个样点数据以获得第三数据;将所述第二数据的后n个样点数据与所述第三数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据所述第二数据除所述后n个样点数据外的其他数据和所述n个样点平滑数据获得所述目标音频帧。
[0351]
在一种可能的实现方式中,当所述解码方式为第一码率解码向第二码率解码切换解码方式,并且第一码率解码处理的帧长小于第二码率解码处理的帧长时,所述解码模块903,具体用于当所述上一帧音频帧的解码方式不是所述第一码率解码向第二码率解码切换解码方式时,根据所述第一码率解码方式对所述第一码率编码码流进行解码处理以获得第二数据;将所述第一码率解码处理对应的第二数据队列从队头溢出m个样点数据,按照先入先出fifo方式将所述第二数据放入所述第二数据队列,m与所述第二码率解码处理的帧长相关联;从所述第二数据队列的队头提取m个样点数据以获得第四数据;根据所述第二码率解码方式对所述第二码率编码码流进行解码处理以获得第一数据;将所述第四数据的后n个样点数据与所述第一数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据所述第四数据除所述后n个样点数据外的其他数据和所述n个样点平滑数据获得所述目标音频帧;或者,当所述上一帧音频帧的解码方式是所述第一码率解码向第二码率解码切换解码方式时,将所述第二数据队列从队头溢出m个样点数据;从所述第二数据队列的队头提取m个样点数据以获得第四数据;根据所述第二码率解码方式对所述第二码率编码码流进行解码处理以获得第一数据;将所述第四数据的后n个样点数据与所述第一数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据所述第四数据除所述后n个样点数据外的其他数据和所述n个样点平滑数据获得所述目标音频帧。
[0352]
在一种可能的实现方式中,当所述解码方式为第二码率解码向第一码率解码切换解码方式,并且第一码率编码处理的帧长和第二码率编码处理的帧长相同,且所述第一码率编码处理的编解码的总时延与所述第二码率编码处理的编解码的总时延相同时,所述解码模块903,具体用于根据所述第二码率解码方式对所述第二码率编码码流进行解码处理以获得第一数据;根据所述第一码率解码方式对所述第一码率编码码流进行解码处理以获得第二数据;将所述第一数据的后n个样点数据与所述第二数据的前n个样点数据进行加权平均以获得n个样点平滑数据,n为第二设定值;根据所述第一数据除所述后n个样点数据外的其他数据和所述n个样点平滑数据获得所述目标音频帧。
[0353]
在一种可能的实现方式中,当所述解码方式为第二码率解码向第一码率解码切换解码方式,并且第一码率解码处理的帧长大于第二码率解码处理的帧长时,所述解码模块903,具体用于当所述上一帧音频帧的解码方式不是所述第二码率解码向第一码率解码切换解码方式时,根据所述第二码率解码方式对所述第二码率编码码流进行解码处理以获得第一数据;将所述第二码率解码处理对应的第一数据队列从队头溢出m个样点数据,按照先入先出fifo方式将所述第一数据放入所述第一数据队列,m与所述第一码率解码处理的帧长相关联;从所述第一数据队列的队头提取m个样点数据以获得第三数据;根据所述第一码率解码方式对所述第一码率编码码流进行解码处理以获得第二数据;将所述第三数据的后n个样点数据与所述第二数据的前n个样点数据进行加权平均以获得n个样点平滑数据;根据所述第三数据除所述后n个样点数据外的其他数据和所述n个样点平滑数据获得所述目标音频帧;或者,当所述上一帧音频帧的解码方式是所述第二码率解码向第一码率解码切换解码方式时,将所述第一数据队列从队头溢出m个样点数据;从所述第一数据队列的队头
memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
[0360]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0361]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0362]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0363]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0364]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0365]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0366]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1