專利名稱:一種提高網絡音頻主觀質量的方法
技術領域:
本發明涉及網絡通信領域,尤其涉及一種提高網絡音頻主觀質量的方法。
背景技術:
目前基于ip網絡的傳輸協議最主要有tcp協議和udp協議,tcp協議是有連接的可靠傳輸,而udp協議是無連接的不可靠傳輸。相對而言,udp協議具有簡單、快速、實時的優點,所以,對于實時性要求很高的網絡音頻傳輸,一般采用udp協議進行傳輸,具體傳輸模式如下發送端根據一定的采樣率定時采取音頻數據,通過ip網絡的udp協議進行網絡傳輸,接受端將接受到的音頻數據按照同樣的采樣率進行播放。然而,由于udp協議本身具有可靠性低的缺陷,音頻數據在網絡傳輸的過程中經常會發生數據丟失、抖動、順序錯亂等等,造成了網絡音頻質量變差,接收方對接收到的音頻的主觀感受非常不好,甚至無法聽清(也可以理解為音頻的主觀質量很低)。 在現有的網絡狀況和udp協議網絡傳輸可靠性低的情況下,業界采用了很多方法來提高音頻的主觀質量,盡量使音頻接收方聽到的音頻更為流暢,現有的比較好的技術方案主要是采用了具有前緩沖功能的緩沖區來提高音頻的質量,把接受到的音頻數據放到緩沖區中,數據到達某個門檻值的時候就開始播放,這在一定程度上改善了音頻斷斷續續的問題。但是,這種方式僅僅是在開始播放時進行了預緩沖,在播放過程中一旦緩沖區空,就只能等待數據;而另一方面,一旦當緩沖區滿了,就會丟失數據。在丟失數據和等待數據時,都會出現斷音,而斷音經常伴隨著雜音,因此,音頻的主觀質量還是不盡人意。
發明內容
本發明的目的在于提供一種提高網絡音頻主觀質量的方法,旨在解決現有技術中
存在的由于網絡音頻傳輸質量較差而導致的接收方主觀感受不良的缺陷。 本發明是這樣實現的,一種提高網絡音頻主觀質量的方法,其包括以下步驟a:根
據緩沖區中音頻數據塊的數目判斷是否需要進入主動丟包模式,如果需要進入主動丟包模
式,則停止將接收到的音頻數據放入到數據緩沖區中,直至退出主動丟包模式。
所述方法進一步包括以下步驟b :根據緩沖區中音頻數據塊的數目判斷是否需要
進入預緩沖模式,如果需要進入預緩沖模式,則停止播放并將接收到的音頻數據塊放入到
緩沖區中,直至退出預緩沖模式。
在所述步驟b中設置一個預緩沖門檻值,當數據緩沖區中數據塊的數目為零時,
進入預緩沖模式;如果數據塊的數目大于等于預緩沖門檻值則退出預緩沖模式。 所述緩沖區容量為8個數據塊,每個數據塊大小為1024字節,預緩沖門檻值為2
個數據塊。 在所述步驟a中設置一個主動丟包門檻值,當數據緩沖區中數據塊的數目等于緩沖區容量時,進入主動丟包模式;如果數據塊的數目小于等于主動丟包門檻值則退出主動丟包模式。
所述緩沖區容量為8個數據塊,每個數據塊大小為1024字節,主動丟包門檻值為3個數據塊。 所述步驟b中退出預緩沖模式后,立即開始播放音頻數據。 所述步驟a中退出主動丟包模式后,將接收到的音頻數據存入緩沖區中。 本發明還提供一種提高網絡音頻主觀質量的方法,其包括以下步驟 步驟l,根據緩沖區中音頻數據塊的數目判斷是否需要進入預緩沖模式,如果需要
進入預緩沖模式,則停止播放并將接收到的音頻數據塊放入到緩沖區中,直至退出預緩沖模式。 步驟2,根據緩沖區中音頻數據塊的數目判斷是否需要進入主動丟包模式,如果需要進入主動丟包模式,則停止將接收到的音頻數據放入到數據緩沖區中,直至退出主動丟包模式。 在所述步驟1中設置一個預緩沖門檻值,在所述步驟2中設置一個主動丟包門檻
值,當數據緩沖區中數據塊的數目為零時,進入預緩沖模式;如果數據塊的數目大于等于預
緩沖門檻值則退出預緩沖模式;當數據緩沖區中數據塊的數目等于緩沖區容量時,進入主
動丟包模式;如果數據塊的數目小于等于主動丟包門檻值則退出主動丟包模式。 本發明提供的提高網絡音頻主觀質量的方法通過采用主動丟包和預緩沖的方式,
避免了網絡音頻傳輸時頻繁斷音所帶來的傳輸質量下降,改良了接收方對網絡音頻的主觀感受。
圖1是本發明提高網絡音頻主觀質量的方法較佳實施例的流程 圖2是采用本發明所述預緩沖模式后的音頻傳輸示意 圖3是采用本發明所述主動丟包模式后的音頻傳輸示意圖。
具體實施例方式
為了使本發明的目的、技術方案及優點更加清楚明白,以下結合實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。 與現有技術相比,本發明提供的提高網絡音頻主觀質量的方法的主要特點是增加
了預緩沖模式和主動丟包模式,使得接收方所實時聽到的音頻相對流暢易懂。 所述預緩沖模式是指在緩沖區空時,設置一個預緩沖標志,進入預緩沖模式,即,
將接受到的數據放入緩沖區,暫不播放。當緩沖區的音頻數據達到一定塊數時,退出預緩沖
模式,才開始播放緩沖區內的音頻數據。 所述主動丟包模式是指在緩沖區滿時,設置一個主動丟包標志,進入主動丟包模
式,B卩,在播放的過程中,將接收到的數據主動丟掉,即使緩沖區有足夠的空間可存放這些
數據,也必須主動丟棄這些數據,直到緩沖區出現一定數量的空塊時才開始重新接收并存
儲數據,或者說,緩沖區在不斷播放的情況下,只有當只剩下幾塊音頻數據時,才退出主動
丟包模式,開始將接受到的音頻數據放入緩沖區。 上述預緩沖模式和主動丟包模式涉及以下幾個要點
1、選擇合適的緩沖區大小、塊大小和塊數目緩沖區不能設置得太大,否則延時也大,反應遲鈍;緩沖區也不能設置得太小,否則在網絡抖動時,數據丟失增加。緩沖區的設置一般采用多塊的方式。每塊為2的冪的字節數。本實施例將緩沖區設置成8塊,每塊設置為1024字節。 2、設置合適的預緩沖門檻值根據緩沖區塊數和延時要求,選擇合適的預緩沖門檻值,太大,延時就大,反應遲鈍,緩沖區易滿,造成丟包的現象;太小,緩沖區容易空,造成斷續的現象。本實施例將預緩沖門檻值設值為2,當緩沖區內的音頻數據為空時,進入預緩沖模式,當緩沖區內的音頻數據大于等于2塊時退出預緩沖模式。 3、設置合適的主動丟包門檻值,根據緩沖區塊數和延時的要求,選擇合適的數值,太大,延時就大,反應遲鈍,緩沖區易滿,造成丟包的現象;太小,緩沖區容易空,造成斷續的現象。本實施例將主動丟包門檻值設置為3,當緩沖區滿時進入主動丟包模式,當緩沖區內的音頻數據小于等于3塊數據時,退出主動丟包模式。 需要強調的是,預緩沖門檻值和主動丟包門檻值可以相同,也可以不同。 以下根據上述的預緩沖模式和主動丟包模式,結合圖1具體說明本發明提高網絡
音頻主觀質量的方法較佳實施例的數據塊處理的流程 網絡音頻傳輸開始后,在步驟10中,首先對系統進行初始化并將預緩沖標志pre—buf置零,表示當前不進行預緩沖,主動丟包標志dismiss置零,表示當前不進行主動丟包。在步驟11中等待接收一塊音頻數據,接收到音頻數據之后,在步驟12中查看緩沖區的數據塊數K,在步驟13中判斷K是否等于零,如果K等于零,則表示緩沖區為空,執行步驟131,停止播放,并將預緩沖標志pre—buf置l,進入預緩沖模式,然后執行步驟17,將接收到的數據塊放入緩沖區后返回步驟11。如果步驟13中判斷結果為否,即K不等于零,則執行步驟14,判斷預緩沖標志pre_bUf是否等于1,即是否已經進入了預緩沖模式,如果預緩沖標志為1,則表示已經進入了預緩沖模式,執行步驟141,判斷緩沖區的數據塊數K是否大于等于預緩沖門檻值,本實施例中預緩沖門檻值為2,如果K小于2,則表示小于預緩沖門檻值,執行步驟17,將數據放入緩沖區,如果K大于等于2,則表示已經超過了預緩沖門檻值,執行步驟142,開始播放音頻文件并將預緩沖標志pre_buf置零,退出預緩沖模式,然后繼續執行步驟17。 如果步驟14的判斷結果為否,即當前未處于預緩沖模式中,則繼續執行步驟15,判斷主動丟包標志dismiss是否為1以確定當前是否處于主動丟包模式中,如果步驟15的判斷結果為否(即當前不處于主動丟包模式中),則執行步驟16,判斷緩沖區是否已滿,即數據塊數K是否等于緩沖區容量,本實施例中緩沖區容量為8塊數據,如果緩沖區未滿,則執行步驟7,將接收到的數據塊放入緩沖區,如果緩沖區已滿,則在步驟161中進入主動丟包模式,將收到的數據丟掉并將主動丟包標志置l,然后返回步驟11。如果步驟15的判斷結果為是,則執行步驟151,判斷緩沖區的數據塊數K是否小于等于主動丟包門檻值,本實施例中主動丟包門檻值為3,如果K大于3,表示當前需要主動丟包,則返回步驟11,而當前接收到的音頻數據不放入到緩沖區中,如果K小于等于3,表示緩沖區中的數據塊數已經低于主動丟包門檻值,則執行步驟152,退出主動丟包模式并將主動丟包標志dismiss置零,然后進入步驟17,將數據放入緩沖區后返回步驟11。 通過上述實施例,本發明提高網絡音頻主觀質量的方法可以總結為以下幾個步驟 步驟l,根據緩沖區中音頻數據塊的數目判斷是否需要進入預緩沖模式,如果需要 進入預緩沖模式,則停止播放并將接收到的音頻數據塊放入到緩沖區中,直至退出預緩沖 模式; 步驟2,根據緩沖區中音頻數據塊的數目判斷是否需要進入主動丟包模式,如果需 要進入主動丟包模式,則停止將接收到的音頻數據放入到數據緩沖區中,直至退出主動丟 包模式。 當然,步驟1和步驟2是沒有必然的先后順序的。步驟1可以通過設置預緩沖門 檻值來實現,當數據緩沖區中數據塊的數目為零即緩沖區為空時,進入預緩沖模式;如果數 據塊的數目大于預緩沖門檻值則退出預緩沖模式,開始播放音頻數據。同樣的,步驟2也可 以通過設置主動丟包門檻值來實現,當數據緩沖區中數據塊的數目等于緩沖區塊數即緩沖 區滿時,則進入主動丟包模式;如果數據塊的數目小于等于主動丟包門檻值則退出主動丟 包模式,開始接收數據。 以下舉例說明采用本發明提高網絡音頻主觀質量的方法之后所得到的效果。結合 參見圖2中所示,圖2揭示了采用本發明所述的預緩沖模式后帶來的網絡音頻傳輸質量的 改進。如果只有前緩沖而沒有本發明所述的預緩沖模式,則在開始時,緩沖2塊數據,并在 128ms開始播放,有3塊數據,假設數據塊3,4、5丟掉,在320ms播完,緩沖區空,斷音l,等 待數據,在385ms播數據塊6,在385+64 = 449ms播完,斷音2,等待數據,在450ms播數據 塊7,在450+64 = 514ms播完,斷音3,在515ms播數據塊8,在515+64 = 579ms播完,斷音 4,在580ms播數據塊9,在580+64 = 644ms播完,斷音5,在650播數據塊10,在650+64 = 714ms播完,斷音6,在740ms播數據塊11,在740+64 = 804ms播完,斷音7,在836ms播數 據塊12,在836+64 = 900ms播完,斷音8,在930ms播數據塊13,在930+64 = 994ms播完, 斷音9,在1025ms播數據塊14,在1025+64 = 1089ms播完,斷音10,在1090ms播數據塊15, 在1090+64 = 1154ms播完前,數據塊16進入,接著播塊16,在1090+2*64 = 1218播完,斷 音ll,在1254播數據塊18。在這段時間內有11處斷音和雜音,聲音效果差。
而在本發明的預緩沖模式下,在128ms開始播放,有三塊數據,在320ms播完,同樣 假設數據塊3、4、5丟掉了,緩沖區空,斷音l,進入預緩沖1,數據塊6、7、8在515ms開始播 放,在515+3*64 = 707ms播完之前,數據塊9、 10進入,在707+2*64 = 835ms播完之前,數 據塊11進入,在835+64 = 899ms播完前,數據塊12進入,在899+64 = 963ms播完前,數據 塊13進入,在963+64 = 1027ms播完前,數據塊14進入,在1027+64 = 1091ms播完前,數 據塊15進入,在1091+64 = 1155ms播完前,數據塊16進入,在1155+64 = 1219ms播完,斷 音2,數據塊17、 18進入預緩沖2,在這段時間只有兩處斷音。 顯然,采用本發明所述的預緩沖模式后,在進入預緩沖時,有斷音l,時間較長,第 三塊與第一塊的時間差,網絡傳輸的時間是不確定的,這個時間也是不確定的,但是避免了 后面的斷音2、3、4、5、6、7、8、9、10變9次空為一次空,9次斷音為一次斷音;斷音2等價于 現有技術中的斷音ll,進入預緩沖2,避免后面可能出現的網絡抖動,有效地提高了音頻接 收方所得到的音頻的主觀質量,改良了音頻接收方的聽覺體驗。 結合圖3中所示,圖3揭示了采用本發明所述的主動丟包模式后所帶來的音頻傳 輸質量的改進如果沒有本發明所述的主動丟包模式,則每次緩沖區滿就開始丟包,當數據
6塊0、 1、2進入時,在8ms開始播放,在8+64 = 72ms第一塊播完前,數據塊3, 4, 5, 6, 7進入, 當數據塊到8到來時,緩沖區滿,丟失數據塊8,產生斷音1,數據塊9到來時,緩沖區空一 塊,可以放入,在8+2*64 = 136ms第二塊播完前,數據塊10來時,緩沖區滿,丟,斷音2,數 據塊11到來時,可以進入,在8+3*64 = 200ms第三塊播完前,數據塊12丟,斷音3,數據塊 13可以進入,在8+4*64 = 264ms第四塊播完前,數據塊14丟,斷音4,數據塊15可以進入, 在8+5*64 = 328ms第五塊播完前,數據塊16丟,斷音5,數據塊17可以進入,在8+6*64 = 392ms第六塊播完前,數據塊18丟,斷音6,數據塊19可以進入,在8+7*64 = 456ms第七塊 播完前,數據塊20丟,斷音7,數據塊21可以進入,在8+8*64 = 520ms第八塊播完前,數據 塊22丟,斷音8,數據塊23可以進入。這段時間有八次斷音。 而如果采用了本發明所述的主動丟包模式,在數據塊8到來時,進入主動丟包模 式,在8+5*64 = 328ms第5數據塊播放前,數據塊8, 9, 10, 11, 12, 13, 14, 15, 16都丟掉,斷 音1,數據塊17到來時,緩沖區只有3塊數據,退出丟包機制,數據塊17, 18, 19, 20, 21都可 以進入,數據塊22在510ms來時,數據塊6, 7都播完,可以進入,數據塊23也可以進入。這 段時間只出現了一次較長時間320ms的斷音1。 顯然,上述過程在緩沖區滿時,進入主動丟包模式,在此后的320ms期間到來的所 有數據塊都丟掉,320ms后緩沖區只有3塊數據時退出丟包機制,使緩沖區處于最佳狀態, 可以容忍較多的丟包和較大的網絡抖動,采用一次丟9塊數據,避免后面8次丟數據所帶來 的8次斷音。而斷音時經常伴隨著雜音,斷音會使說話不連貫,難以聽懂對方的講話,本發 明明顯地減少了斷音次數,有效地提高了音頻主觀質量。 以上所述僅為本發明的較佳實施例而已,并不用以限制本發明。凡在本發明的精 神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。
權利要求
一種提高網絡音頻主觀質量的方法,其特征在于包括以下步驟a根據緩沖區中音頻數據塊的數目判斷是否需要進入主動丟包模式,如果需要進入主動丟包模式,則停止將接收到的音頻數據放入到數據緩沖區中,直至退出主動丟包模式。
2. 根據權利要求1所述的提高網絡音頻主觀質量的方法,其特征在于所述方法進一步包括以下步驟b:根據緩沖區中音頻數據塊的數目判斷是否需要進入預緩沖模式,如果需要進入預緩沖模式,則停止播放并將接收到的音頻數據塊放入到緩沖區中,直至退出預緩沖模式。
3. 根據權利要求2所述的提高網絡音頻主觀質量的方法,其特征在于在所述步驟b中設置一個預緩沖門檻值,當數據緩沖區中數據塊的數目為零時,進入預緩沖模式;如果數據塊的數目大于等于預緩沖門檻值則退出預緩沖模式。
4. 根據權利要求3所述的提高網絡音頻主觀質量的方法,其特征在于所述緩沖區容量為8個數據塊,每個數據塊大小為1024字節,預緩沖門檻值為2個數據塊。
5. 根據權利要求1所述的提高網絡音頻主觀質量的方法,其特征在于在所述步驟a中設置一個主動丟包門檻值,當數據緩沖區中數據塊的數目等于緩沖區容量時,進入主動丟包模式;如果數據塊的數目小于等于主動丟包門檻值則退出主動丟包模式。
6. 根據權利要求5所述的提高網絡音頻主觀質量的方法,其特征在于所述緩沖區容量為8個數據塊,每個數據塊大小為1024字節,主動丟包門檻值為3個數據塊。
7. 根據權利要求2所述的提高網絡音頻主觀質量的方法,其特征在于所述步驟b中退出預緩沖模式后,立即開始播放音頻數據。
8. 根據權利要求1所述的提高網絡音頻主觀質量的方法,其特征在于所述步驟a中退出主動丟包模式后,將接收到的音頻數據存入緩沖區中。
9. 一種提高網絡音頻主觀質量的方法,其特征在于包括以下步驟步驟1,根據緩沖區中音頻數據塊的數目判斷是否需要進入預緩沖模式,如果需要進入預緩沖模式,則停止播放并將接收到的音頻數據塊放入到緩沖區中,直至退出預緩沖模式。步驟2,根據緩沖區中音頻數據塊的數目判斷是否需要進入主動丟包模式,如果需要進入主動丟包模式,則停止將接收到的音頻數據放入到數據緩沖區中,直至退出主動丟包模式。
10. 根據權利要求9所述的提高網絡音頻主觀質量的方法,其特征在于在所述步驟1中設置一個預緩沖門檻值,在所述步驟2中設置一個主動丟包門檻值,當數據緩沖區中數據塊的數目為零時,進入預緩沖模式;如果數據塊的數目大于等于預緩沖門檻值則退出預緩沖模式;當數據緩沖區中數據塊的數目等于緩沖區容量時,進入主動丟包模式;如果數據塊的數目小于等于主動丟包門檻值則退出主動丟包模式。
全文摘要
本發明提供了一種提高網絡音頻主觀質量的方法,其包括以下步驟根據緩沖區中音頻數據塊的數目判斷是否需要進入預緩沖模式,如果需要進入預緩沖模式,則停止播放并將接收到的音頻數據塊放入到緩沖區中,直至退出預緩沖模式;根據緩沖區中音頻數據塊的數目判斷是否需要進入主動丟包模式,如果需要進入主動丟包模式,則停止將接收到的音頻數據放入到數據緩沖區中,直至退出主動丟包模式。本發明提供的提高網絡音頻主觀質量的方法通過采用預緩沖和主動丟包的方式,避免了網絡音頻傳輸時頻繁斷音所帶來的傳輸質量下降,改良了音頻接收方對網絡音頻的主觀感受。
文檔編號H04L29/08GK101753422SQ20081021815
公開日2010年6月23日 申請日期2008年12月12日 優先權日2008年12月12日
發明者徐春 申請人:Tcl集團股份有限公司