專利名稱:語音數據壓縮/解壓方法及裝置的制作方法
技術領域:
本發明涉及一種數據壓縮/解壓方法及裝置,特別涉及一種語音數據壓縮/解壓方法及裝置。
根據不同需要,語音壓縮方法多種多樣,在通信上,主要針對話音質量,有ITU-T的G.723.1、G.729、G.721等;在音樂方面,為了達到音樂品質,有MP3等。
本發明提供一種語音壓縮/解壓方法及裝置,保證了話音清晰,語音語調不變。
為了達到上述的目的,本發明的技術方案如下一種語音數據壓縮/解壓方法,包括以下步驟初始化步驟;指令判斷步驟,判斷是否有指令發出;指令接收步驟,接收指令;指令執行步驟,執行指令;數據回送判斷步驟,判斷是否需要送回數據;數據回送步驟,送回數據,并回到指令判斷步驟;指令執行步驟包括執行錄音指令和執行放音指令;執行錄音指令包括以下步驟;錄音接收步驟,接收錄音指令、錄音數據長度及錄音數據存放位置;
錄音設置步驟,設置接收狀態,編碼初始化,并打開接收中斷;錄音接收判斷步驟,判斷本幀數據是否接收完畢;錄音壓縮步驟,設置接收下一幀數據標志,壓縮已接收幀的數據;錄音貯存步驟,貯存壓縮數據;錄音減幀步驟,錄音長度減一幀;錄音長度判斷步驟,判斷錄音數據長度是否大于一幀;錄音停止判斷步驟,判斷是否有停止錄音指令;錄音停止步驟,關閉接收中斷,發送錄音結束狀態碼;執行放音指令包括以下步驟放音接收步驟,接收放音指令、放音數據長度及放音數據存放位置;放音設置步驟,設置發送狀態,解碼初始化,并打開發送中斷;放音解壓步驟,讀出壓縮數據,解壓數據并發送;放音接收判斷步驟,判斷本幀數據是否接收完畢;設置步驟,設置發送下一幀數據標志;放音減幀步驟,放音長度減一幀;放音長度判斷步驟,判斷放音數據長度是否大于一幀;放音停止判斷步驟,判斷是否有停止放音指令;放音停止步驟,關閉發送中斷,發送放音結束狀態碼;所述的指令判斷步驟,若無指令發出,則執行以下步驟狀態判斷步驟,判斷是否需要發狀態指示碼;狀態發送步驟,發送狀態碼。
在本發明的優先方案中,所述的狀態判斷步驟,若不需要發狀態指示碼,則回到指令判斷步驟。
所述的數據回送判斷步驟,或不需要送回數據則返回狀態判斷步驟所述的錄音接收判斷步驟,若本幀數據沒有接收完畢,則返回錄音接收判斷步驟。
所述的錄音長度判斷步驟,若錄音數據長度小于或等于一幀,則執行錄音停止步驟。
所述的錄音停止判斷步驟,或沒有停止錄音指令,則返回錄音接收判斷步驟。
所述的放音接收判斷步驟,若本幀數據沒有接收完畢,則返回放音接收判斷步驟。
所述的放音長度判斷步驟,若放音數據長度小于或等于一幀,則執行放音停止步驟。
所述的放音停止判斷步驟,或沒有停止放音指令,則返回放音解壓步驟。
一種語音數據壓縮/解壓裝置,包括以下裝置初始化裝置;指令判斷裝置,判斷是否有指令發出;指令接收裝置,接收指令;指令執行裝置,執行指令;數據回送判斷裝置,判斷是否需要送回數據;數據回送裝置,送回數據,并回到指令判斷裝置;
指令執行裝置包括執行錄音指令裝置和執行放音指令裝置;執行錄音指令裝置包括以下裝置;錄音接收裝置,接收錄音指令、錄音數據長度及錄音數據存放位置;錄音設置裝置,設置接收狀態,編碼初始化,并打開接收中斷;錄音接收判斷裝置,判斷本幀數據是否接收完畢;錄音壓縮裝置,設置接收下一幀數據標志,壓縮已接收幀的數據;錄音貯存裝置,貯存壓縮數據;錄音減幀裝置,錄音長度減一幀;錄音長度判斷裝置,判斷錄音數據長度是否大于一幀;錄音停止判斷裝置,判斷是否有停止錄音指令;錄音停止裝置,關閉接收中斷,發送錄音結束狀態碼;執行放音指令裝置包括以下裝置放音接收裝置,接收放音指令、放音數據長度及放音數據存放位置;放音設置裝置,設置發送狀態,解碼初始化,并打開發送中斷;放音解壓裝置,讀出壓縮數據,解壓數據并發送;放音接收判斷裝置,判斷本幀數據是否接收完畢;設置裝置,設置發送下一幀數據標志;放音減幀裝置,放音長度減一幀;放音長度判斷裝置,判斷放音數據長度是否大于一幀;放音停止判斷裝置,判斷是否有停止放音指令;
放音停止裝置,關閉發送中斷,發送放音結束狀態碼;在發明的優先方案中,所述的指令判斷裝置,若無指令發出,則包括以下裝置狀態判斷裝置,判斷是否需要發狀態指示碼;狀態發送裝置,發送狀態碼。
所述的狀態判斷裝置,若不需要發狀態指示碼,則返回指令判斷裝置。
所述的數據回送判斷裝置,或不需要送回數據則返回狀態判斷裝置所述的錄音接收判斷裝置,若本幀數據沒有接收完畢,則返回錄音接收判斷裝置。
所述的錄音長度判斷裝置,若錄音數據長度小于或等于一幀,則返回錄音停止裝置。
所述的錄音停止判斷裝置,或沒有停止錄音指令,則返回錄音接收判斷裝置。
所述的放音接收判斷裝置,若本幀數據沒有接收完畢,則返回放音接收判斷裝置。
所述的放音長度判斷裝置,若放音數據長度小于或等于一幀,則返回放音停止裝置。
所述的放音停止判斷裝置,或沒有停止放音指令,則返回放音解壓裝置。
由于采用上述的方法及裝置,語音數據的壓縮/解壓的同時保證了話音清晰,語音語調不變。
圖1至圖3為本發明用于Winbond公司的W62410芯片的流程圖;圖4至圖6為本發明的硬件連接圖的一種實施例。
下面結合附圖和實施例對本發明作進一步詳細的說明本發明用于Winbon公司的W62410芯片的特性如下晶振24.576MHz,內核處理能力24.576MIPS;支持NAND型Flash接口;最多可控制四片Flash;與CPU有14位并行接口;各種功能受控于CPU;支持CODEC接口;4個控制口控制麥克風和音頻輸出;功耗低,支持Power down工作方式;100腳QFP封裝。
本發明用于Winbond公司的W62410芯片的管腳功能描述如下電源、時鐘和系統控制
同步串行接口
與Flash接口
與MCU接口
麥克風輸入、功放輸出控制接口
其它管腳
本發明的主要功能是接收MCU的指令和數據,執行MCU的指令,向MCU回送指令和數據。
MCU發送的的主要指令有放音、錄音、讀取MCU傳送的數據并存入FLASH、從FLASH中讀取、數據并傳送給MCU等。
在錄音和放音時,語音的采樣頻率為8KHz/s,語音碼為14bits的PCM碼,經壓縮后成為4800bits/s的壓縮碼。W62410在編碼和解碼語音時以一幀30ms(相當于18byte=9*16=144bits)為單位,即壓縮碼的長度是一幀18byte的整數倍,解碼(放音)時也必須以一幀18byte為單位,而且一個解碼幀中的18byte必須屬于同一個編碼幀,即Nij=Mkj式中,Nij為第i個待解碼幀中的第j(j=0,…,8)個壓縮碼;Mkj為第k個編碼幀中的第j個壓縮碼;因為解碼時以幀為單位,所以解碼(放音)的長度必須是一幀18byte的整數倍。
如圖4所示,本發明是通過過Codec芯片直接由硬件實現對語音信號的采樣和回放。W62410與Codec間的接口采用同步串口。W6612選用14 bit PCM工作方式。
本發明還有控制錄放音電路通斷的功能,錄音時,W62410通過MIC_in1或MIC_in2腳控制麥克風信號輸入Codec,MIC_in1與MIC_in2互為反向關系,當W62410開始錄音時,MIC_in1輸出低電平,MIC_in2輸出高電平,控制麥克風電路使之接通,允許麥克風信號輸入Codec,當錄音結束后,MIC_in1輸出高電平,MIC_in2輸出低電平,控制麥克風電路使之關閉。放音時,通過SPKout1或SPK_out2腳控制語音信號的輸出,SPK_out1與SPK_out2互為反向關系,當開始放音時,W62410通過SPK_out1輸出低電平,SPK_out2輸出高電平,控制放音電路使之接通,允許語音信號輸出,當錄音結束后,SPK_out1輸出高電平,SPK_out2輸出低電平,控制放音電路使之關閉。
本發明還有控制監聽錄音的功能,當SE_record輸入為低電平時,選擇監聽功能,即在錄音的同時W62410控制SPK_out1和SPK_out2腳使放音電路接通,當SE_record輸入為高電平時,選擇不監聽功能,錄音時W62410控制SPK_out1和SPK_out2腳使放音電路關閉。
W62410將語音編碼和從MCU傳送來的數據都存入Flash中,但是W62410只支持SAMSUNG公司生產的KM29W8000型Flash。W62410最多能控制四片Flash,這四片Flash的編號分別是0x01、0x02、0x03和0x04,,其片選控制腳分別是Flash_se0、Flash_se1、Flash_se2、Flash_se3,控制腳低電平有效。當只選用1片Flash時,推薦選用編號是0x01的Flash1。W62410與Flash間的接口如圖5所示。
Flash KM29W8000的存儲單元是1Mbyte,其存儲單元劃分為page和block,每個page有256+8=264byte,每個block有16個page(16×264=4224byte)。W62410在訪問Flash的存儲單元時,每個page按264byte計算。
W62410與MCU間的接口選用了W62410的14個I/O口,這14個I/O口的定義如表1所示,W62410與MCU間的接口如圖6所示。
W62410與CPU間接口信號的定義如下表所示
W62410和MCU間有兩種狀態傳遞指令、數據的通訊狀態和相互報告當前運營狀態的非通訊狀態。當W62410與MCU間不相互傳遞指令或數據時,兩者處于非通訊狀態,此時接口的8bits數據線被重新定義,成為兩個4bits的狀態線CPU_state
和W62410_state
,MCU通過狀態線CPU_state向W62410報告當前MCU所處的狀態,W62410通過狀態線W62410_state向MCU報告當前MCU所處的狀態。表2列出了W62410與MCU間互相報告當前狀態用的狀態碼。
W62410與MCU間報告當前狀態的狀態碼如下表所示
在運行的過程中,MCU與W62410始終遵循一個原則雙方的狀態保持一致。正是通過MCU與W62410時刻相互報告自己的狀態,才使系統在運行中容易實現狀態一致。每當一方的狀態發生變化時,另一方就會及時檢測到這種變化,并根據這種變化調整自己的狀態,使雙方的狀態重新達到一致。例如,當W62410正在放音時,MCU想中途改變放音速度,MCU只需將新的放音狀態碼輸出給W62410即可,因為在放音的過程中W62410不斷檢測MCU的狀態,所以W62410能及時檢測到MCU放音狀態的變化,并根據MCU的新狀態改變放音速度,使自己的狀態重新與MCU保持一致;又如,當MCU與W62410處于放音(錄音)狀態時,如果想中途停止放音(錄音),MCU只需輸出非放音(錄音)狀態碼,W62410檢測到MCU停止放音(錄音)后,也停止放音(錄音),使自己的狀態重新與MCU保持一致;再如,在MCU與W62410均處于放音(錄音)狀態時,當W62410放完(錄完)指定的長度正常結束放音(錄音)后,輸出新的狀態碼,MCU檢測到W62410狀態變化后,調整自己的狀態,也進入非放音(錄音)狀態。
當W62410與MCU間相互傳遞指令或數據時,兩者處于通訊狀態,此時接口的兩個4bits狀態線CPU_state和W62410_state重新定義,成為8bits數據線Data
,W62410與MCU間通過該數據線相互傳遞指令和數據。
當MCU發起向W62410發送指令或數據時,通訊過程如下(a)、MCU設置接口總線MCU端為狀態線CPU_state和W62410_state,初始化輸出控制信號CPU_addr=0、CPU_ack=0,最后設置控制信號為CPU_ask=1并輸出;(b)、當W62410首次檢測到CPU_ask=1后,設置接口總線W62410端為數據輸入端,初始化輸出控制信號W62410_ask=0、W62410_addr=0,最后將控制信號設置成W62410_ack=1并輸出,以便向應MCU的通訊請求,允許MCU輸出指令或數據,并準備接收數據;(c)、當MCU檢測到W62410的確認信號W62410_ack=1后,設置接口總線MCU端為數據輸出端,輸出第一個8bit數據到數據總線,最后將地址線取反使CPU_addr=1并輸出;(d)、當W62410檢測到CPU_addr反轉后,讀取MCU發來的數據,最后也將地址線取反使W62410_addr=1并輸出;(e)、當CPU檢測到W62410_addr反轉后,判斷是否全部數據都傳送完畢,如果完畢跳轉到(8),否則輸出下一個8bit數據到數據總線,最后再將地址線取反并輸出;(f)、當W62410檢測到CPU_addr反轉后,讀取MCU發來的下一個數據,最后再將地址線取反并輸出;(g)、MCU轉入(5)繼續執行;(h)、MCU重新將接口總線MCU端設置為狀態線CPU_state和W62410_state,令CPU_ask=0并輸出,請求釋放接口總線結束通訊;(i)、當W62410檢測到CPU_ask=0后,也將接口總線設置為狀態線CPU_state和W62410_state,并輸出W62410當前的狀態,最后將確認信號設置成W62410_ack=0,向應MCU中止通訊的請求;(j)、當CPU檢測到W62410_ack=0后,輸出MCU當前的狀態,并結束通訊;當W62410發起向CPU發送指令或數據時,通訊過程如下(a)、當W62410檢測到CPU_addr=0確認MCU未請求通訊后,設置接口總線W62410端為狀態線CPU_state和W62410_state,初始化輸出控制信號W62410_addr=0、W62410_ack=0,最后設置控制信號為W62410_ask=1并輸出;(b)、當MCU首次檢測到W62410_ask=1后,設置接口總線MCU端為數據輸入端,初始化輸出控制信號CPU_ask=0、CPU_addr=0,最后將控制信號設置成CPU_ack=1并輸出,以便向應W62410的通訊請求,允許W62410輸出指令或數據,并準備接收數據;(c)、當W62410檢測到MCU的確認信號CPU_ack=1后,設置接口總線W62410端為數據輸出端,輸出第一個8bit數據到數據總線,最后將地址線取反便W62410_addr=1并輸出;(d)、當MCU檢測到W62410_addr反轉后,讀取W62410發來的數據,最后也將地址線取反使CPU_addr=1并輸出;(e)、當W62410檢測到CPU_addr反轉后,判斷是否全部數據都傳送完畢,如果完畢跳轉到(8),否則輸出下一個8bit數據到數據總線,最后再將地址線取反并輸出;(f)、當MCU檢測到W62410_addr反轉后,讀取W62410發來的下一個數據,最后再將地址線取反并輸出;(g)、W62410轉入(5)繼續執行;(h)、W62410重新將接口總線W62410端設置為狀態線CPU_state和W62410_state,令W62410_ask=0并輸出,請求釋放接口總線結束通訊;(i)、當MCU檢測到W62410_ask=0后,也將接口總線設置為狀態線CPU_state和W62410_state,并輸出MCU當前的狀態,最后將確認信號設置成CPU_ack=0向應W62410中止通訊的請求;(j)、當W62410檢測到CPU_ack=0后,輸出W62410當前的狀態,并結束通訊;W62410與MCU間通訊的指令格式為指令碼(1byte)+指令(byte)。
W62410與MCU間的通訊指令分列如下(a)、以正常速度放音當MCU讓W62410以正常速度放音時,指令碼是0x01,指令為0x01+所選flash的編號(1byte)+播放的語音編碼在flash中存儲的起始地址(3bytes)+播放的語音編碼在flash中存儲的終止地址(3byte)。
W62410可控制4片Flash,其編號分別是0x01、0x02、0x03和0x04,其片選控制腳分別是Flash_se0、Flash_se1、Flash_se2、Flash_se3。
(b)、繼續以正常速度放音當MCU讓W62410繼續以正常速度放音時,指令碼是0x02,指令為0x02。
本指令僅與上一條指令聯合使用,即當W62410正執行上一條正常播放指令還沒有將指定的語音播放完時,由于某種原因MCU暫停播放處于非播放狀態,W62410檢測到MCU不處于播放狀態后也暫停播放,在沒向W62410傳送任何其它指令的前提下,MCU欲讓W62410從暫停處繼續正常播放完先前指定的語音時,可使用本指令。
(c)、以慢1速度放音當MCU讓W62410以慢1速度放音時,指令碼是0x03,指令為0x03+所選flash的編號(1byte)+播放的語音編碼在flash中存儲的起始地址(3bytes)+播放的語音編碼在flash中存儲的終止地址(3byte)。
(d)、繼續以慢1速度放音當MCU讓W62410繼續以慢1速度放音時,指令碼是0x04,指令為0x04。
本指令的使用方法請參照繼續以正常速度放音指令的使用方法。
(e)、以慢2速度放音當MCU讓W62410以慢1速度放音時,指令碼是0x05,指令為0x05+所選flash的編號(1byte)+播放的語音編碼在flash中存儲的起始地址(3bytes)+播放的語音編碼在flash中存儲的終止地址(3byte)。
(f)、繼續以慢2速度放音當MCU讓W62410繼續以慢2速度放音時,指令碼是0x06,指令為0x06。
本指令的使用方法請參照繼續以正常速度放音指令的使用方法。
(g)、以快速放音當MCU讓W62410以快速放音時,指令碼是0x07,指令為0x07+所選flash的編號(1byte)+播放的語音編碼在flash中存儲的起始地址(3bytes)+播放的語音編碼在flash中存儲的終止地址(3byte)。
(h)、繼續以快速放音當MCU讓W62410繼續以快速放音時,指令碼是0x08,指令為0x08。
本指令的使用方法請參照繼續以正常速度放音指令的使用方法。
(i)、錄音當MCU讓W62410錄音時,指令碼是0x09,指令為0x09+所選flash的編號(1byte)+語音編碼在flash中存儲的起始地址(3bytes)+語音編碼在flash中存儲的終止地址(3byte)。
(j)、繼續錄音當MCU讓W62410繼續錄音時,指令碼是0x0a,指令為0x0a。
本指令僅與上一條指令聯合使用,即當W62410正執行上一條錄音指令還沒有達到指定的錄音長度時,由于某種原因MCU暫停錄音處于非錄音狀態,W62410檢測到MCU不處于錄音狀態后也暫停錄音,在沒向W62410傳送任何其它指令的前提下,MCU欲讓W62410從暫停處繼續錄音完先前指定的錄音長度時,可使用本指令。
(k)、W62410準備接收下載數據當MCU讓W62410準備接收下載數據時,指令碼是0x11,指令為0x11+所選flash的編號(1byte)+下載數據存儲在flash中的起始塊號(2byte)+下載數據存儲在flash中的終止塊號(2byte)。
本指令要求W62410報告指令執行情況。
當按要求執行完指令并準備接收下載數據時,W62410向MCU回送的指令碼是0x11。
當擦除Flash數據失敗時,W62410向MCU回送的指令碼是0x52。
本指令的目的是MCU讓W62410擦除指定的Flash中從起始塊到終止塊的數據,并準備接收下載的數據。
(1)、W62410接收下載數據當MCU讓W62410正式接收下載數據時,指令碼是0x12,指令為0x12+下載數據的長度(3byte)+下載的數據。
本指令要求W62410報告指令執行情況。
當正確接收完下載數據時,W62410向MCU回送的指令碼是0x12。
當接收數據出錯時,W62410向MCU回送的指令碼是0x51。
(m)、W62410接收數據當MCU讓W62410接收數據時,指令碼是0x13,指令為0x13+所選flash的編號(1byte)+在flash中存儲的起始地址(3bytes)+數據長度(3byte)+數據。
本指令要求W62410報告接收數據情況。
當正確接收完數據時,W62410向MCU回送的指令碼是0x13。當接收數據出錯時,W62410向MCU回送的指令碼是0x51。
(n)、W62410發送數據當MCU讓W62410從Flash中讀取數據并發送給MCU時,指令碼是0x18,指令為0x18+所選flash的編號(1byte)+讀取的數據在flash中存儲的起始地址(3bytes)+數據長度(3byte)。
本指令要求W62410回送從Flash中讀取的數據。
當W62410向MCU發送數據時指令碼是0x18+數據長度(3byte)+數據。
(o)、W62410返回當前放音的指針當MCU讓W62410返回當前放音指針時,指令碼是0x31,指令為0x31。
當W62410向MCU返回當前放音指針時,指令為0x31+當前放音指針(3byte)。
當前放音指針是指在W62410從Flash中讀取語音編碼并播放時,當前所讀編碼在Flash中的存儲地址;在使用本指令時需要注意只有在W62410執行過放音指令,且中間未執行過任何其它指令的前提下,MCU才能用本指令取得W62410當前的放音指針。
(p)、W62410返回當前錄音的指針當MCU讓W62410返回當前錄音指針時,指令碼是0x32。
當W62410向MCU返回當前錄音指針時,指令為0x32+當前錄音指針(3byte)。
當前錄音指針是指在W62410將語音編碼存入Flash中時,當前編碼存入Flash中的存儲地址;在使用本指令時需要注意只有在W62410執行過錄音指令,且中間未執行過任何其它指令的前提下,MCU才能用本指令取得W62410當前的錄音指針。
(q)、W62410擦除Flash的數據塊當MCU讓W62410擦除Flash的數據塊時,指令碼是0x39+所選flash的編號(1byte)+起始塊號(2byte)+的終止塊號(2byte)。
本指令要求W62410報告擦除情況。
當擦除成功時,W62410返回的指令為0x39。
當擦除不成功時,W62410返回的指令為0x52。
(r)、W62410測試Flash的數據塊當MCU讓W62410測試Flash的數據塊時,指令碼是0x48,指令為0x48+所選flash的編號(1byte)+起始塊號(2byte)+的終止塊號(2byte)本指令要求W62410報告測試結果。
當測試成功時,W62410返回的指令為0x39。
當測試結果是測試塊的存儲單元全部可用時,W62410返回的指令為0x48+0x55。
當測試結果是測試塊的存儲單元有損壞時,W62410返回的指令為0x48+0xaa。
(s)、W62410測試放音電路或麥克風電路當MCU讓W62410測試放音電路或麥克風電路時,指令碼是0x49,指令為x49+測試用數據(2byte)當指令中的測試用數據<0x4000時,表示測試的是放音電路,W62410執行測試放音電路指令時,控制接通放音電路,然后再從Codec輸出固定信號給放音電路,本指令的目的是測試放音電路的特性。
當指令中的測試用數據≥0x4000時,表示測試的是麥克風電路,W62410執行測試麥克風電路指令時,控制接通麥克風電路和放音電路,使語音信號從麥克風電路輸入Codec,然后再從Codec輸出到放音電路,本指令的目的是測試語音輸入輸出電路的特性。
(t)、通訊錯誤當W62410發現在MCU給W62410傳遞指令或數據的過程中出現出現錯誤,W62410將向MCU報告通訊錯誤,W62410給MCU傳送的指令碼是0x51,指令為0x51。
(u)、Flash錯誤當W62410給Flash寫入數據或擦除Flash的數據塊時,出現Flash讀寫錯誤誤,W62410將向MCU報告Flash錯誤,W62410給MCU傳送的指令碼是0x52,指令為0x52。
權利要求
1.一種語音數據壓縮/解壓方法,包括以下步驟初始化步驟;指令判斷步驟,判斷是否有指令發出;指令接收步驟,接收指令;指令執行步驟,執行指令;數據回送判斷步驟,判斷是否需要送回數據;數據回送步驟,送回數據,并回到指令判斷步驟;指令執行步驟包括執行錄音指令和執行放音指令;執行錄音指令包括以下步驟;錄音接收步驟,接收錄音指令、錄音數據長度及錄音數據存放位置;錄音設置步驟,設置接收狀態,編碼初始化,并打開接收中斷;錄音接收判斷步驟,判斷本幀數據是否接收完畢;錄音壓縮步驟,設置接收下一幀數據標志,壓縮已接收幀的數據;錄音貯存步驟,貯存壓縮數據;錄音減幀步驟,錄音長度減一幀;錄音長度判斷步驟,判斷錄音數據長度是否大于一幀;錄音停止判斷步驟,判斷是否有停止錄音指令;錄音停止步驟,關閉接收中斷,發送錄音結束狀態碼;執行放音指令包括以下步驟放音接收步驟,接收放音指令、放音數據長度及放音數據存放位置;放音設置步驟,設置發送狀態,解碼初始化,并打開發送中斷;放音解壓步驟,讀出壓縮數據,解壓數據并發送;放音接收判斷步驟,判斷本幀數據是否接收完畢;設置步驟,設置發送下一幀數據標志;放音減幀步驟,放音長度減一幀;放音長度判斷步驟,判斷放音數據長度是否大于一幀;放音停止判斷步驟,判斷是否有停止放音指令;放音停止步驟,關閉發送中斷,發送放音結束狀態碼;
2.根據權利要求1所述的語音數據壓縮/解壓方法,其特征在于所述的指令判斷步驟,若無指令發出,則執行以下步驟狀態判斷步驟,判斷是否需要發狀態指示碼;狀態發送步驟,發送狀態碼。
3.根據權利要求2所述的語音數據壓縮/解壓方法,其特征是所述的狀態判斷步驟,若不需要發狀態指示碼,則回到指令判斷步驟。
4.根據權利要求1或2所述的語音數據壓縮/解壓方法,其特征是所述的數據回送判斷步驟,或不需要送回數據則返回狀態判斷步驟
5.根據權利要求1所述的語音數據壓縮/解壓方法,其特征是所述的錄音接收判斷步驟,若本幀數據沒有接收完畢,則返回錄音接收判斷步驟。
6.根據權利要求1所述的語音數據壓縮/解壓方法,其特征是所述的錄音長度判斷步驟,若錄音數據長度小于或等于一幀,則執行錄音停止步驟。
7.根據權利要求1所述的語音數據壓縮/解壓方法,其特征是所述的錄音停止判斷步驟,或沒有停止錄音指令,則返回錄音接收判斷步驟。
8.根據權利要求1所述的語音數據壓縮/解壓方法,其特征是所述的放音接收判斷步驟,若本幀數據沒有接收完畢,則返回放音接收判斷步驟。
9.根據權利要求1所述的語音數據壓縮/解壓方法,其特征是所述的放音長度判斷步驟,若放音數據長度小于或等于一幀,則執行放音停止步驟。
10.根據權利要求1所述的語音數據壓縮/解壓方法,其特征是所述的放音停止判斷步驟,或沒有停止放音指令,則返回放音解壓步驟。
11.一種語音數據壓縮/解壓裝置,包括以下裝置初始化裝置;指令判斷裝置,判斷是否有指令發出;指令接收裝置,接收指令;指令執行裝置,執行指令;數據回送判斷裝置,判斷是否需要送回數據;數據回送裝置,送回數據,并回到指令判斷裝置;指令執行裝置包括執行錄音指令裝置和執行放音指令裝置;執行錄音指令裝置包括以下裝置;錄音接收裝置,接收錄音指令、錄音數據長度及錄音數據存放位置;錄音設置裝置,設置接收狀態,編碼初始化,并打開接收中斷;錄音接收判斷裝置,判斷本幀數據是否接收完畢;錄音壓縮裝置,設置接收下一幀數據標志,壓縮已接收幀的數據;錄音貯存裝置,貯存壓縮數據;錄音減幀裝置,錄音長度減一幀;錄音長度判斷裝置,判斷錄音數據長度是否大于一幀;錄音停止判斷裝置,判斷是否有停止錄音指令;錄音停止裝置,關閉接收中斷,發送錄音結束狀態碼;執行放音指令裝置包括以下裝置放音接收裝置,接收放音指令、放音數據長度及放音數據存放位置;放音設置裝置,設置發送狀態,解碼初始化,并打開發送中斷;放音解壓裝置,讀出壓縮數據,解壓數據并發送;放音接收判斷裝置,判斷本幀數據是否接收完畢;設置裝置,設置發送下一幀數據標志;放音減幀裝置,放音長度減一幀;放音長度判斷裝置,判斷放音數據長度是否大于一幀;放音停止判斷裝置,判斷是否有停止放音指令;放音停止裝置,關閉發送中斷,發送放音結束狀態碼;
12.根據權利要求11所述的語音數據壓縮/解壓裝置,其特征在于所述的指令判斷裝置,若無指令發出,則包括以下裝置狀態判斷裝置,判斷是否需要發狀態指示碼;狀態發送裝置,發送狀態碼。
13.根據權利要求12所述的語音數據壓縮/解壓方法,其特征是所述的狀態判斷裝置,若不需要發狀態指示碼,則返回指令判斷裝置。
14.根據權利要求11或12所述的語音數據壓縮/解壓裝置,其特征是所述的數據回送判斷裝置,或不需要送回數據則返回狀態判斷裝置
15.根據權利要求11所述的語音數據壓縮/解壓方法,其特征是所述的錄音接收判斷裝置,若本幀數據沒有接收完畢,則返回錄音接收判斷裝置。
16.根據權利要求11所述的語音數據壓縮/解壓方法,其特征是所述的錄音長度判斷裝置,若錄音數據長度小于或等于一幀,則返回錄音停止裝置。
17.根據權利要求11所述的語音數據壓縮/解壓方法,其特征是所述的錄音停止判斷裝置,或沒有停止錄音指令,則返回錄音接收判斷裝置。
18.根據權利要求11所述的語音數據壓縮/解壓方法,其特征是所述的放音接收判斷裝置,若本幀數據沒有接收完畢,則返回放音接收判斷裝置。
19.根據權利要求11所述的語音數據壓縮/解壓方法,其特征是所述的放音長度判斷裝置,若放音數據長度小于或等于一幀,則返回放音停止裝置。
20.根據權利要求11所述的語音數據壓縮/解壓方法,其特征是所述的放音停止判斷裝置,或沒有停止放音指令,則返回放音解壓裝置。
全文摘要
一種語音數據壓縮/解壓方法及裝置,語音數據的壓縮/解壓的同時保證了話音清晰,語音語調不變。
文檔編號H04B1/66GK1373565SQ0110928
公開日2002年10月9日 申請日期2001年3月6日 優先權日2001年3月6日
發明者李超倫 申請人:領高資訊科技(中國)有限公司