欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

語音信號(hào)的混音方法和裝置的制作方法

文檔序號(hào):7719635閱讀:204來源:國(guó)知局
專利名稱:語音信號(hào)的混音方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及語音信號(hào)處理技術(shù),具體涉及語音信號(hào)的混音方法和裝置。
背景技術(shù)
隨著電信技術(shù)的發(fā)展,視頻會(huì)議業(yè)務(wù)得到了越來越廣泛的應(yīng)用,視頻會(huì)議系統(tǒng)中 一般包括用于會(huì)議控制的多點(diǎn)控制單元(MCU)和至少一個(gè)視頻會(huì)議終端(簡(jiǎn)稱終端)。通 常,目前的視頻會(huì)議系統(tǒng)中終端通常都不止兩個(gè),其中一個(gè)終端的語音都可以傳送至所有 其他終端,而每一個(gè)終端都同時(shí)可聽到多個(gè)其他終端的聲音。因此在視頻會(huì)議系統(tǒng)中通常 都需要進(jìn)行混音處理,即將多個(gè)終端的語音混合起來,以便任一終端都可同時(shí)聽到其他終 端的聲音。圖1為MCU中一種混音單元的結(jié)構(gòu)示意圖。如圖1所示,接口與MCU的上層單元 相連,MCU從網(wǎng)絡(luò)上接收各路視頻會(huì)議終端的碼流,經(jīng)上層處理后,通過接口下發(fā)到混音單 元,混音單元分別對(duì)各路碼流進(jìn)行拼包處理,每個(gè)語音包包含整數(shù)個(gè)語音幀,且每個(gè)語音包 所含語音幀的時(shí)長(zhǎng)總和等于混音時(shí)長(zhǎng)。例如,碼流A的幀長(zhǎng)為30ms,混音時(shí)長(zhǎng)為60ms,則一 個(gè)語音包含有2個(gè)碼流A的語音幀。然后,根據(jù)碼流協(xié)議調(diào)用相應(yīng)解碼器對(duì)語音包進(jìn)行解碼,依據(jù)語音包所屬終端,將 解碼語音包分別緩存到各終端對(duì)應(yīng)的輸入緩存通道中。如圖1所示,假設(shè)當(dāng)前4個(gè)終端 (A D)中有3個(gè)終端(A C)參加混音,則輸入緩存通道inChl、inCh2、inCh3中分別緩 存終端A、B、C的解碼語音包。每隔一段時(shí)間間隔更新輸入緩存通道中的數(shù)據(jù),該時(shí)間間隔 等于混音時(shí)長(zhǎng)。各輸入緩存通道的長(zhǎng)度通常設(shè)置為相等且每個(gè)輸入緩存通道能夠容納一個(gè) 混音時(shí)長(zhǎng)的語音數(shù)據(jù)。接著,混音單元從各輸入緩存通道中取得解碼語音包進(jìn)行混音操作。對(duì)于參加混 音的每個(gè)參混終端,例如終端1來說,在混音時(shí),需要將除終端1之外的其他幾路語音混音, 得到非全混語音數(shù)據(jù),從而使得終端1不聽到自身會(huì)場(chǎng)的聲音。同時(shí),混音單元還需要將所 有參混終端的語音混音,得到全混語音數(shù)據(jù),該全混語音數(shù)據(jù)提供給非參混終端,使其聽到 所有參混終端所在會(huì)場(chǎng)的聲音。如圖1所示,對(duì)于終端A,混合終端B和C的語音數(shù)據(jù),緩存 到輸出緩存通道outChl,對(duì)于終端B,混合終端A和C的語音數(shù)據(jù),緩存到outCh2,依此類 推;此外,還需混合終端A、B和C的語音數(shù)據(jù),緩存到通道outChN+Ι中。之后,混音單元根據(jù)各終端(包括參混終端和非參混終端)采用的碼流協(xié)議調(diào)用 相應(yīng)編碼器,對(duì)緩存在各輸出緩存通道中的語音數(shù)據(jù)進(jìn)行編碼組包處理,得到的編碼組包 包含整數(shù)倍幀長(zhǎng)的混音數(shù)據(jù),將編碼組包通過接口發(fā)送給上層單元。如圖1所示,OUtChl中 的語音數(shù)據(jù)經(jīng)編碼組包后發(fā)送給終端A ;outCh2中的語音數(shù)據(jù)經(jīng)編碼組包后發(fā)送給終端B, 依此類推;此外,outChN+Ι中的語音數(shù)據(jù)經(jīng)編碼組包后發(fā)送給非參混終端D。在上述混音過程中,為了保證混音效果,需要在拼包時(shí)保證各路語音包在時(shí)間上 對(duì)齊,從而確保后續(xù)執(zhí)行混音操作是對(duì)同一時(shí)間段內(nèi)的各路語音包進(jìn)行混音。目前音頻領(lǐng)域存在多種碼流協(xié)議,如g. 711、g. 722、g. 723、g. 728、g. 729、g. 722. 1以及其它非G系列的音頻協(xié)議,如動(dòng)態(tài)圖像專家組(MPGE,MovingPictures Experts Group) 系列。不同音頻協(xié)議對(duì)應(yīng)的語音幀長(zhǎng)度可能不同,例如G系列的音頻協(xié)議,其語音幀長(zhǎng)度為 IOms或20ms或30ms,而mpeg系列音頻協(xié)議的音頻幀為2%is。由于在現(xiàn)有技術(shù)中,混音時(shí)長(zhǎng)需要是幀長(zhǎng)整數(shù)倍才能保證時(shí)間對(duì)齊,因此,如果各 視頻會(huì)議終端采用相同的碼流協(xié)議,則比較好處理,混音長(zhǎng)度可以固定為音頻幀的整數(shù)倍。 例如幀長(zhǎng)均為10ms,則混音長(zhǎng)度可以取60ms。如果各視頻會(huì)議采用不同的碼流協(xié)議,但不同碼流協(xié)議對(duì)應(yīng)的幀長(zhǎng)存在匹配關(guān) 系,即各碼流的幀長(zhǎng)成整數(shù)倍關(guān)系,則可以采用最長(zhǎng)的幀長(zhǎng)或最長(zhǎng)幀長(zhǎng)的整數(shù)倍作為混音 時(shí)長(zhǎng)。例如,碼流A的幀長(zhǎng)為10ms,碼流B的幀長(zhǎng)為30ms,則混音長(zhǎng)度可以取30ms,或者 30ms的整數(shù)倍,例如60ms。圖2示出了采用60ms作為混音時(shí)長(zhǎng)時(shí),碼流A的拼包結(jié)果和碼 流B的拼包結(jié)果。如果各視頻會(huì)議不僅采用不同碼流協(xié)議,且不同碼流協(xié)議對(duì)應(yīng)的幀長(zhǎng)不存在匹配 關(guān)系,則通常的作法是,取各路碼流幀長(zhǎng)的最小公倍數(shù)作為混音時(shí)長(zhǎng)。例如,碼流A的幀長(zhǎng) 為2%is,碼流B的幀長(zhǎng)為30ms,則按照最小公倍數(shù)關(guān)系,混音長(zhǎng)度取120ms。在實(shí)際中,為了 使人耳感覺不到明顯的延時(shí),一般混音時(shí)長(zhǎng)選擇小于100ms,顯然120ms不能滿足要求,混 音效果不好,聽者會(huì)感覺到明顯延時(shí),同時(shí)由于混音時(shí)長(zhǎng)過長(zhǎng)使得一次解碼、混音和編碼的 時(shí)間過長(zhǎng),從而消耗較多的系統(tǒng)資源,可能導(dǎo)致芯片性能不足??梢?,現(xiàn)有技術(shù)在各路碼流的幀長(zhǎng)存在非匹配關(guān)系時(shí),采用各路碼流幀長(zhǎng)的最小 公倍數(shù)作為混音長(zhǎng)度,可能會(huì)向視頻會(huì)議系統(tǒng)引入較大的系統(tǒng)時(shí)延,有時(shí)甚至是不可接受 的,從而無法保證視頻會(huì)議系統(tǒng)的實(shí)時(shí)性。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種混音方法,在各路碼流的幀長(zhǎng)存在非匹配關(guān)系時(shí),能 夠減少混音引入的系統(tǒng)時(shí)延,提高視頻會(huì)議系統(tǒng)的實(shí)時(shí)性。該方法包括確定混音時(shí)長(zhǎng),所述混音時(shí)長(zhǎng)小于預(yù)設(shè)的人耳可承受語音延時(shí)對(duì)應(yīng) 的混音時(shí)長(zhǎng)邊界值,且大于各參混碼流的幀長(zhǎng)最大者;混音過程包括對(duì)各參混終端的碼流進(jìn)行拼包處理;所述拼包步驟包括對(duì)于幀長(zhǎng)與混音時(shí)長(zhǎng)不 存在整數(shù)倍關(guān)系的碼流,以幀長(zhǎng)的整數(shù)倍為拼包單位進(jìn)行動(dòng)態(tài)拼包處理;具體動(dòng)態(tài)拼包原 則為針對(duì)同一終端本次參混后產(chǎn)生的碼流,如果能夠滿足第i個(gè)拼包所包含的語音時(shí)長(zhǎng) 與該碼流前i-Ι個(gè)拼包所包含的語音時(shí)長(zhǎng)之和Σ tpb等于混音時(shí)長(zhǎng)與i的乘積Σ thy的條件, 則按照Σ tpb =Σ thy的關(guān)系構(gòu)造第i個(gè)拼包;否則,按照Σ tpb >Σ、且I Σ tpb- Σ thy 小于該碼流的一個(gè)幀長(zhǎng)的關(guān)系構(gòu)造第i個(gè)拼包;調(diào)用解碼器對(duì)拼包后的碼流進(jìn)行解碼,將解碼獲得的語音數(shù)據(jù)放入各參混終端對(duì) 應(yīng)的輸入緩存通道;每個(gè)輸入緩存通道的容量大于或等于一個(gè)混音時(shí)長(zhǎng)的數(shù)據(jù)量,且能夠 容納下任意一個(gè)拼包;從各輸入緩存通道分別讀取一個(gè)混音時(shí)長(zhǎng)的語音數(shù)據(jù)進(jìn)行混音處理,將混音得到 的混音數(shù)據(jù)分別存入各終端對(duì)應(yīng)的輸出緩存通道;每個(gè)輸出緩存通道的容量大于或等于一 個(gè)混音時(shí)長(zhǎng)的數(shù)據(jù)量,且能夠容納下任意一個(gè)拼包;
調(diào)用編碼器對(duì)各輸出緩存通道中的混音數(shù)據(jù)進(jìn)行編碼組包處理;所述編碼組包步 驟包括對(duì)于幀長(zhǎng)與設(shè)定的混音時(shí)長(zhǎng)不存在整數(shù)倍關(guān)系的碼流,以幀長(zhǎng)的整數(shù)倍為組包單 位進(jìn)行動(dòng)態(tài)編碼組包處理;具體動(dòng)態(tài)編碼組包原則為針對(duì)同一終端本次參混后產(chǎn)生的碼 流,如果能夠滿足第i個(gè)編碼組包所包含的語音時(shí)長(zhǎng)與該碼流前i-Ι個(gè)編碼組包所包含的 語音時(shí)長(zhǎng)之和Σ tzb大于混音時(shí)長(zhǎng)與i的乘積Σ thy的條件,則按照Σ tzb =Σ thy的關(guān)系構(gòu) 造第i個(gè)編碼組包;否則,按照Σ tzb <Σ、且I Σ tzb- Σ thy|小于該碼流的一個(gè)幀長(zhǎng)的 關(guān)系構(gòu)造第i個(gè)編碼組包。較佳地,所述混音時(shí)長(zhǎng)盡可能多的與各參混終端所采用碼流的幀長(zhǎng)成整倍數(shù)關(guān) 系。其中,當(dāng)參混終端中包括采用G系列碼流協(xié)議和MPEG系列碼流協(xié)議的終端時(shí),所 述混音時(shí)長(zhǎng)取60ms。其中,所述解碼步驟包括每個(gè)輸入緩存通道為一個(gè)解碼緩存區(qū);一個(gè)解碼緩存 區(qū)容納兩個(gè)混音時(shí)長(zhǎng)的語音數(shù)據(jù);在開始向一解碼緩存區(qū)存儲(chǔ)相應(yīng)碼流的拼包時(shí),初始化解碼緩存區(qū),將相應(yīng)碼流 的第1個(gè)拼包作為有效碼流保存到解碼緩存區(qū),并記錄有效碼流的起始地址和結(jié)束地址; 后續(xù)拼包以有效碼流的結(jié)束地址為起點(diǎn)存放,并更新有效碼流的結(jié)束地址;如果解碼緩沖 區(qū)滿,則循環(huán)存放;每次進(jìn)行混音時(shí),從有效碼流的起始地址讀取一個(gè)混音時(shí)長(zhǎng)的語音數(shù) 據(jù),被讀取的語音數(shù)據(jù)變?yōu)闊o效碼流,更新有效碼流的起始地址。其中,每個(gè)輸出緩存通道包括兩個(gè)混音輸出緩存區(qū);每個(gè)混音輸出緩存區(qū)容納一 個(gè)混音時(shí)長(zhǎng)的語音數(shù)據(jù);混音后輸出的混音數(shù)據(jù)交替存放在兩個(gè)混音輸出緩存區(qū)內(nèi);進(jìn)行編碼時(shí),從兩個(gè) 混音輸出緩存區(qū)交替讀取一個(gè)混音時(shí)長(zhǎng)的混音數(shù)據(jù)。較佳地,將語音數(shù)據(jù)存入解碼緩存區(qū)之前,進(jìn)一步包括當(dāng)參混終端切換時(shí),如果 出現(xiàn)終端切換的解碼緩存區(qū)中存在切換前終端的殘留語音數(shù)據(jù),則先初始化存在殘留數(shù)據(jù) 的解碼緩存區(qū),再存入切換后終端的解碼數(shù)據(jù);所述編碼組包步驟進(jìn)一步包括當(dāng)參混終端切換時(shí),對(duì)于切換的終端,如果切換前 對(duì)應(yīng)的混音輸出緩存區(qū)中存在殘留語音數(shù)據(jù),則執(zhí)行以下步驟A和B之一A、丟棄所述殘留數(shù)據(jù),并在編碼組包時(shí),在所述殘留語音數(shù)據(jù)的時(shí)間段補(bǔ)充靜音 包,再進(jìn)行編碼組包處理;B、將所述殘留數(shù)據(jù)和切換后對(duì)應(yīng)的混音輸出緩存區(qū)中的語音數(shù)據(jù)拼接,再進(jìn)行編 碼組包處理。較佳地,所述拼包步驟進(jìn)一步包括對(duì)于幀長(zhǎng)與設(shè)定的混音時(shí)長(zhǎng)存在整數(shù)倍關(guān)系 的碼流,以混音時(shí)長(zhǎng)為單位進(jìn)行拼包處理,得到的每個(gè)語音包包含一個(gè)混音時(shí)長(zhǎng)的語音數(shù) 據(jù);所述編碼組包步驟進(jìn)一步包括對(duì)于幀長(zhǎng)與設(shè)定的混音時(shí)長(zhǎng)存在整數(shù)倍關(guān)系的碼 流,以混音時(shí)長(zhǎng)為單位進(jìn)行編碼組包處理,得到的每個(gè)編碼組包包含整數(shù)倍幀長(zhǎng)的混音數(shù) 據(jù)。本發(fā)明還提供了一種混音裝置,在各路碼流的幀長(zhǎng)存在非匹配關(guān)系時(shí),能夠減少 混音引入的系統(tǒng)時(shí)延,提高視頻會(huì)議系統(tǒng)的實(shí)時(shí)性。
該混音裝置包括拼包模塊、解碼模塊、輸入緩存通道、混音模塊、輸出緩存通道和 編碼組包模塊;所述拼包模塊,用于對(duì)各參混終端的碼流進(jìn)行拼包處理;所述拼包步驟包括對(duì) 于幀長(zhǎng)與混音時(shí)長(zhǎng)不存在整數(shù)倍關(guān)系的碼流,以幀長(zhǎng)的整數(shù)倍為拼包單位進(jìn)行動(dòng)態(tài)拼包處 理;具體動(dòng)態(tài)拼包原則為針對(duì)同一終端本次參混后產(chǎn)生的碼流,如果能夠滿足第i個(gè)拼包 所包含的語音時(shí)長(zhǎng)與該碼流前i_l個(gè)拼包所包含的語音時(shí)長(zhǎng)之和Σ tpb等于混音時(shí)長(zhǎng)與i 的乘積Σ thy的條件,則按照Σ tpb = Σ thy的關(guān)系構(gòu)造第i個(gè)拼包;否則,按照Σ tpb >Σ thy 且I Σ tpb- Σ thy|小于該碼流的一個(gè)幀長(zhǎng)的關(guān)系構(gòu)造第i個(gè)拼包;所述混音時(shí)長(zhǎng)小于預(yù)設(shè)的人耳可承受語音延時(shí)對(duì)應(yīng)的混音時(shí)長(zhǎng)邊界值,且大于各 參混碼流的幀長(zhǎng)最大者;所述解碼模塊,用于調(diào)用解碼器對(duì)所述拼包模塊得到的拼包后的碼流進(jìn)行解碼, 將解碼獲得的語音數(shù)據(jù)放入各參混終端對(duì)應(yīng)的輸入緩存通道;每個(gè)輸入緩存通道的容量大于或等于一個(gè)混音時(shí)長(zhǎng)的數(shù)據(jù)量,且能夠容納下任意 一個(gè)拼包;所述混音模塊,用于從各輸入緩存通道分別讀取一個(gè)混音時(shí)長(zhǎng)的語音數(shù)據(jù)進(jìn)行混 音處理,將混音得到的混音數(shù)據(jù)分別存入各終端對(duì)應(yīng)的輸出緩存通道;每個(gè)輸入緩存通道的容量大于或等于一個(gè)混音時(shí)長(zhǎng)的數(shù)據(jù)量,且能夠容納下任意 一個(gè)拼包;所述編碼組包模塊,用于調(diào)用編碼器對(duì)各輸出緩存通道中的混音數(shù)據(jù)進(jìn)行編碼組 包處理;所述編碼組包步驟包括對(duì)于幀長(zhǎng)與設(shè)定的混音時(shí)長(zhǎng)不存在整數(shù)倍關(guān)系的碼流, 以幀長(zhǎng)的整數(shù)倍為編碼組包單位進(jìn)行動(dòng)態(tài)編碼組包處理;具體動(dòng)態(tài)編碼組包原則為針對(duì) 同一終端本次參混后產(chǎn)生的碼流,如果能夠滿足第i個(gè)編碼組包所包含的語音時(shí)長(zhǎng)與該碼 流前i-Ι個(gè)編碼組包所包含的語音時(shí)長(zhǎng)之和Σ tzb大于混音時(shí)長(zhǎng)與i的乘積Σ thy的條件,則 按照Σ tzb = Σ thy的關(guān)系構(gòu)造第i個(gè)編碼組包;否則,按照Σ tzb < Σ thy且I Σ tzb- Σ thy 小于該碼流的一個(gè)幀長(zhǎng)的關(guān)系構(gòu)造第i個(gè)編碼組包。較佳地,所述混音時(shí)長(zhǎng)盡可能多的與各參混終端所采用碼流的幀長(zhǎng)成整倍數(shù)關(guān)系。較佳地,每個(gè)輸入緩存通道為一個(gè)解碼緩存區(qū);一個(gè)解碼緩存區(qū)容納兩個(gè)混音時(shí) 長(zhǎng)的語音數(shù)據(jù);所述解碼模塊在開始向一解碼緩存區(qū)存儲(chǔ)相應(yīng)碼流的拼包時(shí),初始化解碼緩存 區(qū),將相應(yīng)碼流的第1個(gè)拼包作為有效碼流保存到解碼緩存區(qū),并記錄有效碼流的起始地 址和結(jié)束地址;后續(xù)拼包以有效碼流的結(jié)束地址為起點(diǎn)存放,并更新有效碼流的結(jié)束地址; 如果解碼緩沖區(qū)滿,則循環(huán)存放;所述混音模塊,每次從解碼緩存區(qū)讀取數(shù)據(jù)時(shí),從有效碼流的起始地址讀取一個(gè) 混音時(shí)長(zhǎng)的語音數(shù)據(jù),被讀取的語音數(shù)據(jù)變?yōu)闊o效碼流,更新有效碼流的起始地址。較佳地,每個(gè)輸出緩存通道包括兩個(gè)混音輸出緩存區(qū);每個(gè)混音輸出緩存區(qū)容納 一個(gè)混音時(shí)長(zhǎng)的語音數(shù)據(jù);所述混音模塊將混音后輸出的混音數(shù)據(jù)交替存放在兩個(gè)混音輸出緩存區(qū)內(nèi);所述編碼組包模塊從混音輸出緩存區(qū)讀取數(shù)據(jù)時(shí),交替地從兩個(gè)混音輸出緩存區(qū)讀取一個(gè)混音時(shí)長(zhǎng)的混音數(shù)據(jù)。較佳地,所述解碼模塊進(jìn)一步用于,如果檢測(cè)到參混終端切換,且出現(xiàn)終端切換的 解碼緩存區(qū)中存在切換前終端的殘留數(shù)據(jù),則先初始化存在殘留數(shù)據(jù)的解碼緩存區(qū),再存 入切換后終端的解碼數(shù)據(jù);所述編碼組包模塊進(jìn)一步用于,如果檢測(cè)到參混終端切換,對(duì)于切換的終端,如果 切換前對(duì)應(yīng)的混音輸出緩存區(qū)中存在殘留數(shù)據(jù),則執(zhí)行以下步驟A和步驟B之一A、丟棄所述殘留數(shù)據(jù),并在所述殘留數(shù)據(jù)的時(shí)間段補(bǔ)充靜音包,再進(jìn)行編碼組包 處理;B、將所述殘留數(shù)據(jù)和切換后對(duì)應(yīng)的混音輸出緩存區(qū)中的語音數(shù)據(jù)拼接,再進(jìn)行編 碼組包處理。從以上技術(shù)方案可見,本發(fā)明選取混音時(shí)長(zhǎng)時(shí),沒有限制必須選用所有碼流幀長(zhǎng) 的公倍數(shù),因此就可以取一個(gè)合適的混音時(shí)長(zhǎng),使得混音時(shí)延在人耳可承受的范圍內(nèi),從而 解決了非匹配幀長(zhǎng)語音混音的切換延時(shí)問題,保證了系統(tǒng)的實(shí)時(shí)性。由于選取的混音時(shí)長(zhǎng)可能與個(gè)別碼流幀長(zhǎng)不成整數(shù)倍關(guān)系,對(duì)于這樣的碼流,本 發(fā)明在拼包時(shí)不以混音時(shí)長(zhǎng)為單位,而是以幀長(zhǎng)的整數(shù)倍為單位進(jìn)行拼包操作,由于有些 時(shí)候語音包長(zhǎng)度大于混音時(shí)長(zhǎng),因此差異部分需要有一個(gè)緩存空間,本發(fā)明采用具有裕量 的輸入緩存通道在編碼階段和混音階段之間進(jìn)行緩沖,解決語音包長(zhǎng)度與混音時(shí)長(zhǎng)不匹配 帶來的碼流對(duì)齊問題。同理,在編碼段,也存在編碼組包長(zhǎng)度與混音時(shí)長(zhǎng)不匹配的問題,同 樣采用具有裕量的輸出緩存通道解決。


