語音數(shù)據(jù)傳輸方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及媒體信息處理傳輸技術(shù),特別涉及一種語音數(shù)據(jù)傳輸方法。
【背景技術(shù)】
[0002] 音頻處理技術(shù)和傳感器技術(shù)的迅速發(fā)展使多路化、高清化成為音頻應(yīng)用發(fā)展的一 種趨勢。語音數(shù)據(jù)量的激增不僅給處理平臺(tái)的計(jì)算能力帶來了嚴(yán)峻挑戰(zhàn),同時(shí)也給語音處 理架構(gòu)中芯片間數(shù)據(jù)的高速傳輸造成了極大困難。因此,在語音處理架構(gòu)中解決芯片間語 音數(shù)據(jù)的實(shí)時(shí)傳輸問題至關(guān)重要。現(xiàn)有方法缺乏針對語音數(shù)據(jù)和異構(gòu)處理器結(jié)構(gòu)特點(diǎn)的考 慮,難以滿足語音處理架構(gòu)中音頻的實(shí)時(shí)傳輸和處理需求。而且現(xiàn)有系統(tǒng)大多偏重于功能 的實(shí)現(xiàn),硬件資源的開銷較大。
【發(fā)明內(nèi)容】
[0003] 為解決上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明提出了一種語音數(shù)據(jù)傳輸方法,包括:
[0004] 所述協(xié)處理器重構(gòu)語音頻段數(shù)據(jù),將語音頻段數(shù)據(jù)以分量形式通過高速PCI接口 傳送至核心處理器的緩沖隊(duì)列。
[0005] 優(yōu)選地,所述協(xié)處理器重構(gòu)語音頻段數(shù)據(jù),進(jìn)一步包括:
[0006] 協(xié)處理器采集打包格式的語音數(shù)據(jù),為語音頻段設(shè)置各自音頻緩沖隊(duì)列,用于分 離并暫存語音頻段;在分離過程的同時(shí)完成音頻格式轉(zhuǎn)換;當(dāng)一個(gè)完整音頻段的頻段數(shù)據(jù) 寫入相應(yīng)的音頻緩沖隊(duì)列后,分別讀取各個(gè)音頻緩沖隊(duì)列,以段為單位將頻段寫入發(fā)送緩 沖隊(duì)列,等待發(fā)送;
[0007] 所述將語音頻段數(shù)據(jù)以分量形式通過高速PCI接口傳送至核心處理器的緩沖隊(duì)列 之前,還包括:
[0008] 預(yù)定義核心處理器數(shù)據(jù)存儲(chǔ)單元,計(jì)算寫操作和讀操作的存儲(chǔ)地址;協(xié)處理器發(fā) 送的每個(gè)寫操作數(shù)據(jù)包中攜帶的數(shù)據(jù)將按順序?qū)懭牒诵奶幚砥鞯囊纛l緩沖隊(duì)列中的連續(xù) 存儲(chǔ)空間,設(shè)置緩沖隊(duì)列中數(shù)據(jù)按音頻段排列;每個(gè)寫操作數(shù)據(jù)包中數(shù)據(jù)只包含一個(gè)頻段, 數(shù)據(jù)存儲(chǔ)地址依次連續(xù)遞增;在核心處理器音頻緩沖隊(duì)列中數(shù)據(jù)按音頻段存儲(chǔ),每段數(shù)據(jù) 中同一頻段連續(xù)存儲(chǔ),組成各頻段矩陣,便于核心處理器完成音頻處理。
[0009] 優(yōu)選地,還包括:
[0010] 核心處理器對語音數(shù)據(jù)進(jìn)行處理,并且當(dāng)核心處理器處理完一段語音數(shù)據(jù)后,將 處理后的語音數(shù)據(jù)轉(zhuǎn)移到核心處理器片外存儲(chǔ)區(qū)的輸出緩沖隊(duì)列,在協(xié)處理器設(shè)計(jì)多個(gè)相 對應(yīng)的接收緩沖隊(duì)列;然后通過向協(xié)處理器發(fā)送應(yīng)答操作通知協(xié)處理器取回處理好的語音 數(shù)據(jù),最后由協(xié)處理器通過讀操作請求讀回處理后的語音數(shù)據(jù);
[0011] 所述協(xié)處理器的發(fā)送方請求由發(fā)送方請求模塊通過組建請求數(shù)據(jù)包來發(fā)起,所述 發(fā)送方請求模塊包含控制單元、數(shù)據(jù)包生成單元、請求生成單元和緩沖隊(duì)列,控制單元用于 檢測是否發(fā)送數(shù)據(jù)、控制何時(shí)發(fā)送數(shù)據(jù)以及組建數(shù)據(jù)包信息,監(jiān)控緩沖隊(duì)列狀態(tài),控制數(shù)據(jù) 包生成單元完成數(shù)據(jù)包發(fā)送;數(shù)據(jù)包生成單元負(fù)責(zé)數(shù)據(jù)組建,產(chǎn)生數(shù)據(jù)包包頭信息,并將包 頭信息傳遞到請求生成單元,監(jiān)控請求生成單元狀態(tài)并向控制單元反饋;請求生成單元負(fù) 責(zé)與程序的發(fā)送方的請求端口協(xié)同將組建好的數(shù)據(jù)包信息傳遞給程序,完整的數(shù)據(jù)包包括 包頭信息和數(shù)據(jù)信息,請求生成單元的包頭信息來自數(shù)據(jù)包生成單元,數(shù)據(jù)信息直接取自 緩沖隊(duì)列或接收數(shù)據(jù)包生成單元傳遞的數(shù)據(jù);語音數(shù)據(jù)依次通過緩沖隊(duì)列和請求生成單 元,最終由請求生成單元傳遞到程序的發(fā)送方的請求端口并通過鏈路發(fā)出。
[0012] 本發(fā)明相比現(xiàn)有技術(shù),具有以下優(yōu)點(diǎn):
[0013] 本發(fā)明提出了一種語音數(shù)據(jù)傳輸方法,節(jié)約了芯片間的大量語音數(shù)據(jù)的傳輸開 銷,減少了內(nèi)存資源占用,降低了軟硬件設(shè)計(jì)的難度。
【附圖說明】
[0014] 圖1是根據(jù)本發(fā)明實(shí)施例的語音數(shù)據(jù)傳輸方法的流程圖。
【具體實(shí)施方式】
[0015] 下文與圖示本發(fā)明原理的附圖一起提供對本發(fā)明一個(gè)或者多個(gè)實(shí)施例的詳細(xì)描 述。結(jié)合這樣的實(shí)施例描述本發(fā)明,但是本發(fā)明不限于任何實(shí)施例。本發(fā)明的范圍僅由權(quán)利 要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細(xì)節(jié)以 便提供對本發(fā)明的透徹理解。出于示例的目的而提供這些細(xì)節(jié),并且無這些具體細(xì)節(jié)中的 一些或者所有細(xì)節(jié)也可以根據(jù)權(quán)利要求書實(shí)現(xiàn)本發(fā)明。
[0016] 本發(fā)明的一方面提供了一種語音數(shù)據(jù)傳輸方法。圖1是根據(jù)本發(fā)明實(shí)施例的語音 數(shù)據(jù)傳輸方法流程圖。
[0017] 本發(fā)明提出了一種基于高速PCI的語音數(shù)據(jù)傳輸方法。該方法通過在協(xié)處理器上 采用語音頻段數(shù)據(jù)重構(gòu)方法并使用包頭信息較短的流媒體寫操作,簡化語音傳輸格式,同 時(shí)提高了高速PCI上語音數(shù)據(jù)包的傳輸效率;在核心處理器上通過預(yù)定義目標(biāo)方數(shù)據(jù)存儲(chǔ) 單元和采用簡潔的應(yīng)答機(jī)制,節(jié)約了核心處理器在傳輸過程中的時(shí)間開銷。減化了實(shí)現(xiàn)過 程的復(fù)雜度。并且在存儲(chǔ)過程中,采用音頻緩沖隊(duì)列取代資源占用率較高的RAM,因此系統(tǒng) 對協(xié)處理器內(nèi)存資源占用較少,無需外部存儲(chǔ)器,降低了軟硬件設(shè)計(jì)的難度。
[0018] 本發(fā)明的異構(gòu)語音處理架構(gòu)對處理任務(wù)進(jìn)行了劃分。其中,協(xié)處理器用于語音數(shù) 據(jù)的采集、格式轉(zhuǎn)換、預(yù)處理、數(shù)據(jù)傳輸和邏輯控制等任務(wù);核心處理器用于音頻的處理、分 析和編碼等核心工作。在存儲(chǔ)方面,協(xié)處理器采用以段為單位完成數(shù)據(jù)采集和預(yù)處理的方 法,其片上存儲(chǔ)資源可以滿足需求,避免了增加片外存儲(chǔ)器;而核心處理器在計(jì)算過程中需 要存取大量語音數(shù)據(jù)和中間處理結(jié)果,片內(nèi)存儲(chǔ)遠(yuǎn)無法滿足要求,因此為其設(shè)計(jì)了專門的 片外存儲(chǔ)區(qū)片外存儲(chǔ)器。
[0019] 針對語音數(shù)據(jù)在結(jié)構(gòu)上的規(guī)范性特點(diǎn)以及處理上的統(tǒng)一性要求,本發(fā)明為協(xié)處理 器與核心處理器上的收發(fā)緩沖隊(duì)列各自分配多個(gè)音頻緩沖隊(duì)列,以實(shí)現(xiàn)語音數(shù)據(jù)頻段的快 速分離,并為兩處理器上分類數(shù)據(jù)的高效整合提供了條件。首先,在分離過程中同時(shí)完成音 頻格式轉(zhuǎn)換;其次,在預(yù)定義核心處理器目標(biāo)方數(shù)據(jù)存儲(chǔ)地址后,對分離后的語音頻段進(jìn)行 打包傳輸,減少核心處理器計(jì)算數(shù)據(jù)存儲(chǔ)地址上的時(shí)間開銷。
[0020] 本發(fā)明對高速PCI的傳輸機(jī)制進(jìn)行了定制和優(yōu)化。在高速PCI操作選擇上,由于系 統(tǒng)中需要由協(xié)處理器讀取核心處理器處理后的語音數(shù)據(jù),因此選擇了常規(guī)的讀操作。在寫 操作中選擇流媒體寫操作。為簡化高速PCI傳輸過程實(shí)現(xiàn)的復(fù)雜度,選用簡潔的應(yīng)答操作用 于異構(gòu)處理器間的傳輸控制。
[0021 ]發(fā)送方的請求是一次操作的開始,用戶控制發(fā)送方的請求端口組建請求數(shù)據(jù)包, 數(shù)據(jù)包經(jīng)過高速PCI鏈路發(fā)送到目標(biāo)方請求端口進(jìn)行解析,目標(biāo)方用戶控制目標(biāo)響應(yīng)端口 組建響應(yīng)數(shù)據(jù)包,數(shù)據(jù)包經(jīng)過高速PCI鏈路發(fā)送回發(fā)送方響應(yīng)端口解析。例如,在用戶A發(fā)送 高速PCI請求給用戶B時(shí),用戶B響應(yīng)用戶A的高速PCI請求時(shí),本發(fā)明的具體步驟如下:
[0022] (1)用戶程序A控制發(fā)送方的請求端口信號(hào),輸入請求數(shù)據(jù)包信息,如包類型等;
[0023] (2)程序A根據(jù)用戶輸入信息封裝為高速PCI數(shù)據(jù)包并發(fā)送到高速PCI鏈路;
[0024] (3)程序B收到請求數(shù)據(jù)包,解析后通過目標(biāo)方請求端口通知用戶程序B;
[0025] (4)用戶程序B根據(jù)請求,控制目標(biāo)方響應(yīng)端口組建響應(yīng)數(shù)據(jù)包,輸入響應(yīng)數(shù)據(jù);
[0026] (5)程序B封裝響應(yīng)數(shù)據(jù)為PCI響應(yīng)數(shù)據(jù)包并發(fā)送到高速PCI鏈路;
[0027] (6)程序A收到響應(yīng)數(shù)據(jù)包,解析后通過發(fā)送方響應(yīng)端口通知用戶程序A,用戶程序 A接收并處理響應(yīng)數(shù)據(jù)包。
[0028]當(dāng)核心處理器處理完一段語音數(shù)據(jù)后,將處理后的語音數(shù)據(jù)轉(zhuǎn)移到核心處理器片 外存儲(chǔ)區(qū)的輸出緩沖隊(duì)列,在協(xié)處理器設(shè)計(jì)多個(gè)接收緩沖隊(duì)列與之對應(yīng)。當(dāng)核心處理器處 理完接收到的語音數(shù)據(jù)后,通過向協(xié)處理器發(fā)送應(yīng)答操作通知協(xié)處理器取回處理好的語音 數(shù)據(jù),最后由協(xié)處理器通過讀操作請求讀回處理后的語音數(shù)據(jù)。
[0029] 本發(fā)明以協(xié)處理器作為傳輸鏈路處理器,核心處理器作為語音數(shù)據(jù)處理核心,分 別設(shè)計(jì)協(xié)處理器和核心處理器高速PCI程序,其中,協(xié)處理器程序包括發(fā)送方請求和發(fā)送方 響應(yīng);核心處理器程序包括目標(biāo)方請求和目標(biāo)方響應(yīng)。為了實(shí)現(xiàn)高速PCI的實(shí)時(shí)傳輸,本發(fā) 明在協(xié)處理器首先對采集到的語音數(shù)據(jù)進(jìn)行發(fā)送前的重新組建。具體組建過程如下,協(xié)處 理器采集打包格式的語音數(shù)據(jù),為語音頻段設(shè)置各自音頻緩沖隊(duì)列,用于分離并暫存語音 頻段。在分離過程的同時(shí)完成音頻格式轉(zhuǎn)換工作。當(dāng)一個(gè)完整音頻段的頻段數(shù)據(jù)都寫入各 自音頻緩沖隊(duì)列后,分別讀取各音頻緩沖隊(duì)列,以段為單位將頻段寫入