一種播放音頻數(shù)據(jù)的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別涉及一種播放音頻數(shù)據(jù)的方法和裝置。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)技術(shù)和通訊技術(shù)的發(fā)展,基于語音包交換的V0IP(Voice overInternet Protocol,網(wǎng)際語音呼叫)技術(shù)的語音通話越來越受到用戶的青睞。
[0003]利用V0IP技術(shù)進(jìn)行語音通話的方法往往是:正在語音通話的兩個(gè)終端,任一端的終端發(fā)送經(jīng)過壓縮的語音包(可能包含多幀音頻數(shù)據(jù)),對(duì)端的終端接收語音包,將語音包解壓縮后存儲(chǔ)在抖動(dòng)緩存內(nèi),依次對(duì)抖動(dòng)緩存內(nèi)的每幀音頻數(shù)據(jù)進(jìn)行播放。
[0004]在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
[0005]基于上述通話的方法,當(dāng)網(wǎng)絡(luò)不穩(wěn)定時(shí),發(fā)送端的終端發(fā)送語音包后,接收端的終端可能很長時(shí)間沒有接收到發(fā)送端發(fā)送的語音包,從而導(dǎo)致抖動(dòng)緩存中沒有音頻數(shù)據(jù),或者瞬間接收大量語音包,從而抖動(dòng)緩沖區(qū)內(nèi)的音頻數(shù)據(jù)溢出,將會(huì)造成音頻數(shù)據(jù)丟失,從而,導(dǎo)致出現(xiàn)播空或缺字的現(xiàn)象。
【發(fā)明內(nèi)容】
[0006]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種播放音頻數(shù)據(jù)的方法和裝置。所述技術(shù)方案如下:
[0007]第一方面,提供了一種播放音頻數(shù)據(jù)的方法,所述方法包括:
[0008]在語音通話的過程中,檢測(cè)抖動(dòng)緩存中存儲(chǔ)的待播放音頻數(shù)據(jù)的數(shù)據(jù)量;
[0009]如果所述音頻數(shù)據(jù)的數(shù)據(jù)量低于預(yù)設(shè)的第一閾值,則對(duì)所述待播放音頻數(shù)據(jù)中的音頻幀進(jìn)行時(shí)長延長處理;如果所述音頻數(shù)據(jù)的數(shù)據(jù)量高于預(yù)設(shè)的第二閾值,則對(duì)所述待播放音頻數(shù)據(jù)中的音頻幀進(jìn)行時(shí)長縮短處理,其中,所述第一閾值小于所述第二閾值;
[0010]按照播放時(shí)序,對(duì)經(jīng)過處理的待播放音頻數(shù)據(jù)進(jìn)行播放。
[0011 ] 可選的,所述方法還包括:
[0012]獲取所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀的基音周期;
[0013]所述如果所述音頻數(shù)據(jù)的數(shù)據(jù)量低于預(yù)設(shè)的第一閾值,則對(duì)所述待播放音頻數(shù)據(jù)中的音頻幀進(jìn)行時(shí)長延長處理;如果所述音頻數(shù)據(jù)的數(shù)據(jù)量高于預(yù)設(shè)的第二閾值,則對(duì)所述待播放音頻數(shù)據(jù)中的音頻幀進(jìn)行時(shí)長縮短處理,包括:
[0014]如果所述音頻數(shù)據(jù)的數(shù)據(jù)量低于預(yù)設(shè)的第一閾值,則將所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀延長1個(gè)對(duì)應(yīng)的基音周期;如果所述音頻數(shù)據(jù)的數(shù)據(jù)量高于預(yù)設(shè)的第二閾值,則將所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀縮短1個(gè)對(duì)應(yīng)的基音周期。
[0015]可選的,所述如果所述音頻數(shù)據(jù)的數(shù)據(jù)量低于預(yù)設(shè)的第一閾值,則將所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀延長1個(gè)對(duì)應(yīng)的基音周期;如果所述音頻數(shù)據(jù)的數(shù)據(jù)量高于預(yù)設(shè)的第二閾值,則將所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀縮短1個(gè)對(duì)應(yīng)的基音周期,包括:
[0016]如果所述音頻數(shù)據(jù)的數(shù)據(jù)量低于預(yù)設(shè)的第一閾值,則在所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀中,將第一個(gè)基音周期和第二個(gè)基音周期的數(shù)據(jù)合并為一個(gè)基音周期的數(shù)據(jù),將合并的數(shù)據(jù)插入到所述第一個(gè)基音周期和所述第二個(gè)基音周期之間;
[0017]如果所述音頻數(shù)據(jù)的數(shù)據(jù)量高于預(yù)設(shè)的第二閾值,則在所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀中,將第一個(gè)基音周期和第二個(gè)基音周期的數(shù)據(jù)合并為一個(gè)基音周期的數(shù)據(jù),用合并的數(shù)據(jù)替換所述第一個(gè)基音周期和第二個(gè)基音周期的數(shù)據(jù)。
[0018]可選的,所述方法還包括:
[0019]獲取所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀的基音周期;
[0020]所述如果所述音頻數(shù)據(jù)的數(shù)據(jù)量低于預(yù)設(shè)的第一閾值,則對(duì)所述待播放音頻數(shù)據(jù)中的音頻幀進(jìn)行時(shí)長延長處理;如果所述音頻數(shù)據(jù)的數(shù)據(jù)量高于預(yù)設(shè)的第二閾值,則對(duì)所述待播放音頻數(shù)據(jù)中的音頻幀進(jìn)行時(shí)長縮短處理,包括:
[0021]如果所述音頻數(shù)據(jù)的數(shù)據(jù)量低于預(yù)設(shè)的第一閾值,則根據(jù)預(yù)設(shè)的延長時(shí)長,確定每個(gè)音頻幀對(duì)應(yīng)的單位處理時(shí)長,其中,每個(gè)單位處理時(shí)長是對(duì)應(yīng)的音頻幀的基音周期的整數(shù)倍;將所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀延長對(duì)應(yīng)的單位處理時(shí)長;
[0022]如果所述音頻數(shù)據(jù)的數(shù)據(jù)量高于預(yù)設(shè)的第二閾值,則根據(jù)預(yù)設(shè)的縮短時(shí)長,確定每個(gè)音頻幀對(duì)應(yīng)的單位處理時(shí)長,其中,每個(gè)單位處理時(shí)長是對(duì)應(yīng)的音頻幀的基音周期的整數(shù)倍;將所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀縮短對(duì)應(yīng)的單位處理時(shí)長。
[0023]可選的,所述將所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀延長對(duì)應(yīng)的單位處理時(shí)長,包括:
[0024]在所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀中,將第一個(gè)單位處理時(shí)長和第二個(gè)單位處理時(shí)長的數(shù)據(jù)合并為一個(gè)單位處理時(shí)長的數(shù)據(jù),將合并的數(shù)據(jù)插入到所述第一個(gè)單位處理時(shí)長和所述第二個(gè)單位處理時(shí)長之間;
[0025]所述將所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀縮短對(duì)應(yīng)的單位處理時(shí)長,包括:
[0026]在所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀中,將第一個(gè)單位處理時(shí)長和第二個(gè)單位處理時(shí)長的數(shù)據(jù)合并為一個(gè)單位處理時(shí)長的數(shù)據(jù),用合并的數(shù)據(jù)替換所述第一個(gè)單位處理時(shí)長和第二個(gè)單位處理時(shí)長的數(shù)據(jù)。
[0027]可選的,所述獲取所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀的基音周期,包括:
[0028]如果所述待播放音頻數(shù)據(jù)中的音頻幀記錄有基音周期,則從所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀中獲取每個(gè)音頻幀的基音周期;如果所述待播放音頻數(shù)據(jù)中的音頻幀未記錄有基音周期,則基于基音周期搜索算法,以及每個(gè)解碼后的音頻幀,確定每個(gè)音頻幀的基音周期。
[0029]第二方面,提供了一種播放音頻數(shù)據(jù)的裝置,所述裝置包括:
[0030]檢測(cè)模塊,用于在語音通話的過程中,檢測(cè)抖動(dòng)緩存中存儲(chǔ)的待播放音頻數(shù)據(jù)的數(shù)據(jù)量;
[0031]處理模塊,用于如果所述音頻數(shù)據(jù)的數(shù)據(jù)量低于預(yù)設(shè)的第一閾值,則對(duì)所述待播放音頻數(shù)據(jù)中的音頻幀進(jìn)行時(shí)長延長處理;如果所述音頻數(shù)據(jù)的數(shù)據(jù)量高于預(yù)設(shè)的第二閾值,則對(duì)所述待播放音頻數(shù)據(jù)中的音頻幀進(jìn)行時(shí)長縮短處理,其中,所述第一閾值小于所述第二閾值;
[0032]播放模塊,用于按照播放時(shí)序,對(duì)經(jīng)過處理的待播放音頻數(shù)據(jù)進(jìn)行播放。
[0033]可選的,所述裝置還包括獲取模塊,用于:
[0034]獲取所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀的基音周期;
[0035]所述處理模塊,用于:
[0036]如果所述音頻數(shù)據(jù)的數(shù)據(jù)量低于預(yù)設(shè)的第一閾值,則將所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀延長1個(gè)對(duì)應(yīng)的基音周期;如果所述音頻數(shù)據(jù)的數(shù)據(jù)量高于預(yù)設(shè)的第二閾值,則將所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀縮短1個(gè)對(duì)應(yīng)的基音周期。
[0037]可選的,所述處理模塊,包括:
[0038]第一處理子模塊,用于如果所述音頻數(shù)據(jù)的數(shù)據(jù)量低于預(yù)設(shè)的第一閾值,則在所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀中,將第一個(gè)基音周期和第二個(gè)基音周期的數(shù)據(jù)合并為一個(gè)基音周期的數(shù)據(jù),將合并的數(shù)據(jù)插入到所述第一個(gè)基音周期和所述第二個(gè)基音周期之間;
[0039]第二處理子模塊,用于如果所述音頻數(shù)據(jù)的數(shù)據(jù)量高于預(yù)設(shè)的第二閾值,則在所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀中,將第一個(gè)基音周期和第二個(gè)基音周期的數(shù)據(jù)合并為一個(gè)基音周期的數(shù)據(jù),用合并的數(shù)據(jù)替換所述第一個(gè)基音周期和第二個(gè)基音周期的數(shù)據(jù)。
[0040]可選的,所述獲取模塊,用于:
[0041]獲取所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀的基音周期;
[0042]所述第一處理子模塊,用于:
[0043]如果所述音頻數(shù)據(jù)的數(shù)據(jù)量低于預(yù)設(shè)的第一閾值,則根據(jù)預(yù)設(shè)的延長時(shí)長,確定每個(gè)音頻幀對(duì)應(yīng)的單位處理時(shí)長,其中,每個(gè)單位處理時(shí)長是對(duì)應(yīng)的音頻幀的基音周期的整數(shù)倍;將所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀延長對(duì)應(yīng)的單位處理時(shí)長;
[0044]所述第二處理子模塊,用于:
[0045]如果所述音頻數(shù)據(jù)的數(shù)據(jù)量高于預(yù)設(shè)的第二閾值,則根據(jù)預(yù)設(shè)的縮短時(shí)長,確定每個(gè)音頻幀對(duì)應(yīng)的單位處理時(shí)長,其中,每個(gè)單位處理時(shí)長是對(duì)應(yīng)的音頻幀的基音周期的整數(shù)倍;將所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀縮短對(duì)應(yīng)的單位處理時(shí)長。
[0046]可選的,所述第一處理子模塊,用于:
[0047]在所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀中,將第一個(gè)單位處理時(shí)長和第二個(gè)單位處理時(shí)長的數(shù)據(jù)合并為一個(gè)單位處理時(shí)長的數(shù)據(jù),將合并的數(shù)據(jù)插入到所述第一個(gè)單位處理時(shí)長和所述第二個(gè)單位處理時(shí)長之間;
[0048]所述第二處理子模塊,用于:
[0049]在所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀中,將第一個(gè)單位處理時(shí)長和第二個(gè)單位處理時(shí)長的數(shù)據(jù)合并為一個(gè)單位處理時(shí)長的數(shù)據(jù),用合并的數(shù)據(jù)替換所述第一個(gè)單位處理時(shí)長和第二個(gè)單位處理時(shí)長的數(shù)據(jù)。
[0050]可選的,所述獲取模塊,用于:
[0051]如果所述待播放音頻數(shù)據(jù)中的音頻幀記錄有基音周期,則從所述待播放音頻數(shù)據(jù)中的每個(gè)音頻幀中獲取每個(gè)音頻幀的基音周期;如果所述待播放音頻數(shù)據(jù)中的音頻幀未記錄有基音周期,則基于基音周期搜索算法,以及每個(gè)解碼后的音頻幀,確定每個(gè)音頻幀的基音周期。
[0052]本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:
[0053]本發(fā)明實(shí)施例中,在語音通話的過程中,檢測(cè)抖動(dòng)緩存中存儲(chǔ)的待播放音頻數(shù)據(jù)的數(shù)據(jù)量,如果音頻數(shù)據(jù)的數(shù)據(jù)量低于預(yù)設(shè)的第一閾值,則對(duì)待播放音頻數(shù)據(jù)中的音頻幀進(jìn)行時(shí)長延長處理;如果音頻數(shù)據(jù)的數(shù)據(jù)量高于預(yù)設(shè)的第二閾值,則對(duì)待播放音頻數(shù)據(jù)中的音頻幀進(jìn)行時(shí)長縮短處理,其中,第一閾值小于第二閾值,按照播放時(shí)序,對(duì)經(jīng)過處理的待播放音頻數(shù)據(jù)進(jìn)行播放。這樣,當(dāng)抖動(dòng)緩存中數(shù)據(jù)量較少時(shí),抖動(dòng)緩存中的音頻數(shù)據(jù)播放變慢,當(dāng)網(wǎng)絡(luò)不穩(wěn)定時(shí),可以提供較長的時(shí)間使得緩存中存入新的音頻數(shù)據(jù),當(dāng)抖動(dòng)緩存中數(shù)據(jù)量較多時(shí),抖動(dòng)緩存中的音頻數(shù)據(jù)盡快播放,保證抖動(dòng)緩存中有盡量多的空間,可以保存瞬間接收的大量音頻數(shù)據(jù),防止抖動(dòng)緩沖區(qū)內(nèi)的音頻數(shù)據(jù)溢出,從而,可以防止出現(xiàn)播空或缺字的現(xiàn)象。
【附圖說明】
[0054]為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0055]圖1是本發(fā)明實(shí)施例提供的一種播放音頻數(shù)據(jù)的方法的流程圖;
[0056]圖2是本發(fā)明實(shí)施例提供的一種根據(jù)抖動(dòng)緩存中的數(shù)據(jù)量進(jìn)行處理的示意圖;
[0057]圖3是本發(fā)明實(shí)施例提供的一種延長時(shí)長處理的示意圖;
[0058]圖4是本發(fā)明實(shí)施例提供的一種縮短時(shí)長處理的示意圖;
[0059]圖5是本發(fā)明實(shí)施例提供的一種播放音頻數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖;
[0060]圖6是本發(fā)明實(shí)施例提供的一種播放音頻數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖;
[0061]圖7是本發(fā)明實(shí)施例提供的一種播放音頻數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖;
[0062]圖8是本發(fā)明實(shí)施例提供的一種終端的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0063]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0064]實(shí)施例一
[0065]本發(fā)明實(shí)施例提供了一種播放音頻數(shù)據(jù)的方法,如圖1所示,該方法的處理流程可以包括如下的步驟:
[0066]步驟101,在語音通話的過程中,檢測(cè)抖動(dòng)緩存中存儲(chǔ)的待播放音頻數(shù)據(jù)的數(shù)據(jù)量。
[0067]步驟102,如果音頻數(shù)據(jù)的數(shù)據(jù)量低于預(yù)設(shè)的第一閾值,則對(duì)待播放音頻數(shù)據(jù)中的音頻幀進(jìn)行時(shí)長延長處理;如果音頻數(shù)據(jù)的數(shù)據(jù)量高于預(yù)設(shè)的第二閾值,則對(duì)待播放音