圖1為現(xiàn)有技術(shù)MCU中的混音單元示意圖。圖2為現(xiàn)有技術(shù)中存在匹配關(guān)系的碼流A拼包結(jié)果和碼流B拼包結(jié)果。圖3為本發(fā)明混音方法的流程圖。圖4為本發(fā)明一實(shí)例的拼包示意圖。圖5為本發(fā)明一實(shí)例的拼包過程中累計(jì)拼包時(shí)長(zhǎng)與累計(jì)混音時(shí)長(zhǎng)周期性相等示 意6為本發(fā)明一實(shí)例的編碼組包示意圖。圖7為本發(fā)明一實(shí)例的拼包過程中累計(jì)組包時(shí)長(zhǎng)與累計(jì)混音時(shí)長(zhǎng)周期性相等示 意圖。圖8為本發(fā)明向解碼緩存區(qū)存儲(chǔ)數(shù)據(jù)的示意圖。圖9為參混終端切換的示意圖。圖10為本發(fā)明混音裝置的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面結(jié)合附圖并舉實(shí)施例,對(duì)本發(fā)明進(jìn)行詳細(xì)描述。本發(fā)明為一種混音方案,該混音方案可以應(yīng)用與MCU中,也可以應(yīng)用與任何執(zhí)行 混音處理的設(shè)備中。圖3示出了本發(fā)明混音方法的流程圖。如圖3所示,該方法包括
步驟301 確定混音時(shí)長(zhǎng),所述混音時(shí)長(zhǎng)小于預(yù)設(shè)的人耳可承受語音延時(shí)對(duì)應(yīng)的 混音時(shí)長(zhǎng)邊界值,且大于各參混碼流的幀長(zhǎng)最大者,而不必限定混音時(shí)長(zhǎng)必須是各碼流的 公倍數(shù)。通常當(dāng)混音時(shí)長(zhǎng)選擇小于IOOms時(shí),聽者不會(huì)感覺到明顯延時(shí),因此,人耳可承受 語音延時(shí)對(duì)應(yīng)的混音時(shí)長(zhǎng)邊界值可為100ms。當(dāng)然,較佳地混音時(shí)長(zhǎng)選擇方式是令混音時(shí)長(zhǎng)盡可能多的與各參混終端所采用 碼流的幀長(zhǎng)成整倍數(shù)關(guān)系。例如,在確定混音時(shí)長(zhǎng)時(shí),可以先考慮相互匹配的碼流,針對(duì)這 些碼流取一個(gè)最小公倍數(shù),然后只要保證該最小公倍數(shù)大于非匹配碼流的幀長(zhǎng)即可,否則 取最小公倍數(shù)的系數(shù),使得混音時(shí)長(zhǎng)滿足前述條件。假設(shè)碼流A和B采用g系列碼流協(xié)議,碼流A幀長(zhǎng)為10ms,碼流B幀長(zhǎng)為20ms, 碼流C采用mpeg系列碼流協(xié)議,且?guī)L(zhǎng)為2%is,則可以選擇混音時(shí)長(zhǎng)為30ms、40ms、50ms、 60ms等等??紤]到混音時(shí)長(zhǎng)盡可能多的與各幀長(zhǎng)成整倍數(shù)關(guān)系,60ms和40ms均為IOms和 20ms的整數(shù)倍,其中60ms又是g系列碼流協(xié)議定義的30ms幀長(zhǎng)的整數(shù)倍,因此較佳地,混 音時(shí)長(zhǎng)取60ms。
步驟302 對(duì)各參混終端的碼流進(jìn)行拼包處理。對(duì)于幀長(zhǎng)與設(shè)定的混音時(shí)長(zhǎng)存在整數(shù)倍關(guān)系的碼流,以混音時(shí)長(zhǎng)為單位進(jìn)行拼包 處理,得到的每個(gè)語音包包含一個(gè)混音時(shí)長(zhǎng)的語音數(shù)據(jù)。對(duì)于幀長(zhǎng)與混音時(shí)長(zhǎng)不存在整數(shù)倍關(guān)系的碼流,不以混音時(shí)長(zhǎng)為單位,而是以幀 長(zhǎng)的整數(shù)倍為單位進(jìn)行動(dòng)態(tài)拼包,具體動(dòng)態(tài)拼包原則為針對(duì)同一終端本次參混后產(chǎn)生的 碼流,令第i個(gè)拼包所包含的語音時(shí)長(zhǎng)與該碼流前i_l個(gè)拼包所包含的語音時(shí)長(zhǎng)之和大于 或等于混音時(shí)長(zhǎng)與i的乘積。假設(shè)當(dāng)前拼包的序號(hào)為i,則有如下關(guān)系
權(quán)利要求
1.一種語音信號(hào)的混音方法,其特征在于,確定混音時(shí)長(zhǎng),所述混音時(shí)長(zhǎng)小于預(yù)設(shè)的人 耳可承受語音延時(shí)對(duì)應(yīng)的混音時(shí)長(zhǎng)邊界值,且大于各參混碼流的幀長(zhǎng)最大者;混音過程包括對(duì)各參混終端的碼流進(jìn)行拼包處理;所述拼包步驟包括對(duì)于幀長(zhǎng)與混音時(shí)長(zhǎng)不存在 整數(shù)倍關(guān)系的碼流,以幀長(zhǎng)的整數(shù)倍為拼包單位進(jìn)行動(dòng)態(tài)拼包處理;具體動(dòng)態(tài)拼包原則為 針對(duì)同一終端本次參混后產(chǎn)生的碼流,如果能夠滿足第i個(gè)拼包所包含的語音時(shí)長(zhǎng)與該碼 流前i_l個(gè)拼包所包含的語音時(shí)長(zhǎng)之和Σ tpb等于混音時(shí)長(zhǎng)與i的乘積Σ thy的條件,則按 照Σ tpb =Σ thy的關(guān)系構(gòu)造第i個(gè)拼包;否則,按照Σ tpb >Σ、且I Σ tpb- Σ thy|小于 該碼流的一個(gè)幀長(zhǎng)的關(guān)系構(gòu)造第i個(gè)拼包;調(diào)用解碼器對(duì)拼包后的碼流進(jìn)行解碼,將解碼獲得的語音數(shù)據(jù)放入各參混終端對(duì)應(yīng)的 輸入緩存通道;每個(gè)輸入緩存通道的容量大于或等于一個(gè)混音時(shí)長(zhǎng)的數(shù)據(jù)量,且能夠容納 下任意一個(gè)拼包;從各輸入緩存通道分別讀取一個(gè)混音時(shí)長(zhǎng)的語音數(shù)據(jù)進(jìn)行混音處理,將混音得到的混 音數(shù)據(jù)分別存入各終端對(duì)應(yīng)的輸出緩存通道;每個(gè)輸出緩存通道的容量大于或等于一個(gè)混 音時(shí)長(zhǎng)的數(shù)據(jù)量,且能夠容納下任意一個(gè)拼包;調(diào)用編碼器對(duì)各輸出緩存通道中的混音數(shù)據(jù)進(jìn)行編碼組包處理;所述編碼組包步驟包 括對(duì)于幀長(zhǎng)與設(shè)定的混音時(shí)長(zhǎng)不存在整數(shù)倍關(guān)系的碼流,以幀長(zhǎng)的整數(shù)倍為組包單位進(jìn) 行動(dòng)態(tài)編碼組包處理;具體動(dòng)態(tài)編碼組包原則為針對(duì)同一終端本次參混后產(chǎn)生的碼流, 如果能夠滿足第i個(gè)編碼組包所包含的語音時(shí)長(zhǎng)與該碼流前i_l個(gè)編碼組包所包含的語音 時(shí)長(zhǎng)之和Σ tzb大于混音時(shí)長(zhǎng)與i的乘積Σ thy的條件,則按照Σ tzb =Σ thy的關(guān)系構(gòu)造第 i個(gè)編碼組包;否則,按照Σ tzb<E、且I Σ tzb-E thy小于該碼流的一個(gè)幀長(zhǎng)的關(guān)系構(gòu) 造第i個(gè)編碼組包。
2.如權(quán)利要求1所述的方法,其特征在于,所述混音時(shí)長(zhǎng)盡可能多的與各參混終端所 采用碼流的幀長(zhǎng)成整倍數(shù)關(guān)系。
3.如權(quán)利要求2所述的方法,其特征在于,當(dāng)參混終端中包括采用G系列碼流協(xié)議和 MPEG系列碼流協(xié)議的終端時(shí),所述混音時(shí)長(zhǎng)取60ms。
4.如權(quán)利要求1所述的方法,其特征在于,所述解碼步驟包括每個(gè)輸入緩存通道為一 個(gè)解碼緩存區(qū);一個(gè)解碼緩存區(qū)容納兩個(gè)混音時(shí)長(zhǎng)的語音數(shù)據(jù);在開始向一解碼緩存區(qū)存儲(chǔ)相應(yīng)碼流的拼包時(shí),初始化解碼緩存區(qū),將相應(yīng)碼流的第1 個(gè)拼包作為有效碼流保存到解碼緩存區(qū),并記錄有效碼流的起始地址和結(jié)束地址;后續(xù)拼 包以有效碼流的結(jié)束地址為起點(diǎn)存放,并更新有效碼流的結(jié)束地址;如果解碼緩沖區(qū)滿,則 循環(huán)存放;每次進(jìn)行混音時(shí),從有效碼流的起始地址讀取一個(gè)混音時(shí)長(zhǎng)的語音數(shù)據(jù),被讀取 的語音數(shù)據(jù)變?yōu)闊o效碼流,更新有效碼流的起始地址。
5.如權(quán)利要求4所述的方法,其特征在于,每個(gè)輸出緩存通道包括兩個(gè)混音輸出緩存 區(qū);每個(gè)混音輸出緩存區(qū)容納一個(gè)混音時(shí)長(zhǎng)的語音數(shù)據(jù);混音后輸出的混音數(shù)據(jù)交替存放在兩個(gè)混音輸出緩存區(qū)內(nèi);進(jìn)行編碼時(shí),從兩個(gè)混音 輸出緩存區(qū)交替讀取一個(gè)混音時(shí)長(zhǎng)的混音數(shù)據(jù)。
6.如權(quán)利要求5所述的方法,其特征在于,將語音數(shù)據(jù)存入解碼緩存區(qū)之前,進(jìn)一步包 括當(dāng)參混終端切換時(shí),如果出現(xiàn)終端切換的解碼緩存區(qū)中存在切換前終端的殘留語音數(shù)據(jù),則先初始化存在殘留數(shù)據(jù)的解碼緩存區(qū),再存入切換后終端的解碼數(shù)據(jù);所述編碼組包步驟進(jìn)一步包括當(dāng)參混終端切換時(shí),對(duì)于切換的終端,如果切換前對(duì)應(yīng) 的混音輸出緩存區(qū)中存在殘留語音數(shù)據(jù),則執(zhí)行以下步驟A和B之一A、丟棄所述殘留數(shù)據(jù),并在編碼組包時(shí),在所述殘留語音數(shù)據(jù)的時(shí)間段補(bǔ)充靜音包,再 進(jìn)行編碼組包處理;B、將所述殘留數(shù)據(jù)和切換后對(duì)應(yīng)的混音輸出緩存區(qū)中的語音數(shù)據(jù)拼接,再進(jìn)行編碼組 包處理。
7.如權(quán)利要求1所述的方法,其特征在于,所述拼包步驟進(jìn)一步包括對(duì)于幀長(zhǎng)與設(shè)定 的混音時(shí)長(zhǎng)存在整數(shù)倍關(guān)系的碼流,以混音時(shí)長(zhǎng)為單位進(jìn)行拼包處理,得到的每個(gè)語音包 包含一個(gè)混音時(shí)長(zhǎng)的語音數(shù)據(jù);所述編碼組包步驟進(jìn)一步包括對(duì)于幀長(zhǎng)與設(shè)定的混音時(shí)長(zhǎng)存在整數(shù)倍關(guān)系的碼流, 以混音時(shí)長(zhǎng)為單位進(jìn)行編碼組包處理,得到的每個(gè)編碼組包包含整數(shù)倍幀長(zhǎng)的混音數(shù)據(jù)。
8.一種語音信號(hào)的混音裝置,其特征在于,該混音裝置包括拼包模塊、解碼模塊、輸入 緩存通道、混音模塊、輸出緩存通道和編碼組包模塊;所述拼包模塊,用于對(duì)各參混終端的碼流進(jìn)行拼包處理;所述拼包步驟包括對(duì)于幀 長(zhǎng)與混音時(shí)長(zhǎng)不存在整數(shù)倍關(guān)系的碼流,以幀長(zhǎng)的整數(shù)倍為拼包單位進(jìn)行動(dòng)態(tài)拼包處理; 具體動(dòng)態(tài)拼包原則為針對(duì)同一終端本次參混后產(chǎn)生的碼流,如果能夠滿足第i個(gè)拼包所 包含的語音時(shí)長(zhǎng)與該碼流前i_l個(gè)拼包所包含的語音時(shí)長(zhǎng)之和Σ tpb等于混音時(shí)長(zhǎng)與i的 乘積Σ thy的條件,則按照Σ tpb =Σ thy的關(guān)系構(gòu)造第i個(gè)拼包;否則,按照Σ tpb >Σ thy 且I Σ tpb- Σ thy|小于該碼流的一個(gè)幀長(zhǎng)的關(guān)系構(gòu)造第i個(gè)拼包;所述混音時(shí)長(zhǎng)小于預(yù)設(shè)的人耳可承受語音延時(shí)對(duì)應(yīng)的混音時(shí)長(zhǎng)邊界值,且大于各參混 碼流的幀長(zhǎng)最大者;所述解碼模塊,用于調(diào)用解碼器對(duì)所述拼包模塊得到的拼包后的碼流進(jìn)行解碼,將解 碼獲得的語音數(shù)據(jù)放入各參混終端對(duì)應(yīng)的輸入緩存通道;每個(gè)輸入緩存通道的容量大于或等于一個(gè)混音時(shí)長(zhǎng)的數(shù)據(jù)量,且能夠容納下任意一個(gè) 拼包;所述混音模塊,用于從各輸入緩存通道分別讀取一個(gè)混音時(shí)長(zhǎng)的語音數(shù)據(jù)進(jìn)行混音處 理,將混音得到的混音數(shù)據(jù)分別存入各終端對(duì)應(yīng)的輸出緩存通道;每個(gè)輸入緩存通道的容量大于或等于一個(gè)混音時(shí)長(zhǎng)的數(shù)據(jù)量,且能夠容納下任意一個(gè) 拼包;所述編碼組包模塊,用于調(diào)用編碼器對(duì)各輸出緩存通道中的混音數(shù)據(jù)進(jìn)行編碼組包處 理;所述編碼組包步驟包括對(duì)于幀長(zhǎng)與設(shè)定的混音時(shí)長(zhǎng)不存在整數(shù)倍關(guān)系的碼流,以幀 長(zhǎng)的整數(shù)倍為編碼組包單位進(jìn)行動(dòng)態(tài)編碼組包處理;具體動(dòng)態(tài)編碼組包原則為針對(duì)同一 終端本次參混后產(chǎn)生的碼流,如果能夠滿足第i個(gè)編碼組包所包含的語音時(shí)長(zhǎng)與該碼流前 i-Ι個(gè)編碼組包所包含的語音時(shí)長(zhǎng)之和Σ tzb大于混音時(shí)長(zhǎng)與i的乘積Σ thy的條件,則按 照Σ tzb =Σ thy的關(guān)系構(gòu)造第i個(gè)編碼組包;否則,按照Σ tzb <Σ、且I Σ tzb- Σ thy 小于該碼流的一個(gè)幀長(zhǎng)的關(guān)系構(gòu)造第i個(gè)編碼組包。
9.如權(quán)利要求8所述的混音裝置,其特征在于,所述混音時(shí)長(zhǎng)盡可能多的與各參混終 端所采用碼流的幀長(zhǎng)成整倍數(shù)關(guān)系。
10.如權(quán)利要求8所述的混音裝置,其特征在于,每個(gè)輸入緩存通道為一個(gè)解碼緩存 區(qū);一個(gè)解碼緩存區(qū)容納兩個(gè)混音時(shí)長(zhǎng)的語音數(shù)據(jù);所述解碼模塊在開始向一解碼緩存區(qū)存儲(chǔ)相應(yīng)碼流的拼包時(shí),初始化解碼緩存區(qū),將 相應(yīng)碼流的第1個(gè)拼包作為有效碼流保存到解碼緩存區(qū),并記錄有效碼流的起始地址和結(jié) 束地址;后續(xù)拼包以有效碼流的結(jié)束地址為起點(diǎn)存放,并更新有效碼流的結(jié)束地址;如果 解碼緩沖區(qū)滿,則循環(huán)存放;所述混音模塊,每次從解碼緩存區(qū)讀取數(shù)據(jù)時(shí),從有效碼流的起始地址讀取一個(gè)混音 時(shí)長(zhǎng)的語音數(shù)據(jù),被讀取的語音數(shù)據(jù)變?yōu)闊o效碼流,更新有效碼流的起始地址。
11.如權(quán)利要求8所述的混音裝置,其特征在于,每個(gè)輸出緩存通道包括兩個(gè)混音輸出 緩存區(qū);每個(gè)混音輸出緩存區(qū)容納一個(gè)混音時(shí)長(zhǎng)的語音數(shù)據(jù);所述混音模塊將混音后輸出的混音數(shù)據(jù)交替存放在兩個(gè)混音輸出緩存區(qū)內(nèi); 所述編碼組包模塊從混音輸出緩存區(qū)讀取數(shù)據(jù)時(shí),交替地從兩個(gè)混音輸出緩存區(qū)讀取 一個(gè)混音時(shí)長(zhǎng)的混音數(shù)據(jù)。
12.如權(quán)利要求8所述的混音裝置,其特征在于,所述解碼模塊進(jìn)一步用于,如果檢測(cè) 到參混終端切換,且出現(xiàn)終端切換的解碼緩存區(qū)中存在切換前終端的殘留數(shù)據(jù),則先初始 化存在殘留數(shù)據(jù)的解碼緩存區(qū),再存入切換后終端的解碼數(shù)據(jù);所述編碼組包模塊進(jìn)一步用于,如果檢測(cè)到參混終端切換,對(duì)于切換的終端,如果切換 前對(duì)應(yīng)的混音輸出緩存區(qū)中存在殘留數(shù)據(jù),則執(zhí)行以下步驟A和步驟B之一A、丟棄所述殘留數(shù)據(jù),并在所述殘留數(shù)據(jù)的時(shí)間段補(bǔ)充靜音包,再進(jìn)行編碼組包處理;B、將所述殘留數(shù)據(jù)和切換后對(duì)應(yīng)的混音輸出緩存區(qū)中的語音數(shù)據(jù)拼接,再進(jìn)行編碼組 包處理。
全文摘要
本發(fā)明公開了一種混音方法和一種混音裝置,所述方法包括設(shè)置混音時(shí)長(zhǎng),所述混音時(shí)長(zhǎng)小于預(yù)設(shè)的人耳可承受語音延時(shí)對(duì)應(yīng)的混音時(shí)長(zhǎng)邊界值,且大于各參混碼流的幀長(zhǎng)最大者;對(duì)于幀長(zhǎng)與混音時(shí)長(zhǎng)不存在整數(shù)倍關(guān)系的碼流,根據(jù)動(dòng)態(tài)拼包原則進(jìn)行拼包處理,動(dòng)態(tài)拼包原則為針對(duì)同一終端本次參混后產(chǎn)生的碼流,令n個(gè)拼包所包含的語音時(shí)長(zhǎng)大于或等于混音時(shí)長(zhǎng)與n的乘積。使用本發(fā)明能夠減少混音引入的系統(tǒng)時(shí)延,提高視頻會(huì)議系統(tǒng)的實(shí)時(shí)性。
文檔編號(hào)H04N7/15GK102045461SQ20091023581
公開日2011年5月4日 申請(qǐng)日期2009年10月9日 優(yōu)先權(quán)日2009年10月9日
發(fā)明者畢永建, 鄧凌 申請(qǐng)人:杭州華三通信技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
奉新县| 浙江省| 农安县| 新丰县| 麟游县| 绥阳县| 股票| 南丰县| 安化县| 新丰县| 柳州市| 玉屏| 肇州县| 瑞丽市| 泸西县| 正宁县| 阿勒泰市| 永兴县| 阿拉善右旗| 新田县| 黄大仙区| 郁南县| 平原县| 佛学| 清远市| 青岛市| 开鲁县| 阳新县| 精河县| 松原市| 获嘉县| 贵港市| 宣汉县| 任丘市| 巩义市| 麦盖提县| 宁武县| 思南县| 梁平县| 丹江口市| 延长县|