CN102045461B - 语音信号的混音方法和装置 - Google Patents

语音信号的混音方法和装置 Download PDF

Info

Publication number
CN102045461B
CN102045461B CN 200910235813 CN200910235813A CN102045461B CN 102045461 B CN102045461 B CN 102045461B CN 200910235813 CN200910235813 CN 200910235813 CN 200910235813 A CN200910235813 A CN 200910235813A CN 102045461 B CN102045461 B CN 102045461B
Authority
CN
China
Prior art keywords
audio mixing
duration
code stream
packaging
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN 200910235813
Other languages
English (en)
Other versions
CN102045461A (zh
Inventor
毕永建
邓凌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
New H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN 200910235813 priority Critical patent/CN102045461B/zh
Publication of CN102045461A publication Critical patent/CN102045461A/zh
Application granted granted Critical
Publication of CN102045461B publication Critical patent/CN102045461B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Telephonic Communication Services (AREA)

Abstract

本发明公开了一种混音方法和一种混音装置,所述方法包括:设置混音时长,所述混音时长小于预设的人耳可承受语音延时对应的混音时长边界值,且大于各参混码流的帧长最大者;对于帧长与混音时长不存在整数倍关系的码流,根据动态拼包原则进行拼包处理,动态拼包原则为:针对同一终端本次参混后产生的码流,令n个拼包所包含的语音时长大于或等于混音时长与n的乘积。使用本发明能够减少混音引入的系统时延,提高视频会议系统的实时性。

Description

语音信号的混音方法和装置
技术领域
本发明涉及语音信号处理技术,具体涉及语音信号的混音方法和装置。
背景技术
随着电信技术的发展,视频会议业务得到了越来越广泛的应用,视频会议系统中一般包括用于会议控制的多点控制单元(MCU)和至少一个视频会议终端(简称终端)。通常,目前的视频会议系统中终端通常都不止两个,其中一个终端的语音都可以传送至所有其他终端,而每一个终端都同时可听到多个其他终端的声音。因此在视频会议系统中通常都需要进行混音处理,即将多个终端的语音混合起来,以便任一终端都可同时听到其他终端的声音。
图1为MCU中一种混音单元的结构示意图。如图1所示,接口与MCU的上层单元相连,MCU从网络上接收各路视频会议终端的码流,经上层处理后,通过接口下发到混音单元,混音单元分别对各路码流进行拼包处理,每个语音包包含整数个语音帧,且每个语音包所含语音帧的时长总和等于混音时长。例如,码流A的帧长为30ms,混音时长为60ms,则一个语音包含有2个码流A的语音帧。
然后,根据码流协议调用相应解码器对语音包进行解码,依据语音包所属终端,将解码语音包分别缓存到各终端对应的输入缓存通道中。如图1所示,假设当前4个终端(A~D)中有3个终端(A~C)参加混音,则输入缓存通道inCh1、inCh2、inCh3中分别缓存终端A、B、C的解码语音包。每隔一段时间间隔更新输入缓存通道中的数据,该时间间隔等于混音时长。各输入缓存通道的长度通常设置为相等且每个输入缓存通道能够容纳一个混音时长的语音数据。
接着,混音单元从各输入缓存通道中取得解码语音包进行混音操作。对于参加混音的每个参混终端,例如终端1来说,在混音时,需要将除终端1之外的其他几路语音混音,得到非全混语音数据,从而使得终端1不听到自身会场的声音。同时,混音单元还需要将所有参混终端的语音混音,得到全混语音数据,该全混语音数据提供给非参混终端,使其听到所有参混终端所在会场的声音。如图1所示,对于终端A,混合终端B和C的语音数据,缓存到输出缓存通道outCh1,对于终端B,混合终端A和C的语音数据,缓存到outCh2,依此类推;此外,还需混合终端A、B和C的语音数据,缓存到通道outChN+1中。
之后,混音单元根据各终端(包括参混终端和非参混终端)采用的码流协议调用相应编码器,对缓存在各输出缓存通道中的语音数据进行编码组包处理,得到的编码组包包含整数倍帧长的混音数据,将编码组包通过接口发送给上层单元。如图1所示,outCh1中的语音数据经编码组包后发送给终端A;outCh2中的语音数据经编码组包后发送给终端B,依此类推;此外,outChN+1中的语音数据经编码组包后发送给非参混终端D。
在上述混音过程中,为了保证混音效果,需要在拼包时保证各路语音包在时间上对齐,从而确保后续执行混音操作是对同一时间段内的各路语音包进行混音。
目前音频领域存在多种码流协议,如g.711、g.722、g.723、g.728、g.729、g.722.1以及其它非G系列的音频协议,如动态图像专家组(MPGE,MovingPictures Experts Group)系列。不同音频协议对应的语音帧长度可能不同,例如G系列的音频协议,其语音帧长度为10ms或20ms或30ms,而mpeg系列音频协议的音频帧为24ms。
由于在现有技术中,混音时长需要是帧长整数倍才能保证时间对齐,因此,如果各视频会议终端采用相同的码流协议,则比较好处理,混音长度可以固定为音频帧的整数倍。例如帧长均为10ms,则混音长度可以取60ms。
如果各视频会议采用不同的码流协议,但不同码流协议对应的帧长存在匹配关系,即各码流的帧长成整数倍关系,则可以采用最长的帧长或最长帧长的整数倍作为混音时长。例如,码流A的帧长为10ms,码流B的帧长为30ms,则混音长度可以取30ms,或者30ms的整数倍,例如60ms。图2示出了采用60ms作为混音时长时,码流A的拼包结果和码流B的拼包结果。
如果各视频会议不仅采用不同码流协议,且不同码流协议对应的帧长不存在匹配关系,则通常的作法是,取各路码流帧长的最小公倍数作为混音时长。例如,码流A的帧长为24ms,码流B的帧长为30ms,则按照最小公倍数关系,混音长度取120ms。在实际中,为了使人耳感觉不到明显的延时,一般混音时长选择小于100ms,显然120ms不能满足要求,混音效果不好,听者会感觉到明显延时,同时由于混音时长过长使得一次解码、混音和编码的时间过长,从而消耗较多的系统资源,可能导致芯片性能不足。
可见,现有技术在各路码流的帧长存在非匹配关系时,采用各路码流帧长的最小公倍数作为混音长度,可能会向视频会议系统引入较大的系统时延,有时甚至是不可接受的,从而无法保证视频会议系统的实时性。
发明内容
有鉴于此,本发明提供了一种混音方法,在各路码流的帧长存在非匹配关系时,能够减少混音引入的系统时延,提高视频会议系统的实时性。
该方法包括:确定混音时长,所述混音时长小于预设的人耳可承受语音延时对应的混音时长边界值,且大于各参混码流的帧长最大者;
混音过程包括:
对各参混终端的码流进行拼包处理;所述拼包步骤包括:对于帧长与混音时长不存在整数倍关系的码流,以帧长的整数倍为拼包单位进行动态拼包处理;对于帧长与设定的混音时长存在整数倍关系的码流,以混音时长为单位进行拼包处理,得到的每个语音包包含一个混音时长的语音数据;具体动态拼包原则为:针对同一终端本次参混后产生的码流,如果能够满足第i个拼包所包含的语音时长与该码流前i-1个拼包所包含的语音时长之和∑tpb等于混音时长与i的乘积∑thy的条件,则按照∑tpb=∑thy的关系构造第i个拼包;否则,按照∑tpb>∑thy且|∑tpb-∑thy|小于该码流的一个帧长的关系构造第i个拼包;
调用解码器对拼包后的码流进行解码,将解码获得的语音数据放入各参混终端对应的输入缓存通道;每个输入缓存通道的容量大于或等于一个混音时长的数据量,且能够容纳下任意一个拼包;
从各输入缓存通道分别读取一个混音时长的语音数据进行混音处理,将混音得到的混音数据分别存入各终端对应的输出缓存通道;每个输出缓存通道的容量大于或等于一个混音时长的数据量,且能够容纳下任意一个拼包;
调用编码器对各输出缓存通道中的混音数据进行编码组包处理;所述编码组包步骤包括:对于帧长与设定的混音时长不存在整数倍关系的码流,以帧长的整数倍为组包单位进行动态编码组包处理;对于帧长与设定的混音时长存在整数倍关系的码流,以混音时长为单位进行编码组包处理,得到的每个编码组包包含整数倍帧长的混音数据;具体动态编码组包原则为:针对同一终端本次参混后产生的码流,如果能够满足第i个编码组包所包含的语音时长与该码流前i-1个编码组包所包含的语音时长之和∑tzb大于混音时长与i的乘积∑thy的条件,则按照∑tzb=∑thy的关系构造第i个编码组包;否则,按照∑tzb<∑thy且|∑tzb-∑thy|小于该码流的一个帧长的关系构造第i个编码组包。
较佳地,所述混音时长尽可能多的与各参混终端所采用码流的帧长成整倍数关系。
其中,当参混终端中包括采用G系列码流协议和MPEG系列码流协议的终端时,所述混音时长取60ms。
其中,所述解码步骤包括:每个输入缓存通道为一个解码缓存区;一个解码缓存区容纳两个混音时长的语音数据;
在开始向一解码缓存区存储相应码流的拼包时,初始化解码缓存区,将相应码流的第1个拼包作为有效码流保存到解码缓存区,并记录有效码流的起始地址和结束地址;后续拼包以有效码流的结束地址为起点存放,并更新有效码流的结束地址;如果解码缓冲区满,则循环存放;每次进行混音时,从有效码流的起始地址读取一个混音时长的语音数据,被读取的语音数据变为无效码流,更新有效码流的起始地址。
其中,每个输出缓存通道包括两个混音输出缓存区;每个混音输出缓存区容纳一个混音时长的语音数据;
混音后输出的混音数据交替存放在两个混音输出缓存区内;进行编码时,从两个混音输出缓存区交替读取一个混音时长的混音数据。
较佳地,将语音数据存入解码缓存区之前,进一步包括:当参混终端切换时,如果出现终端切换的解码缓存区中存在切换前终端的残留语音数据,则先初始化存在残留数据的解码缓存区,再存入切换后终端的解码数据;
所述编码组包步骤进一步包括:当参混终端切换时,对于切换的终端,如果切换前对应的混音输出缓存区中存在残留语音数据,则执行以下步骤A和B之一:
A、丢弃所述残留数据,并在编码组包时,在所述残留语音数据的时间段补充静音包,再进行编码组包处理;
B、将所述残留数据和切换后对应的混音输出缓存区中的语音数据拼接,再进行编码组包处理。
本发明还提供了一种混音装置,在各路码流的帧长存在非匹配关系时,能够减少混音引入的系统时延,提高视频会议系统的实时性。
该混音装置包括拼包模块、解码模块、输入缓存通道、混音模块、输出缓存通道和编码组包模块;
所述拼包模块,用于对各参混终端的码流进行拼包处理;所述拼包步骤包括:对于帧长与混音时长不存在整数倍关系的码流,以帧长的整数倍为拼包单位进行动态拼包处理;对于帧长与设定的混音时长存在整数倍关系的码流,以混音时长为单位进行拼包处理,得到的每个语音包包含一个混音时长的语音数据;具体动态拼包原则为:针对同一终端本次参混后产生的码流,如果能够满足第i个拼包所包含的语音时长与该码流前i-1个拼包所包含的语音时长之和∑tpb等于混音时长与i的乘积∑thy的条件,则按照∑tpb=∑thy的关系构造第i个拼包;否则,按照∑tpb>∑thy且|∑tpb-∑thy|小于该码流的一个帧长的关系构造第i个拼包;
所述混音时长小于预设的人耳可承受语音延时对应的混音时长边界值,且大于各参混码流的帧长最大者;
所述解码模块,用于调用解码器对所述拼包模块得到的拼包后的码流进行解码,将解码获得的语音数据放入各参混终端对应的输入缓存通道;
每个输入缓存通道的容量大于或等于一个混音时长的数据量,且能够容纳下任意一个拼包;
所述混音模块,用于从各输入缓存通道分别读取一个混音时长的语音数据进行混音处理,将混音得到的混音数据分别存入各终端对应的输出缓存通道;
每个输入缓存通道的容量大于或等于一个混音时长的数据量,且能够容纳下任意一个拼包;
所述编码组包模块,用于调用编码器对各输出缓存通道中的混音数据进行编码组包处理;所述编码组包步骤包括:对于帧长与设定的混音时长不存在整数倍关系的码流,以帧长的整数倍为编码组包单位进行动态编码组包处理;对于帧长与设定的混音时长存在整数倍关系的码流,以混音时长为单位进行编码组包处理,得到的每个编码组包包含整数倍帧长的混音数据;具体动态编码组包原则为:针对同一终端本次参混后产生的码流,如果能够满足第i个编码组包所包含的语音时长与该码流前i-1个编码组包所包含的语音时长之和∑tzb大于混音时长与i的乘积∑thy的条件,则按照∑tzb=∑thy的关系构造第i个编码组包;否则,按照∑tzb<∑thy且|∑tzb-∑thy|小于该码流的一个帧长的关系构造第i个编码组包。
较佳地,所述混音时长尽可能多的与各参混终端所采用码流的帧长成整倍数关系。
较佳地,每个输入缓存通道为一个解码缓存区;一个解码缓存区容纳两个混音时长的语音数据;
所述解码模块在开始向一解码缓存区存储相应码流的拼包时,初始化解码缓存区,将相应码流的第1个拼包作为有效码流保存到解码缓存区,并记录有效码流的起始地址和结束地址;后续拼包以有效码流的结束地址为起点存放,并更新有效码流的结束地址;如果解码缓冲区满,则循环存放;
所述混音模块,每次从解码缓存区读取数据时,从有效码流的起始地址读取一个混音时长的语音数据,被读取的语音数据变为无效码流,更新有效码流的起始地址。
较佳地,每个输出缓存通道包括两个混音输出缓存区;每个混音输出缓存区容纳一个混音时长的语音数据;
所述混音模块将混音后输出的混音数据交替存放在两个混音输出缓存区内;
所述编码组包模块从混音输出缓存区读取数据时,交替地从两个混音输出缓存区读取一个混音时长的混音数据。
较佳地,所述解码模块进一步用于,如果检测到参混终端切换,且出现终端切换的解码缓存区中存在切换前终端的残留数据,则先初始化存在残留数据的解码缓存区,再存入切换后终端的解码数据;
所述编码组包模块进一步用于,如果检测到参混终端切换,对于切换的终端,如果切换前对应的混音输出缓存区中存在残留数据,则执行以下步骤A和步骤B之一:
A、丢弃所述残留数据,并在所述残留数据的时间段补充静音包,再进行编码组包处理;
B、将所述残留数据和切换后对应的混音输出缓存区中的语音数据拼接,再进行编码组包处理。
从以上技术方案可见,本发明选取混音时长时,没有限制必须选用所有码流帧长的公倍数,因此就可以取一个合适的混音时长,使得混音时延在人耳可承受的范围内,从而解决了非匹配帧长语音混音的切换延时问题,保证了系统的实时性。
由于选取的混音时长可能与个别码流帧长不成整数倍关系,对于这样的码流,本发明在拼包时不以混音时长为单位,而是以帧长的整数倍为单位进行拼包操作,由于有些时候语音包长度大于混音时长,因此差异部分需要有一个缓存空间,本发明采用具有裕量的输入缓存通道在编码阶段和混音阶段之间进行缓冲,解决语音包长度与混音时长不匹配带来的码流对齐问题。同理,在编码段,也存在编码组包长度与混音时长不匹配的问题,同样采用具有裕量的输出缓存通道解决。
附图说明
图1为现有技术MCU中的混音单元示意图。
图2为现有技术中存在匹配关系的码流A拼包结果和码流B拼包结果。
图3为本发明混音方法的流程图。
图4为本发明一实例的拼包示意图。
图5为本发明一实例的拼包过程中累计拼包时长与累计混音时长周期性相等示意图
图6为本发明一实例的编码组包示意图。
图7为本发明一实例的拼包过程中累计组包时长与累计混音时长周期性相等示意图。
图8为本发明向解码缓存区存储数据的示意图。
图9为参混终端切换的示意图。
图10为本发明混音装置的结构示意图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明为一种混音方案,该混音方案可以应用与MCU中,也可以应用与任何执行混音处理的设备中。
图3示出了本发明混音方法的流程图。如图3所示,该方法包括:
步骤301:确定混音时长,所述混音时长小于预设的人耳可承受语音延时对应的混音时长边界值,且大于各参混码流的帧长最大者,而不必限定混音时长必须是各码流的公倍数。
通常当混音时长选择小于100ms时,听者不会感觉到明显延时,因此,人耳可承受语音延时对应的混音时长边界值可为100ms。
当然,较佳地混音时长选择方式是:令混音时长尽可能多的与各参混终端所采用码流的帧长成整倍数关系。例如,在确定混音时长时,可以先考虑相互匹配的码流,针对这些码流取一个最小公倍数,然后只要保证该最小公倍数大于非匹配码流的帧长即可,否则取最小公倍数的系数,使得混音时长满足前述条件。
假设码流A和B采用g系列码流协议,码流A帧长为10ms,码流B帧长为20ms,码流C采用mpeg系列码流协议,且帧长为24ms,则可以选择混音时长为30ms、40ms、50ms、60ms等等。考虑到混音时长尽可能多的与各帧长成整倍数关系,60ms和40ms均为10ms和20ms的整数倍,其中60ms又是g系列码流协议定义的30ms帧长的整数倍,因此较佳地,混音时长取60ms。
步骤302:对各参混终端的码流进行拼包处理。
对于帧长与设定的混音时长存在整数倍关系的码流,以混音时长为单位进行拼包处理,得到的每个语音包包含一个混音时长的语音数据。
对于帧长与混音时长不存在整数倍关系的码流,不以混音时长为单位,而是以帧长的整数倍为单位进行动态拼包,具体动态拼包原则为:针对同一终端本次参混后产生的码流,令第i个拼包所包含的语音时长与该码流前i-1个拼包所包含的语音时长之和大于或等于混音时长与i的乘积。
假设当前拼包的序号为i,则有如下关系:
t pb , i + &Sigma; k = 1 k = i - 1 t pb , k &GreaterEqual; i &times; t hy ;
其中,tpb,i为当前拼包i中所包含的数据帧的时长;为前i-1个拼包所包含的语音时长总和;thy为混音时长。
下面将
Figure GDA00002784059200103
称为累计拼包时长,简写为∑thy;i×thy称为累计混音时长,简写为∑thy
需要注意的是,累计时长的起点为码流切入混音且开始进行拼包处理的时刻。例如,MCU开始对码流A的第一帧进行拼包处理时,开始从零记录拼包累计时间和混音累计时间。当码流A从参混码流切换为非参混码流时,针对该码流的累计时间作废,当该码流A再次切换为参混码流时,重新计算累计时间。
步骤303:调用解码器对拼包后的码流进行解码,将解码获得的语音数据放入各参混终端对应的输入缓存通道;每个输入缓存通道都需要有一些裕量,即每个输入缓存通道的容量大于或等于一个混音时长的数据量,其能够容纳下任意一个拼包。
本步骤中,针对各路码流的码流协议调用相应的解码器,以混音时长是间隔,向各路解码器发送拼包,解码器解码后存入相应输入缓存通道。由于输入缓存通道设有裕量,因此当拼包长度大于混音时长时,输入缓存通道可以提供足够的缓存空间。
本发明中,每个输入缓存通道由一个解码缓存区组成。各解码缓存区的长度保持一致,以适应各种码流协议。为了配置方便,配置每个解码缓存区的大小为可以容纳下两个混音时长的码流。当然,也可以配置更大的解码缓存区。对于图4示出的码流组合,码流C的任意两个连续的语音包的时长为120ms,因此可以设置各解码缓存区的长度均为120ms。假设采样频率为16k/s,则解码缓存区的大小应该为16×120字节。
参见图8,在开始向某个解码缓存区存储拼包时,初始化解码缓存区,将相应码流的第1个拼包作为有效码流保存到解码缓存区,并记录有效码流的起始地址和结束地址;后续拼包以有效码流的结束地址为起点存放,并更新有效码流的结束地址,如果解码缓存区满,则循环存放;每次进行混音时,从有效码流的起始地址读取一个混音时长的语音数据,被读取的语音数据变为无效码流,更新有效码流的起始地址。
如果解码缓存区被设置为容纳一个拼包的数据,则对应图4所示码流组合,可以设置为16×72字节,则该大小的解码缓存区足够使用,在存储数据时,也是循环存储且记录有效码流的结束地址。
步骤304:以混音时长为间隔,从各输入缓存通道分别读取一个混音时长的语音数据进行混音处理,将混音得到的非全混语音数据分别存入各参混终端对应的输出缓存通道,将混音得到的全混语音数据存入非参混终端的输出缓存通道;每个输出缓存通道的容量大于或等于一个混音时长的数据量,其能够容纳下任意一个拼包。
本步骤中,从N个输入缓存通道中分别读取一个混音时长的语音数据,经混音后,得到N个非全混语音数据,一个全混语音数据。将N+1路混音数据分别放入N+1个输出缓存通道。
本实施例中,为了配置方便,配置每个输出缓存通道包括两个混音输出缓存区,每个混音输出缓存区正好容纳一个混音时长的语音数据;例如采样频率为16k/s,混音时长为60ms,则每个混音输出缓存区的大小为16×60×2字节。每次混音输出的混音数据交替存放在两个混音输出缓冲区内,进行编码时从两个混音输出缓存区交替读取一个混音时长的混音数据。具体来说,编码时,可以从相应混音输出缓存区读取一个混音时长的数据,并记录下被读取数据的结束位置,下一次从该结束位置继续读取,从而保证混音数据读取的正确性。
步骤305:针对各路码流的码流协议调用解码器,对各输出缓存通道中的混音数据进行编码组包处理。编码组包组包的总体原则是,编码组包得到的混音包包含整数个语音帧,这与现有技术是相同的,这样终端才能够进行语音帧的解码和读取。
对于帧长与设定的混音时长存在整数倍关系的码流,以混音时长为单位进行编码组包处理,得到的每个编码组包包含整数倍帧长的混音数据。
对于帧长与设定的混音时长不存在整数倍关系的码流,以帧长的整数倍为编码组包单位进行动态编码组包处理;具体动态编码组包原则为:针对同一终端本次参混后产生的码流,令第i个编码组包所包含的语音时长与该码流前i-1个编码组包所包含的语音时长之和小于或等于混音时长与i的乘积。
假设当前拼包的序号为i,则有如下关系:
t zb , i + &Sigma; k = 1 k = i - 1 t zb , k &le; i &times; t hy ;
其中,tzb,i为当前拼包i中所包含的数据帧的时长;
Figure GDA00002784059200122
为前i-1个拼包所包含的语音时长总和;thy仍为一个混音时长。
下面将
Figure GDA00002784059200123
称为累计组包时长,简写为∑tzb
至此,完成了混音过程。以上的拼包、解码、混音和编码组包操作均以混音时长为间隔,以保证各个步骤的节奏一致,从而配合良好的完成整个混音流程。
从以上技术方案可见,本发明选取混音时长时,没有限制必须选用所有码流帧长的公倍数,因此就可以取一个合适的混音时长,使得混音时延在人耳可承受的范围内,从而解决了非匹配帧长语音混音的切换延时问题,保证了系统的实时性。由于选取的混音时长可能与个别码流帧长不成整数倍关系,对于这样的码流,本发明在拼包时不以混音时长为单位,而是以帧长的整数倍为单位进行拼包操作,由于有些时候语音包长度大于混音时长,因此差异部分需要有一个缓存空间,本发明采用具有裕量的输入缓存通道在编码阶段和混音阶段之间进行缓冲,解决语音包长度与混音时长不匹配带来的码流对齐问题。同理,在编码段,也存在编码组包长度与混音时长不匹配的问题,同样采用具有裕量的输出缓存通道解决。
由于拼包在被解码后会暂存在输入缓存通道中,如果累计拼包时长一直大于累计混音时长,则可能会形成越来越多的缓存数据,从而造成缓存负担。因此,较佳地拼包方案是尽量令∑tpb=∑thy,为此动态拼包原则进一步包括:
如果能够满足第i个拼包所包含的语音时长与该码流前i-1个拼包所包含的语音时长之和∑tpb等于混音时长与i的乘积∑thy的条件,则按照∑tpb=∑thy的关系组成第i个拼包;否则,按照∑tpb>∑thy且|∑tpb-∑thy|小于该码流的一个帧长的关系组成第i个拼包。
相应地,动态编码组包原则进一步包括:
如果能够满足第i个编码组包所包含的语音时长与该码流前i-1个编码组包所包含的语音时长之和∑tzb大于混音时长与i的乘积∑thy的条件,则按照∑tzb=∑thy的关系组成第i个编码组包;否则,按照∑tzb<∑thy且|∑tzb-∑thy|小于该码流的一个帧长的关系组成第i个编码组包。
下面举两个实例,针对本发明的拼包和编码组包过程进行详细描述。
实例一:
以图4示出的码流组合为例,码流A和B为采用G系列码流协议的码流,码流C为采用MPEG码流协议的码流,A、B、C的帧长分别为10ms、20ms和24ms,混音时长取60ms。
在拼包时,码流A和码流B帧长与混音时长存在整数倍关系,因此针对码流A拼包时,固定取6个语音帧组成一个语音包;针对码流B拼包时,固定取3个语音帧组成一个拼包。而码流C的帧长与混音时长不存在整数倍关系,因此针对码流C拼包时:
第1次取3个语音帧(24×3=72ms)组成一个语音包,72ms大于60ms,二者之差小于帧长24ms;
第2次取2个语音帧(24×2=48ms)组成一个语音包,前2个语音包的累计拼包时长(72+48=120ms)等于前2个语音包的累计混音时长(60×2=120ms);
第3次取3个语音帧(24×3=72ms)组成一个语音包,前3个语音包的累计拼包时长(72+48+72=192ms)大于前3个语音包的累计混音时长(60×3=180ms),且二者之差小于帧长24;
第4次取2个语音帧(24×2=48ms)组成一个语音包,前4个语音包的累计拼包时长(72+48+72+48=240ms)等于前4个语音包的累计混音时长(60×4=240ms),且二者之差小于帧长24;
依此类推,可见当拼包策略为3、2、3、2时,累计拼包时长与累计混音时长将出现周期性相等,不会累积越来越多的多余数据,也不会出现混音操作无法取到足够数据的情况。图5示出了拼包过程中周期性相等的状态。
参见图6,在编码组包时,码流A和码流B帧长与混音时长存在整数倍关系,因此针对码流A编码组包时,固定取6个语音帧组成一个编码组包;针对码流B拼包时,固定取3个语音帧组成一个编码组包。而码流C的帧长与混音时长不存在整数倍关系,因此针对码流C编码组包时:
第1次取2个帧长(24×2=48ms)的混音数据进行编码组包,48ms小于60ms,且二者之差小于帧长24ms;
第2次取3个帧长(24×3=72ms)的混音数据进行编码组包,前2个编码组包的累计拼包时长(48+72=120ms)等于前2个编码组包的累计混音时长(60×2=120ms);
第3次取2个帧长(24×2=48ms)的混音数据进行编码组包,前3个编码组包的累计拼包时长(48+72+48=168ms)小于前3个编码组包的累计混音时长(60×3=180ms),且二者之差小于帧长24ms;
第4次取3个帧长(24×3=72ms)的混音数据进行编码组包,前4个编码组包的累计拼包时长(48+72+48+72=240ms)等于前4个编码组包的累计混音时长(60×4=240ms);
依此类推,可见当编码组包策略为2、3、2、3时,累计组包时长与累计混音时长将出现周期性相等,不会累积越来越多的多余数据,也不会出现编码组包操作无法取到足够数据的情况。图7示出了编码组包过程中周期性相等的状态。
实例二:
假设码流A和B的帧长仍分别为10ms和20ms,但码流C的帧长为28ms,混音时长仍取60ms,则拼包时:
第1次取3个语音帧(84ms)组成一个语音包,84ms大于60ms;且二者之差为24ms,小于一个帧长;
第2次取2个语音帧(56ms)组成一个语音包,前2个语音包的累计拼包时长(84+56=140ms)大于前2个语音包的累计混音时长(120ms);且二者之差为20ms,小于一个帧长;
第3次取2个语音帧(56ms)组成一个语音包,前3个语音包的累计拼包时长(140+56=196ms)大于前3个语音包的累计混音时长(180ms);且二者之差为16ms,小于一个帧长;
第4次取2个语音帧(56ms)组成一个语音包,前4个语音包的累计拼包时长(196+56=252ms)等于前4个语音包的累计混音时长(240ms);且二者之差为12ms,小于一个帧长;
依此类推,当第7次取2个语音帧时,累计拼包时长等于累计混音时长可见此时的拼包策略为3、2、2、2、2、2、2。
编码组包过程与拼包过程相反,这里略。
如图9所示,在实际中,MCU召开会议时因为芯片资源有限,只能挑选多路会场终端中的N(假设N=4)路会场进行混音,这样存在一个参混终端切换问题,即在某个时刻参加混音的会场终端可能发生了切换,例如,在某时刻参加混音的终端可能由ABCD变为ABCE,这样对通道4,就发生了切换,对应的终端由D变为E。
在解码段,当参混终端切换时,如果出现切换的参混终端对应的解码缓存区中存在切换前终端的残留语音数据,则初始化(例如清空)存在残留数据的解码缓存区,再存入切换后终端的解码数据。由于丢弃的残留数据通常会小于一帧,因此不会影响人耳的听觉效果。如果某一终端刚刚切换进入混音,如果所获得的该终端码流时长小于一次混音时长,则在前面补静音包。
假设图8所示解码缓存区为终端D所用,当某个时刻处于图8第二行的情况,且终端D与E相互切换,则终端D对应的解码缓存区中存在终端D的残留数据,因此在存入终端E的数据前,可以删除该段残留数据,再存入终端E的数据。
在编码段,当参混终端切换时,对于切换的终端,如果切换前对应的混音输出缓存区中存在残留语音数据,则执行以下步骤(a)和(b)之一:
(a)、丢弃残留数据,并在编码组包时,在所述残留语音数据的时间段补充静音包;
(b)、将残留数据和切换后对应的混音输出缓存区中的语音数据拼接,再进行编码组包处理。例如,终端D从参混终端切换为非参混终端,则切换前在通道4中有一段残留数据,切换后在通道5(全混数据通道)中有一段数据,将这两段数据拼接,得到一段完整数据在进行编码组包处理。
本发明还提供了一种混音装置,该混音装置可以应用用于MCU。如图10所示,该装置包括拼包模块、解码模块、输入缓存通道、混音模块、输出缓存通道和编码组包模块。其中,
拼包模块,用于对各参混终端的码流进行拼包处理;所述拼包步骤包括:对于帧长与混音时长不存在整数倍关系的码流,以帧长的整数倍为拼包单位进行动态拼包处理;具体动态拼包原则为:针对同一终端本次参混后产生的码流,令第i个拼包所包含的语音时长与该码流前i-1个拼包所包含的语音时长之和大于或等于混音时长与i的乘积。
其中,混音时长小于预设的人耳可承受语音延时对应的混音时长边界值,且大于各参混码流的帧长最大者。较佳地,混音时长尽可能多的与各参混终端所采用码流的帧长成整倍数关系。
解码模块,用于调用解码器对所述拼包模块得到的拼包后的码流进行解码,将解码获得的语音数据放入各参混终端对应的输入缓存通道。
每个输入缓存通道的容量大于或等于一个混音时长的数据量,且能够容纳下任意一个拼包。
混音模块,用于从各输入缓存通道分别读取一个混音时长的语音数据进行混音处理,将混音得到的混音数据分别存入各终端对应的输出缓存通道。
每个输入缓存通道的容量大于或等于一个混音时长的数据量,且能够容纳下任意一个拼包。
编码组包模块,用于调用编码器对各输出缓存通道中的混音数据进行编码组包处理;所述编码组包步骤包括:对于帧长与设定的混音时长不存在整数倍关系的码流,以帧长的整数倍为编码组包单位进行动态编码组包处理;具体动态编码组包原则为:针对同一终端本次参混后产生的码流,令第i个编码组包所包含的语音时长与该码流前i-1个编码组包所包含的语音时长之和小于或等于混音时长与i的乘积。
较佳地,拼包模块进一步用于,在拼包时,如果能够满足第i个拼包所包含的语音时长与该码流前i-1个拼包所包含的语音时长之和∑tpb等于混音时长与i的乘积∑thy的条件,则按照∑tpb=∑thy的关系构造第i个拼包;否则,按照∑tpb>∑thy且|∑tpb-∑thy|小于该码流的一个帧长的关系构造第i个拼包;
同理,编码组包模块进一步用于,在编码组包时,如果能够满足第i个编码组包所包含的语音时长与该码流前i-1个编码组包所包含的语音时长之和∑tzb大于混音时长与i的乘积∑thy的条件,则按照∑tzb=∑thy的关系构造第i个编码组包;否则,按照∑tzb<∑thy且|∑tzb-∑thy|小于该码流的一个帧长的关系构造第i个编码组包。
较佳地,每个输入缓存通道为一个解码缓存区;一个解码缓存区容纳两个混音时长的语音数据。
在这种情况下,解码模块在开始向一解码缓存区存储相应码流的拼包时,初始化解码缓存区,将相应码流的第1个拼包作为有效码流保存到解码缓存区,并记录有效码流的起始地址和结束地址;后续拼包以有效码流的结束地址为起点存放,并更新有效码流的结束地址;如果解码缓冲区满,则循环存放。
混音模块每次从解码缓存区读取数据时,从有效码流的起始地址读取一个混音时长的语音数据,被读取的语音数据变为无效码流,更新有效码流的起始地址。
较佳地,每个输出缓存通道包括两个混音输出缓存区;每个混音输出缓存区容纳一个混音时长的语音数据。
在这种情况下,混音模块将混音后输出的混音数据交替存放在两个混音输出缓存区内。
编码组包模块从混音输出缓存区读取数据时,交替地从两个混音输出缓存区读取一个混音时长的混音数据
较佳地,解码模块进一步用于,如果检测到参混终端切换,且出现终端切换的解码缓存区中存在切换前终端的残留数据,则先初始化存在残留数据的解码缓存区,再存入切换后终端的解码数据;
编码组包模块进一步用于,如果检测到参混终端切换,对于切换的终端,如果切换前对应的混音输出缓存区中存在残留数据,则执行以下步骤A和步骤B之一:
A、丢弃所述残留数据,并在所述残留数据的时间段补充静音包,然后进行编码组包处理;
B、将所述残留数据和切换后对应的混音输出缓存区中的语音数据拼接,再进行编码组包处理。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (11)

1.一种语音信号的混音方法,其特征在于,确定混音时长,所述混音时长小于预设的人耳可承受语音延时对应的混音时长边界值,且大于各参混码流的帧长最大者;
混音过程包括:
对各参混终端的码流进行拼包处理;所述拼包步骤包括:对于帧长与混音时长不存在整数倍关系的码流,以帧长的整数倍为拼包单位进行动态拼包处理;对于帧长与设定的混音时长存在整数倍关系的码流,以混音时长为单位进行拼包处理,得到的每个语音包包含一个混音时长的语音数据;具体动态拼包原则为:针对同一终端本次参混后产生的码流,如果能够满足第i个拼包所包含的语音时长与该码流前i-1个拼包所包含的语音时长之和∑tpb等于混音时长与i的乘积∑thy的条件,则按照∑tpb=∑thy的关系构造第i个拼包;否则,按照∑tpb>∑thy且|∑tpb-∑thy|小于该码流的一个帧长的关系构造第i个拼包;
调用解码器对拼包后的码流进行解码,将解码获得的语音数据放入各参混终端对应的输入缓存通道;每个输入缓存通道的容量大于或等于一个混音时长的数据量,且能够容纳下任意一个拼包;
从各输入缓存通道分别读取一个混音时长的语音数据进行混音处理,将混音得到的混音数据分别存入各终端对应的输出缓存通道;每个输出缓存通道的容量大于或等于一个混音时长的数据量,且能够容纳下任意一个拼包;
调用编码器对各输出缓存通道中的混音数据进行编码组包处理;所述编码组包步骤包括:对于帧长与设定的混音时长不存在整数倍关系的码流,以帧长的整数倍为组包单位进行动态编码组包处理;对于帧长与设定的混音时长存在整数倍关系的码流,以混音时长为单位进行编码组包处理,得到的每个编码组包包含整数倍帧长的混音数据;具体动态编码组包原则为:针对同一终端本次参混后产生的码流,如果能够满足第i个编码组包所包含的语音时长与该码流前i-1个编码组包所包含的语音时长之和∑tzb大于混音时长与i的乘积∑thy的条件,则按照∑tzb=∑thy的关系构造第i个编码组包;否则,按照∑tzb<∑thy且|∑tzb-∑thy|小于该码流的一个帧长的关系构造第i个编码组包。
2.如权利要求1所述的方法,其特征在于,所述混音时长尽可能多的与各参混终端所采用码流的帧长成整倍数关系。
3.如权利要求2所述的方法,其特征在于,当参混终端中包括采用G系列码流协议和MPEG系列码流协议的终端时,所述混音时长取60ms。
4.如权利要求1所述的方法,其特征在于,所述解码步骤包括:每个输入缓存通道为一个解码缓存区;一个解码缓存区容纳两个混音时长的语音数据;
在开始向一解码缓存区存储相应码流的拼包时,初始化解码缓存区,将相应码流的第1个拼包作为有效码流保存到解码缓存区,并记录有效码流的起始地址和结束地址;后续拼包以有效码流的结束地址为起点存放,并更新有效码流的结束地址;如果解码缓冲区满,则循环存放;每次进行混音时,从有效码流的起始地址读取一个混音时长的语音数据,被读取的语音数据变为无效码流,更新有效码流的起始地址。
5.如权利要求4所述的方法,其特征在于,每个输出缓存通道包括两个混音输出缓存区;每个混音输出缓存区容纳一个混音时长的语音数据;
混音后输出的混音数据交替存放在两个混音输出缓存区内;进行编码时,从两个混音输出缓存区交替读取一个混音时长的混音数据。
6.如权利要求5所述的方法,其特征在于,将语音数据存入解码缓存区之前,进一步包括:当参混终端切换时,如果出现终端切换的解码缓存区中存在切换前终端的残留语音数据,则先初始化存在残留数据的解码缓存区,再存入切换后终端的解码数据;
所述编码组包步骤进一步包括:当参混终端切换时,对于切换的终端,如果切换前对应的混音输出缓存区中存在残留语音数据,则执行以下步骤A和B之一:
A、丢弃所述残留数据,并在编码组包时,在所述残留语音数据的时间段补充静音包,再进行编码组包处理;
B、将所述残留数据和切换后对应的混音输出缓存区中的语音数据拼接,再进行编码组包处理。
7.一种语音信号的混音装置,其特征在于,该混音装置包括拼包模块、解码模块、输入缓存通道、混音模块、输出缓存通道和编码组包模块;
所述拼包模块,用于对各参混终端的码流进行拼包处理;所述拼包步骤包括:对于帧长与混音时长不存在整数倍关系的码流,以帧长的整数倍为拼包单位进行动态拼包处理;对于帧长与设定的混音时长存在整数倍关系的码流,以混音时长为单位进行拼包处理,得到的每个语音包包含一个混音时长的语音数据;具体动态拼包原则为:针对同一终端本次参混后产生的码流,如果能够满足第i个拼包所包含的语音时长与该码流前i-1个拼包所包含的语音时长之和∑tpb等于混音时长与i的乘积∑thy的条件,则按照∑tpb=∑thy的关系构造第i个拼包;否则,按照∑tpb>∑thy且|∑tpb-∑thy|小于该码流的一个帧长的关系构造第i个拼包;
所述混音时长小于预设的人耳可承受语音延时对应的混音时长边界值,且大于各参混码流的帧长最大者;
所述解码模块,用于调用解码器对所述拼包模块得到的拼包后的码流进行解码,将解码获得的语音数据放入各参混终端对应的输入缓存通道;
每个输入缓存通道的容量大于或等于一个混音时长的数据量,且能够容纳下任意一个拼包;
所述混音模块,用于从各输入缓存通道分别读取一个混音时长的语音数据进行混音处理,将混音得到的混音数据分别存入各终端对应的输出缓存通道;
每个输入缓存通道的容量大于或等于一个混音时长的数据量,且能够容纳下任意一个拼包;
所述编码组包模块,用于调用编码器对各输出缓存通道中的混音数据进行编码组包处理;所述编码组包步骤包括:对于帧长与设定的混音时长不存在整数倍关系的码流,以帧长的整数倍为编码组包单位进行动态编码组包处理;对于帧长与设定的混音时长存在整数倍关系的码流,以混音时长为单位进行编码组包处理,得到的每个编码组包包含整数倍帧长的混音数据;具体动态编码组包原则为:针对同一终端本次参混后产生的码流,如果能够满足第i个编码组包所包含的语音时长与该码流前i-1个编码组包所包含的语音时长之和∑tzb大于混音时长与i的乘积∑thy的条件,则按照∑tzb=∑thy的关系构造第i个编码组包;否则,按照∑tzb<∑thy且|∑tzb-∑thy|小于该码流的一个帧长的关系构造第i个编码组包。
8.如权利要求7所述的混音装置,其特征在于,所述混音时长尽可能多的与各参混终端所采用码流的帧长成整倍数关系。
9.如权利要求7所述的混音装置,其特征在于,每个输入缓存通道为一个解码缓存区;一个解码缓存区容纳两个混音时长的语音数据;
所述解码模块在开始向一解码缓存区存储相应码流的拼包时,初始化解码缓存区,将相应码流的第1个拼包作为有效码流保存到解码缓存区,并记录有效码流的起始地址和结束地址;后续拼包以有效码流的结束地址为起点存放,并更新有效码流的结束地址;如果解码缓冲区满,则循环存放;
所述混音模块,每次从解码缓存区读取数据时,从有效码流的起始地址读取一个混音时长的语音数据,被读取的语音数据变为无效码流,更新有效码流的起始地址。
10.如权利要求7所述的混音装置,其特征在于,每个输出缓存通道包括两个混音输出缓存区;每个混音输出缓存区容纳一个混音时长的语音数据;
所述混音模块将混音后输出的混音数据交替存放在两个混音输出缓存区内;
所述编码组包模块从混音输出缓存区读取数据时,交替地从两个混音输出缓存区读取一个混音时长的混音数据。
11.如权利要求7所述的混音装置,其特征在于,所述解码模块进一步用于,如果检测到参混终端切换,且出现终端切换的解码缓存区中存在切换前终端的残留数据,则先初始化存在残留数据的解码缓存区,再存入切换后终端的解码数据;
所述编码组包模块进一步用于,如果检测到参混终端切换,对于切换的终端,如果切换前对应的混音输出缓存区中存在残留数据,则执行以下步骤A和步骤B之一:
A、丢弃所述残留数据,并在所述残留数据的时间段补充静音包,再进行编码组包处理;
B、将所述残留数据和切换后对应的混音输出缓存区中的语音数据拼接,再进行编码组包处理。
CN 200910235813 2009-10-09 2009-10-09 语音信号的混音方法和装置 Active CN102045461B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200910235813 CN102045461B (zh) 2009-10-09 2009-10-09 语音信号的混音方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910235813 CN102045461B (zh) 2009-10-09 2009-10-09 语音信号的混音方法和装置

Publications (2)

Publication Number Publication Date
CN102045461A CN102045461A (zh) 2011-05-04
CN102045461B true CN102045461B (zh) 2013-07-24

Family

ID=43911208

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910235813 Active CN102045461B (zh) 2009-10-09 2009-10-09 语音信号的混音方法和装置

Country Status (1)

Country Link
CN (1) CN102045461B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3254453B1 (en) * 2015-02-03 2019-05-08 Dolby Laboratories Licensing Corporation Conference segmentation based on conversational dynamics
SE1530010A1 (sv) * 2015-02-03 2016-06-14 100 Milligrams Holding Ab A mix instructions file for controlling a music mix, a computer program product and a computer device
CN106782576B (zh) * 2017-02-15 2020-05-22 合一网络技术(北京)有限公司 音频混音方法及装置
CN108632048B (zh) * 2017-03-22 2020-12-22 展讯通信(上海)有限公司 会议电话控制方法、装置及多通终端
CN111770413B (zh) * 2020-06-30 2021-08-27 浙江大华技术股份有限公司 一种多音源混音方法、装置及存储介质
CN116403589A (zh) * 2023-03-01 2023-07-07 天地阳光通信科技(北京)有限公司 一种音频处理方法、单元及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101242538A (zh) * 2008-03-18 2008-08-13 华为技术有限公司 一种码流解码方法和装置
CN101272383A (zh) * 2008-05-08 2008-09-24 中兴通讯股份有限公司 一种实时音频数据传输方法
CN101414463A (zh) * 2007-10-19 2009-04-22 华为技术有限公司 一种混音编码方法、装置和系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101414463A (zh) * 2007-10-19 2009-04-22 华为技术有限公司 一种混音编码方法、装置和系统
CN101242538A (zh) * 2008-03-18 2008-08-13 华为技术有限公司 一种码流解码方法和装置
CN101272383A (zh) * 2008-05-08 2008-09-24 中兴通讯股份有限公司 一种实时音频数据传输方法

Also Published As

Publication number Publication date
CN102045461A (zh) 2011-05-04

Similar Documents

Publication Publication Date Title
CN102045461B (zh) 语音信号的混音方法和装置
ES2287133T3 (es) Configuracion y metodo relativo a la comunicacion del habla.
JP3638609B2 (ja) デジタル信号処理装置
CN100426715C (zh) 一种丢帧隐藏方法和装置
US6295302B1 (en) Alternating speech and data transmission in digital communications systems
JP2006238445A (ja) 仮想ジッタ・バッファおよび時間スケール修正を使用した、VoiceoverIP通信ネットワークにおいてネットワーク・ジッタを処理する方法および装置
CN101313525A (zh) 启用高质量实时音频的基础结构
CN101790754B (zh) 用于提供amr-wb dtx同步的系统和方法
JPS6143853A (ja) デイジタル化音声信号の伝送方法
US5953411A (en) Method and apparatus for maintaining audio sample correlation
US20070286276A1 (en) Method and decoding device for decoding coded user data
US20010053132A1 (en) Management method and a conference unit for use in a communication system including user terminals communicating by means of the internet protocol
EP1447947A3 (en) Frame alteration logic for network processors
CN101192903B (zh) 数据帧编解码控制方法
US7362770B2 (en) Method and apparatus for using and combining sub-frame processing and adaptive jitter-buffers for improved voice quality in voice-over-packet networks
JP2000286886A (ja) 遅延揺らぎ吸収装置及び吸収方法
JP2007194704A (ja) データ通信端末装置及びデータ通信システム
CN105611092A (zh) 一种网络语音同步消噪通讯系统
ES2220942T3 (es) Procedimiento de transmision de señales vocales codificadas en al menos una red de telecomunicaciones.
JP2000188741A (ja) Tv電話装置
JPH0677910A (ja) 音声コーデック処理方式
US6801622B1 (en) Devices, software and methods for passing DTMF signals under voice compression
JPH01303940A (ja) 音声パケツト処理装置
JPH06216860A (ja) 音声通信装置
JP2000347695A (ja) 音声制御方法及び音声制御装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: Xinhua three Technology Co., Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: Huasan Communication Technology Co., Ltd.

CP03 Change of name, title or address