專利名稱:一種解析音頻數據的方法
技術領域:
本發明涉及通信領域,特別涉及一種解析音頻數據的方法。
背景技術:
智能密鑰設備,是一種帶有處理器和存儲器的小型硬件裝置,主要用于身份認證、軟件保護等領域,它通過計算機的數據通訊接口與計算機連接,然而隨著手機技術的發展,手機越來越多的替代了計算機的功能;發明人在實現本發明的過程中發現,目前尚無一種有效的方法實現在手機上使用智能密鑰設備進行數字通訊。
發明內容
為了解決現有技術中存在的問題,本發明提供了一種解析音頻數據的方法,所述裝置內置于手機中,智能密鑰設備為耳機Key,通過耳機接口與手機進行通訊,需要說明的是,本發明不限于手機與智能密鑰設備進行數字通訊,適用于任意基于耳機通訊的雙方進行數字通訊。本發明方法是通過下述技術方案實現的一種解析音頻數據的方法,具體包括步驟A:解析裝置接收音頻數據,判斷第一數據緩沖區中是否有數據,是則將本次接收到的音頻與第一數據緩沖區中的數據組成待解析數據,否則將本次接收到的音頻數據作為待解析數據;步驟B :對所述待解析數據進行整形,得到整形后的待解析數據;
步驟C :對所述整形后的待解析數據進行一次解碼,得到一次解碼數據;步驟D :根據所述一次解碼數據判斷待解析數據中是否包含頭部數據,是則執行步驟E,否則若第一數據緩沖區中有數據則清除第一數據緩沖區中的數據,返回執行步驟A,沒有數據則直接返回執行步驟A ;步驟E :獲取數據長度,根據獲取到的數據長度獲取第一數據中相應的數據單元;步驟F :判斷是否成功獲取到全部的所述相應數據單元,是則執行步驟G,否則將本次接收到的音頻數據存入第一數據緩沖區,返回執行步驟A ;步驟G :對獲取到的數據單元進行二次解碼,根據解碼結果得到相應的字節數據,根據最后一個字節數據校驗其余字節數據是否正確,是則輸出所述其余字節數據,否則若第一數據緩沖區中有數據則清除第一數據緩沖區中的數據,返回執行步驟A,沒有數據則直接返回執行步驟A。進一步地,所述步驟C具體包括①將所述整形后的待解析數據中的首個數據作為當前數據;②判斷是否有與當前數據相鄰的下一數據,是則執行③,否則執行⑤;③判斷當前數據和與其相鄰的下一數據的乘積,若為O則記錄當前數據和與其相鄰的下一數據二者中為O —方所對應的橫坐標的值,執行④,若大于O則執行④,若小于O則根據當前數據和與其相連的下一數據對應的坐標確定直線方程,記錄所述直線方程與橫軸交點對應的橫坐標的值,執行④;④將所述與當前數據相鄰的下一數據作為當前數據,返回②;⑤將記錄的每兩個相鄰橫坐標作為一組,計算每組中的后者減去前者,判斷得到的計算結果,若其在第一預設范圍內則解碼為第一數值,在第二預設范圍內則解碼為第二數值,在第三預設范圍內則解碼為第三數值;所述根據所述一次解碼數據判斷待解析數據中是否包含頭部數據包括判斷一次解碼數據中是否有符合第一格式的數據,是則待解析數據中包含頭部數據,否則待解析數據中不包含頭部數據,所述第一格式的數據為連續的不少于預設個數個第一數值;所述進行二次解碼包括將第二數值解碼為I,將第三數值解碼為O ;所述步驟D中,當待解析數據中不包含頭部數據時還包括將待解析數據末尾的部分數據存入第一數據緩沖區;所述步驟F中,當沒有成功獲取到全部的所述相應數據單元時還包括存儲數據長度并將一次解碼數據末尾不能完整解析為一個字節的數據存入第二數據緩沖區;相應地,所述步驟E具體包括步驟El :判斷第二數據緩沖區中是否有數據,是則執行步驟E2,否則執行步驟E3 ;步驟E2 :將一次解碼數據與第二數據緩沖區中的數據組成第一數據,獲取存儲的數據長度,執行步驟E4;步驟E3 :將一次解碼數據作為第一數據,獲取所述一次解碼數據中與數據長度對應的數據單元并對其進行二次解碼,根據解碼結果計算得到數據長度,執行步驟E4 ;步驟E4 :根據數據長度獲取第一數據中相應的數據單元;所述步驟G中,當所述其余字節數據不正確時還包括檢查第二數據緩沖區,若所述第二數據緩沖區中有數據則清除第二數據緩沖區中的數據,并刪除存儲的數據長度;優選地,上述步驟C、步驟D、步驟E、步驟F和步驟G替換為步驟C ':根據整形后的待解析數據判斷待解析數據中是否包含頭部數據,是則執行步驟D ',否則若第一數據緩沖區中有數據則清除第一數據緩沖區中的數據,返回執行步驟A,沒有數據則直接返回執行步驟A ;步驟D丨:獲取所述整形后的待解析數據中的解碼寬度數據,計算解碼寬度;步驟E丨:獲取數據長度,根據獲取到的數據長度獲取第一數據中相應的數據;步驟F':判斷是否成功獲取到全部的所述相應的數據,是則執行步驟G ',否則將本次接收到的音頻數據存入第一數據緩沖區,返回執行步驟A ;步驟G丨:根據解碼寬度對獲取到的數據進行解碼,根據解碼結果得到相應的字節數據,根據最后一個字節數據校驗其余字節數據是否正確,是則輸出所述其余字節數據,否則若第一數據緩沖區中有數據則清除第一數據緩沖區中的數據,返回執行步驟A,沒有數據則直接返回執行步驟A。進一步地,所述步驟C丨中,當待解析數據中不包含頭部數據時還包括將待解析數據末尾的部分數據存入第一數據緩沖區;所述步驟F '中,若沒有成功獲取到全部的所述相應數據單元時還包括,存儲數據長度并將一次解碼數據末尾不能完整解析為一個字節的數據存入第二數據緩沖區;相應地,所述步驟E'具體包括步驟El':判斷第二緩沖區中是否有數據,是則執行步驟E2 ',否則執行步驟E3 ;;步驟E2丨:將整形后的待解析數據與第二數據緩沖區中的數據組成第一數據,獲取存儲的數據長度,執行步驟E4 ';步驟E3丨:將整形后的待解析數據作為第一數據,獲取所述整形后的解析數據中的數據長度數據并對根據解碼寬度對其進行解碼,根據解碼結果計算得到數據長度,執行步驟E4丨;步驟E4丨:根據數據長度獲取第一數據中相應的數據;所述步驟G'中,當所述其余字節數據不正確時還包括檢查第二數據緩沖區,若所述第二數據緩沖區中有數據則清除第二數據緩沖區中的數據,并刪除存儲的數據長度;根據所述整形后的待解析數據判斷待解析數據中是否包含頭部數據包括①將整形后的待解析數據的首個數據作為當前數據;②判斷是否有與當前數據相鄰的下一數據,是則執行③,否則待解析數據中不包含頭部數據;③判斷當前數據和與其相鄰的下一數據的乘積,若所述乘積等于O則執行④,若所述乘積小于O則執行⑤,若所述乘積大于O則將與所述當前數據相鄰的下一數據作為當前數據,返回執行②;④初始化第一計數值為2,從與當前數據和與其相鄰的下一數據二者中為O的數據相鄰的下一數據開始尋找是否存在符合第二格式的數據,是則待解析數據中包含頭部數據,否則待解析數據中不包含頭部數據;⑤初始化第一計數值為1,從與所述當前數據相鄰的下一數據開始尋找是否存在符合第二格式的數據,是則待解析數據中包含頭部數據,否則待解析數據中不包含頭部數據;所述④中包括初始化第一計數值為2 ;所述⑤中包括初始化第一計數值為I ;從某數據開始尋找是否存在符合第二格式的數據,其中,所述某數據為與當前數據和與其相鄰的下一數據二者中為O的數據相鄰的下一數據或與所述當前數據相鄰的下一數據,包括a :初始第二計數值為0,將所述某數據作為當前數據;b :判斷是否有與當前數據相鄰的下一數據,是則執行C,否則不存在符合第二格式的數據;c :判讀當前數據和與其相鄰的下一數據的乘積,若乘積為O則執行d,若乘積大于O則執行e,若乘積小于O則執行f ;d:第一計數值加1,判斷第一計數值,若在第四預設范圍內則第二計數值加1,執行g,若在第五預設范圍內則執行h,否則重新執行所述④;e :第一計數值加1,執行g ;f:判斷第一計數值,若在第四預設范圍內則第二計數值加1,執行g,若在第五預設范圍內則執行h,否則重新執行所述⑤;
g :將與當前數據相鄰的下一數據作為當前數據,返回執行b ;h :判斷第二計數值是否小于預設值,是則不存在符合第二格式的數據,否則存在符合第二格式的數據;所述步驟D ;具體包括①獲取整形后的待解析數據中所述頭部數據之后的首個數據作為當前數據;②判斷是否有與當前數據相鄰的下一數據,是則執行③,否則將本次接收到的音頻數據存入第一數據緩沖區,返回執行步驟A ;③判斷當前數據和與其相鄰的下一數據的乘積,若等于O則執行④,若小于O則執行⑤,若大于O則執行⑦;④記錄當前數據和與其相鄰的下一數據二者中為O—方所對應的橫坐標,執行
⑥;⑤根據當前數據和與其相鄰的下一數據對應的坐標,確定直線方程,記錄所述直線方程與橫軸交點對應的橫坐標,執行⑥;⑥判斷記錄的橫坐標的個數是否等于16,是則執行⑧,否則執行⑦;⑦將與所述當前數據相鄰的下一數據作為當前數據,返回執行②;⑧計算記錄的前4個橫坐標和后4個橫坐標的平均值,作為第一解碼寬度,計算記錄的中間8個橫坐標的平均值,作為第二解碼寬度;所述獲取所述整形后的待解析數據中的數據長度數據并根據解碼寬度對其進行解碼具體包括S1、獲取整形后的待解析數據中解碼寬度數據之后的首個數據作為當前數據;s2、判斷是否有與當前數據相鄰的下一數據,是則執行S3,否則將本次接收到的音頻數據存入第一數據緩沖區,返回執行步驟A ;S3、判斷當前數據和與其相鄰的下一數據的乘積,若等于O則執行步驟s4,若小于O則執行步驟s5,若大于O則執行步驟s7 ;s4、記錄當前數據和與其相鄰的下一數據二者中為O —方所對應的橫坐標,執行s6 ;s5、根據當前數據和與其相鄰的下一數據對應的坐標,確定直線方程,記錄所述直線方程與橫軸交點對應的橫坐標,執行s6 ;s6、判斷記錄的橫坐標的個數是否等于16,是則執行s8,否則執行s7 ;s7、將與所述當前數據相鄰的下一數據作為當前數據,返回執行s2 ;s8、將記錄的每兩個相鄰橫坐標作為一組,計算每組中的后者前去前者,判斷得到的計算結果,若在第六預設范圍內則解碼為1,若在第七預設范圍內則解碼為O ;其中,所述第六預設范圍根據第一解碼寬度確定,所述第七預設范圍根據第二解碼寬度確定。更進一步地,所述解析裝置接收音頻數據之前包括解析裝置進行設備初始化,判斷設備初始化是否成功,是則創建錄音線程,開始接收音頻數據,否則提示設備初始化失敗;所述對所述待解析數據進行整形具體包括①分配一塊大小與待解析數據的數據長度相同的新內存;
②判斷待解析數據中是否還有未處理的數據,是則執行③,否則執行④;③獲取基線,判斷是否成功獲取到基線,是則將當前數據與基線的差值存儲到所述新內存中,返回執行②,否則將當前數據存儲到所述新內存中,返回執行②;④用所述新內存中的數據替換所述待解析數據,得到整形后的待解析數據,釋放所述新內存;其中,所述獲取基線具體包括獲取當前數據之前的預設值個數據和之后的預設值個數據,尋找獲取到的數據和當前數據中的最大值與最小值,計算所述最大值與最小值的平均值,所述平均值即為基線。本發明方法的有益效果在于提高了音頻數據解析的效率和命中率,廣泛適用于基于耳機通訊的雙方進行數字通訊。
為了更清楚的說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。圖1為本發明實施例一提供的一種解析音頻數據的方法流程圖;圖2為圖1中步驟101之前包含的步驟的流程圖;圖3為圖1中步驟105的細化流程圖;圖4為圖1中步驟106的細化流程圖;圖5為本發明實施例二提供的一種解析音頻數據的方法流程圖;圖6為圖5中步驟206的細化流程圖;圖7為圖6中從某一數據開始尋找是否存在符合第二格式的數據的細化流程圖;圖8為圖5中步驟209的細化流程圖;圖9為圖5步驟210中獲取整形后的待解析數據中的數據長度數據,對獲取到的數據進行解碼的細節流程圖;圖10為圖5中步驟211和步驟212的細化流程圖。
具體實施例方式下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。實施例一本發明實施例一提供了一種解析音頻數據的方法,下面結合圖1對所述方法進行介紹。如圖1所示,一種解析音頻數據的方法,具體包括以下步驟步驟101 :解析裝置接收音頻數據;其中,在本實施例中,參見圖2,步驟101解析裝置接收音頻數據之前還包括
步驟S1:解析裝置進行設備初始化;步驟S2 :判斷設備初始化是否成功,是則執行步驟S3 ;否則提示設備初始化失敗;步驟s3 :創建錄音線程,開始接收音頻數據;例如,在本實施例中,解析裝置接收到的音頻數據為DE67D167FF270F0EB1127608E103A6FBADF639F7BC67AF67A267956789677C676F6762671625B50E80113E07560113FA7EF370F74E674267356728671B670E670167F4667022300FE70F5D054EFEBDF764EFA2F7E366D666C966BC66AF66A36696668966E71FA30F5D0E9F03D5FB4FF6E8ECBCF879666C665F665366466639662C661F66C31D0010B00C3902B9F929F540EA73FA11660466F765EA65DE65D165C465B76591226C0E9D0D010175F921F408E90FFCA8659C658F658265766569655C65506570206D0E770C19FF54F8C6F17FE9E5F44365366529651D6510650365F764EA64831D720F630AADFE0BF611F1BCE62EF7DE64D264C564B864AC649F64936486649D1BB50F840856FD3DF4A5F02AE54EF97B646E646264556449643C6430642364C219FB0F0F0797FC01F37FF0DDE32BFC18640C64FF63F363E663DA63CD63C1633A182010B205E9FB67F1FEEF3CE2BEFEB763AA639E639263856379636C6360639B162B1008042AFB56F0E6EFC9E0830156634A633E633163256318630C6300630E151C10250232FAD7EEB8EFADDFC004F762EA62DE62D262C562B962AC62A0628B132210C100C9F990ED84EF2ADE880898628B627F62736266625A624E6241622C12A40F9BFEBBF876ECA0EF4BDDE80B39622D62216215620862FC61F061E461BC10DF0FBAFD5EF860EB45EFFBDB3A0FDC61CF61C361B761AB619F6192618661A20F060F89FB48F7D9E9CDEE86DA73127F61736167615B614E61426136612A618F0E640EF7F98DF6F9E8BCEE7AD975I6236I17610B61FF60F360E660DA60CE60860DD30D84F8C0F5CCE792EE9AD8E419C860BC60B060A46098608B607F6073606A0CA30C92F6D4F495E606EE44D73A1E6D606160556049603D603160256019606D0EAF0B79F690F336E63DEDC9D6FE2013600760FB5FEF5FE35FD75FCB5FBF5F980DA80A39F545F259E5FBEBD9D6E716BB5FAF5FA45F985F8C5F805F745F685F370CB3090CF31EF172E32EEB2BD5221A655F595F4D5F415F355F295F1D5FEB5EE30A1508D6F0D4EF00E252EA55D33D1E0F5F045FF85EEC5EE05ED45EC85E755B96094B06BDEE58EE36E052E9ECD17B22BC5EB05EA45E985E8C5E805E755E7A5884088F04C9EC61ECB3DE31E843D07125695E5E5E525E465E3A5E2E5E235E0D551807CF0187EA18EB1FDDE4E68ACEE629195E0D5E015EF65DEA5DDE5DD25D9F51E905290094E880E9BEDBACE54BCD1B2ECA5DBE5DB25DA75D9B5D8F5D845D4A4E9C04F3FDB2E6B0E720DA2AE401CCB4317D5D715D655D5A5D4E5D425D375D464B47037FFB7EE487E532D840E220CAE034315D265D1A5D0E5D035DF75CEB5C5448D401CCF858E286E3B4D67FE0E8C89A38E85CDC5CD05CC55CB95CAE5CA25C3B456D0027F6A9E017E14ED5BEDD46C8BD39A05C6342FAF70746845C5447E9F78341695C1E4102F716474D5C5E450CF7F141325C933FD9F5D842175C1D3D75F6C549FC5B1E421CF59846E15BD65BCA5BBF5BB35BBE4613F56E51965B134060F202477B5B705B645B595B4E5BA343E0FBFBEF2BD983DEB3C6E63E455B395B2E5B225B175B7C409DFAB2ED5ED78BDCB3C588420F5B045BF85AED5AE25A0342F3EE544CC75ABB5AB05AA45A995A94394DEF4B4E7F5AC63DDEF2F256635A575A4C5A415A365A3D3982EE5E551B5A0F5A045AF959EE59943A9BEE8254D359C759BC59B159A6593D3B57F095598A597F59735968595D590E3727EF3F58425937592C592159165904358FF6D6EBCEDB02E0C3D19E530B59FD3307EFFA53F158A62D95EE5D55D858CD58C258B758AC582032F7F33DE615D814DA86CE2753A5586030DDEF95588A587F58745869585E58472B62EC50584558E72C60EE37582C58EC2BC0EA1E58135835240BED0658FB
57432978EAED57E2572722D2EAD657CB575D286CEEBD57B257C4247DE9A5579A575F2749EC8D5
782573D249EE576576B57A51FD9E85F57545705257AE647573C570A1D85E8315726572D21DCE8
1A570F5714214EE40357F85605196DE7EE56E356B51E9BE3D756CD568017F9E3C256B756E51D1
3E8AC56A1562E1BF5E197568C56815676566B5661569C1D67E056564B56405636562B562056BC
1CEAE415560A564C1B8CE00056F555D612CFE3EC55E155411824E0D755CD554411F6DFC455B95
57A0D1CE4B055A5559B55905585557B55BC0F6FE371556755C51152E75D555255C90F55DD4A55
3F55310A75E237552C5529105DDD245519550F0886E112550755B91045D2E8C52BBB77B810C22
1551655AD0735CEBEBFC9B704B2E9BE3355295537025BDD225518550D550255F854ED547D0738
CC0DBBA1B5BBAA37C60C550155AB016DDFFA54F054930238D8EA54DF54ACFAD8DDDA54CF54C45
4BA54AF54A554BBFA4ADC9F5494547F0558C37FB741ADEAA6E2BCB854AD549CF6CEDBA8549E54
B8FC87D599548E54D3F411DB8A547F541CFACCDB7A546F5465545A545054455410F32CDB41543
6542C54215417540C5467F338D90854FE5385F522BB4EAF3EA8C99E56C126541B5411540654FC
53F153EBE634DDEE53E453EAF8C3B880ACA4A5269AFFC50D540254F853EE53E353D953E4E6CBE
8D453CA53C8E59DDEC753BC53E8E99AE1B853AE53A35399538E538453A7E03CE181537753C1E8
FCD874536A535F5355534A53405370DA02E73D53335378E902B4969B9FD547533C53E7E133E23
9532F53A3E31ADF2C532253A5DB4EDB2153AC4E65E7。步驟102 :判斷第一數據緩沖區中是否有數據,是則執行步驟103,否則執行步驟104 ;優選地,在本實施例中,設置標志用于標識所述第一數據緩沖區中是否有數據,約定該標志置位標識所述第一數據緩沖區中有數據,該標志復位標識所述第一數據緩沖區中沒有數據;例如,在本實施例中,第一數據緩沖區中沒有數據。步驟103 :將本次接收到的音頻數據與第一數據緩沖區中的數據組成待解析數據,執行步驟105 ;步驟104 :將本次接收到的音頻數據作為待解析數據,執行步驟105 ;步驟105 :對待解析數據進行整形,得到整形后的待解析數據;優選地,在本實施例中,參見圖3,所述對待解析數據進行整形,得到整形后的待解析數據具體包括步驟105-1 :分配一塊大小與待解析數據的數據長度相同的新內存;步驟105-2 :判斷待解析數據中是否還有未處理的數據,是則執行步驟105-3,否則執行步驟105-6 ;步驟105-3 :獲取基線,判斷是否成功獲取到基線,是則執行步驟105-4,否則執行步驟105-5 ;其中,所述獲取基線具體包括獲取當前數據的前5個數據和后5個數據,尋找獲取到的數據和當前數據中的最大值與最小值,計算所述最大值與最小值的平均值,所述平均值即為基線;步驟105-4:將當前數據與基線的差值存儲到所述新內存中,返回執行步驟
105-2 ;
步驟105-5 :將當前數據存儲到所述新內存中,返回執行步驟105-2 ;步驟105-6 :用所述新內存中的數據替換所述待解析數據,得到整形后的待解析數據;步驟105-7:釋放所述新內存,整形結束;在本實施例中,整形后的待解析數據如下B42FF2313DF6CADE6CE331D9A2D472CC79C705C888387B386E3861380F38442CF92FE63242F432E103E4C8D9E6D3ADCC18C60ACAE839DC39CF39C239BC37CF2BB2303334FEF2F1E3AEE42BDA22D39ACC41C47FCCC03BB33BA63B993B6D37032C5C313A3562F1D8E598E4E0D91DD29FCC38C30CCFC93CBC3CAF3CA33CAC36A52CDA31133605F0BDE774E403DA8AD10ICD18C24BD2E93DDC3DCF3DC23D9C35FA2B42320I368CF5F9E631E69BD916D2C9CCB0C1B7D4503E443E373E2A3E9B345A2C02335F36CCF4F3E603E5ACD7EDD065CA1EC284CDE23DD53DC83DBC3DFC37302D063350376CF28CE984E4D4D838D044CBEFC061D1113F053FF83EEB3EA636EE2D7F330538EFF0CAEAA0E378D865CFD3CB58C07CD4A93F9C3F903F833F6535772EAE33723858EFE8EB03E391D801CF85CCE3BF31D81E4012400540F93FC533F52ED3330E3942EE0FEDA7E2E5D869CE05CD43BFC5DBBE40B140A54099404B329A2F02346639DFEC04EEE7E110D942CED7CDBABE74DF47413B412F412241B9305B304E34F6390AECB3EEC3E0D6D881CD66CE5BBE6EE3A54198418C418041EA2EDD305334693A5AEBABEF50E05ED92BCD23CFC9BD27E837422A421E421242D62CC131AB34C73AB8EACCEFC9DEEFD8B0CCDECF89BD26EC77426B425F425342F82A0332AB34243B02EADEF0BFDE69D971CC5AD010BD4FF0F142E442D842CC423A29ED320735B83BDAE9EEF077DD3CD9D3CBCBD084BC71F47D437143654359435D2987333635FA3B65E900F199DC35D9A7CB6ED12CBC27F9D543C943BD43B1439F2913346F35633C21E90DF1C4DB06D918CBE1D1E9BB33FD17440B44FF43F343FF29DE34B735D13CCEE8B5F0ABDAF3D8BACA2ED26CBB6202954489447D4471442F2ABE342D36D43C2EEB2CF0FCDA19D8C5CACFD15BBB9005A54499448D448144862A3135A536153DF4EA4AEFE1D9F3D60DCAB1D08FBB9DFB714465445A444E44D52A1D360E37DD3DB2EA58EFB7D8CFD629C9E6D0E3BADAFF1D4511450545F944782B0C378737453E43EAD0EE97D79BD-6CEC820D123BA0B05DD45D245C645BA45332CEE371A38DE3B05EAE5ED5DD6FED5E2C7FED098B9270A68465C4650464446E72CBE38ED38CF39DFE928ED68D505D55DC7DBD0EDB81B0E13470847FC46F0461E2EB639B139553766E96DEB2BD4C2D4CEC693D039B89513C847BC47B047A547C92E883A823AC0340FE98FEA00D3F2D334C622D0C1B791184048344828481D48BD2F513B4C3B6132B9E825E9EAD1EED261C56BCF42B7F51CBE48B248A6489B48D030453C403C7B3081E8C8E7CDD0DCD18AC498CE78B6382189497E49724966490532333D2C3D6D2EF3E7D7E569CF9DD0CCC397CD00B6B225004AF449E849DD493233E63DE03D2C2C64E7A8E32FCEA3CEDBC24BCBD3B54A272D4AF02F87E594334032831D26CEC017A6325B174DCD611D98323D1CF9CDDE181F338016D4CCD31912337614DCCD2C216333851990CC0C1E55334F335033453339339E1FF8CD592A87340A1965CB072080347534A9350641FB408C32CFEAF0DE25C883CDB7B5EA2D494A3D4A324A264AC641003027EA42DDF4C626CC52B52732AE4AA34A974A8C4AE135021DF8C95F27D735D135D335C7358F358A1449CA4D298735D318F8CD0C32B533D735DA35CF35C435CB1416CAF730BA35B335B635AB359335391646CA33308935833585357A359134281648CB8C348634193515350A35FF34B612D4CAF233FB34F534A036993E8E3E821F12E15FD65CC696CA5CBC373EA443961EA0D9933E2135D609D2CA9A3115350A35383941403640711E4EE099D277C47BC6F1BA923F1045CB1C48DC00454934FC35F935EE35E335D108F2C9E535E035580BD8CCAF36A4366A0A45C9A3369836E302C0CBBB36B036FE0739C9AE3
6A336EE00A0C9A4366C36AE07C3CD143709372004E0C80837FD36B708A8CDEC38E138A10509C7
E138D63815014FCAD5385C3813068EC75B38503823FEA5C95138403768031DCB5B3950395A039
AC64F394439B0FB1ECA9F3994396C0157C69339893941FAC0C689394F398401B8CB513A463AD8
FEA5C5473A3C3AFD3AF73AEC3AE23A2302F3C4E83AE23ADC3AD83ACD3A8038510184C9B43AAF3
AF6FF3CC5B03AA53ABFF7BDC8DA3ACF3A4CFD33C5E63ADC3A59F610C5DE3AD33A99F23FC9D33A
B53807390139F638EC3832F3EAC6F238ED385DF8EFCDFA3BEF3B6BF6FCC3F13BE63BDEF026C9E
83BD93BDBF613C4DA3BCF3B57F400D4EB4C3A4EF10979CB1CBF5FB4ABB144BBAC4E84511B049A
CA23BC2EB469AE4EBB98518E519CFEC0D9144BD13B5D44EB4C974FFE54930754CC29BBBDB5D7A
A53C628551D55C70189DF59474E3EF7EB9FC1513E463E18E447C7493E6E3B303C283C1D3C133C
A8EE29D6A253C756B70787C5AEB970AF19A911BFE756DC56CBF8FDDDDB4B7F3F9EE770C0823F7
73FC1DF01C67A3FAA3C4DE2FFC3AD3C443C903C873C7D3C723C43DB64C37E3C783C6E3D653D5B
3D503DBBEB7BD7D8558E5A1AFCAAC1D6B5C6AE51A5DEC7AE5AA35A995A8E5A3E49443B7CE0ECD
C1957D35CDE01A9C166B58AAE0CA3E5CEF35CE85CDE5CD45CDD46EF3695CD81CF8F3A8A3A8DCC
65C58F3A843AB5D068C8863A773972396A395F39553952CAEDCA373D323D81D2BEC2363D2C3D2
63D1D3D123D4E3CBAD687EFC75BC35B09F293BC27A430DED85BCD5B78EAC4EAC63EB93B5ECCD7
C7E93BDF3B67C411C4E43B6F372DD0。步驟106 :對整形后的待解析數據進行一次解碼,得到一次解碼數據;具體地,所述對整形后的待解析數據進行一次解碼是指根據整形后的待解析數據對應的波形的寬度對數據進行解碼;優選地,參加圖4,所述對整形后的待解析數據進行一次解碼,得到一次解碼數據具體包括步驟106-1 :將所述整形后的待解析數據中的首個數據作為當前數據;步驟106-2 :判斷是否有與當前數據相鄰的下一數據,是則執行步驟106-3,否則執行步驟106-8 ;步驟106-3 :判斷當前數據和與其相鄰的下一數據的乘積是否為0,是則執行步驟106-4,否則執行步驟106-5 ;步驟106-4 :記錄當前數據和與其相鄰的下一數據二者中為O —方所對應的橫坐標,執行步驟106-7 ;優選地,在本實施例中,約定所述整形后的待解析數據中的首個數據對應的橫坐標為O ;步驟106-5 :判斷當前數據和與其相鄰的下一數據的乘積是否大于0,是則執行步驟106-7,否則執行步驟106-6 ;在本實施例中,步驟106-3與步驟106-5的順序可調,在此不做限制;步驟106-6 :根據當前數據和與其相鄰的下一數據對應的坐標,確定直線方程,記錄所述直線方程與橫軸交點對應的橫坐標,執行步驟106-7 ;步驟106-7 :將所述與當前數據相鄰的下一數據作為當前數據,返回執行步驟
106-2 ;步驟106-8 :將記錄的每兩個相鄰橫坐標作為一組,計算每組中的后者減去前者,判斷得到的計算結果,若其在第一預設范圍內則解碼為第一數值,在第二預設范圍內則解碼為第二數值,在第三預設范圍內則解碼為第三數值;例如,在實施例中,第一數據為數據單元0x10,第二數值為數據單元0x08,第三數值為數據單元0x04,則在本實施例中,對整形后的待解析數據進行一次解碼得到的一次解碼數據具體為10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10
1010 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 1010 10 10 10 10 10 10 10 10 10 10 10 10 10 04 04 04 04 04 04 04 04 04 04 10 0810 08 10 04 10 04 04 04 10 04 10 04 10 04 10 04 10 08 04 04 04 04 10 08 04 0410 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 0404 04 04 04 04 04 04 04 04 04 04 04 04 04 10 04 10 04 04 04 04 04 04 04 04 0404 04 10 04 04 04 04 04 04 04 04 04 04 04 04 08 04 08 04 04 10 08 04 04 0404 04 04 10 04 04 08 04 04 04 04 04 04 04 04 10 04 10 04 04 08 10 04 04 0810 04 04 04 04 04 10 04 04 04 10 04 04 04 04 04 04 00 ;步驟107 :根據一次解碼數據判斷待解析數據中是否包含頭部數據,是則執行步驟110,否則執行步驟108;優選地,所述根據一次解碼數據判斷待解析數據中是否包含頭部數據具體為判斷一次解碼數據中是否有符合第一格式的數據,是則待解析數據中包含頭部數據,否則待解析數據中不包含頭部數據;具體地,在本實施例中,所述符合第一格式的數據為連續的不少于15個的數據單兀 0x10 ;步驟108 :判斷第一數據緩沖區中是否有數據,是則清除第一數據緩沖區中的數據,執行步驟109,否則直接執行步驟109 ;步驟109 :丟棄本次接收到的音頻數據;優選地,步驟109中還包括將待解析數據末尾的部分數據存入第一數據緩沖區。步驟110 :獲取一次解碼數據中與數據長度對應的數據單元并對其進行二次解碼,根據解碼結果計算得到數據長度;優選地,為了解析裝置能更準確的分割頭部數據,在本實施例中,發送給解析裝置的音頻數據中頭部數據與數據長度數據之間設置有標記數據,例如,在本實施例中,所述符合第一個格式的數據后的2個數據單元0x04 0x04代表標記數據,所述一次解碼數據中與數據長度數據對應的數據單元為所述代表標記數據的數據單元之后的16個數據單元0404 04 04 04 04 04 04 04 04 04 04 10 04 04 04 ;若不能成功獲取到全部與數據長度數據對應的數據單元,則將本次接收到的音頻數據存入第一數據緩沖區,返回執行步驟101 ;所述二次解碼具體為將數據單元0x08解碼為I,將數據單元0x04解碼為O ;例如,在本實施例中,通過對數據單元04 04 04 04 04 04 04 04 04 04 04 04 10 04 04 04進行二次解碼得到數據O 00000000000100 0,本實施例中,數據傳入采用小端方式,低位在前,高位在后,O 0000000為00000000 =0x00,O 0 0 0 1 0 0O為0001000 0=0x10,數據長度為16個字節(128個比特),對應128個數據單元。步驟111 :根據計算得到的數據長度獲取一次解碼數據中相應的數據單元;
具體地,在本實施例中,發送給解析裝置的音頻數據還包含校驗數據,對應一次解碼數據末尾的8個數據單元,因此所述相應的數據單元為數據長度數據對應的數據單元之后的136個數據單元;在本實施例中,所述相應的數據單元為10 08 10 08 10 04 10 04 04 04 10 04
1004 10 04 10 04 10 08 04 04 04 04 10 08 04 04 10 04 04 04 04 04 04 04 04 0404 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 0404 04 04 04 10 04 10 04 04 04 04 04 04 04 04 04 04 04 10 04 04 04 04 04 04 0404 04 04 04 04 08 04 08 04 04 10 08 04 04 04 04 04 04 10 04 04 08 04 04 04 0404 04 04 04 10 04 10 04 04 08 10 04 04 08 10 04 04 04 04 04 ;步驟112 :判斷是否成功獲取到全部的所述相應的數據單元,是則執行步驟113,否則將本次接收到的音頻數據存入第一數據緩沖區,返回執行步驟101 ;進一步地,步驟110、步驟111和步驟112可替換為步驟110丨:判斷第二數據緩沖區中是否有數據,是則將一次解碼數據和第二數據緩沖區中的數據組成第一數據,獲取存儲的數據長度,執行步驟111丨,否則將一次解碼數據作為第一數據,獲取一次解碼數據中與數據長度對應的數據單元并對其進行二次解碼,根據解碼結果計算得到數據長度,執行步驟ill ^ ;步驟111 ':根據數據長度獲取第一數據中相應的數據單元;
步驟112丨:判斷是否成功獲取到全部的所述相應的數據單元,是則執行步驟113,否則將本次接收到的音頻數據存入第一數據緩沖區,將一次解碼數據末尾不能完整解析為一個字節的數據存入第二數據緩沖區并存儲數據長度,返回執行步驟101。步驟113 :對獲取到的數據單元進行二次解碼得到二次解碼數據;具體地,所述二次解碼方法同步驟110中所述,在此不再贅述;在本實施例中,對獲取到的數據單元進行二次解碼得到的二次解碼數據為00000000 00001000 11111010 00101010 10110000 11001000 00000000 0000000000000000 00000000 00001010 00000000 00100000 00000001 01001100 0000100100000000 10100110 01100000 ;步驟114 :將二次解碼數據中每8個比特位組成一個字節數據,根據最后一個字節數據校驗其余字節數據是否正確,是則執行步驟117,否則執行步驟115 ;優選地,在本實施例中采用奇偶校驗;進一步地,當校驗得出其余字節數據不正確時,還包括向上位機返回錯誤提示信息;在本實施例中,將二次解碼數據中每8個比特位組成一個字節數據后,得到的數據為0x5f 0x54 OxOd 0x13 0x00 0x00 0x00 0x00 0x50 0x00 0x04 0x80 0x32 0x900x00 0x65 0x06,其中,最后一個字節0x06為校驗位;步驟115 :判斷第一數據緩沖區中是否有數據,是則清除第一數據緩沖區中的數據,執行步驟116,否則直接執行步驟116 ;進一步地,步驟115中還包括檢查第二數據緩沖區,若所述第二數據緩沖區中有數據則清除第二數據緩沖區中的數據,并刪除存儲的數據長度。步驟116 :丟棄本次接收到的音頻數據,返回執行步驟101 ;
步驟117 :輸出所述其余字節數據,清空第一數據緩沖區,返回執行步驟101。實施例二本發明實施例二提供了一種解析音頻數據的方法,參見圖5,所述方法包括步驟201 :解析裝置接收音頻數據;其中,在本實施例中,步驟201解析裝置接收音頻數據之前還包括步驟S1:解析裝置進行設備初始化;步驟s2 :判斷設備初始化是否成功,是則執行步驟S3 ;否則提示設備初始化失敗;步驟s3 :創建錄音線程,開始接收音頻數據。步驟202 :判斷第一數據緩沖區中是否有數據,是則執行步驟203,否則執行步驟204 ;優選地,在本實施例中,設置標志用于標識所述第一數據緩沖區中是否有數據,約定該標志置位標識所述第一數據緩沖區中有數據,該標志復位標識第一數據緩沖區中沒有數據。步驟203 :將本次接收到的音頻數據與第一數據緩沖區中的數據組成待解析數據,執行步驟205 ;步驟204 :將本次接收到的音頻數據作為待解析數據,執行步驟205 ;步驟205 :對待解析數據進行整形,得到整形后的待解析數據;優選地,在本實施例中,所述對待解析數據進行整形的方法,與實施例一中所述的整形方法相同,在此不再贅述。步驟206 :根據整形后的待解析數據判斷待解析數據中是否包含頭部數據,是則執行步驟209,否則執行步驟207 ;具體地,參見圖6,步驟206具體包括步驟206-1 :將整形后的待解析數據的首個數據作為當前數據;步驟206-2:判斷是否有與當前數據相鄰的下一數據,是則執行步驟206-3,否則待解析數據中不包含頭部數據,執行步驟207 ;步驟206-3 :判斷當前數據和與其相鄰的下一數據的乘積,若所述乘積等于0,則執行步驟206-4,若所述乘積小于O則執行步驟206-5,若所述乘積大于0,則執行步驟206-6 ;步驟206-4 :初始化第一計數值為2,從與二者中值為O的數據相鄰的下一數據開始尋找是否存在符合第二格式的數據,是則待解析數據中包含頭部數據,執行步驟209,否則待解析數據中不包含頭部數據,執行步驟207 ;步驟206-5 :初始化第一計數值為1,從與所述當前數據相鄰的下一數據開始尋找是否存在符合第二格式的數據,是則待解析數據中包含頭部數據,執行步驟209,否則待解析數據中不包含頭部數據,執行步驟207 ;步驟206-6 :將與所述當前數據相鄰的下一數據作為當前數據,返回執行步驟206-2 ;進一步地,參見圖7,從某一數據開始尋找是否存在符合第二格式的數據具體包括
步驟a :初始第二計數值為0,將所述某一數據作為當前數據;步驟b:判斷是否有與當前數據相鄰的下一數據,是則執行步驟C,否則不存在符合第二格式的數據;步驟C :判讀當前數據和與其相鄰的下一數據的乘積,若乘積為O則執行步驟d,若乘積大于O則執行步驟e,若乘積小于O則執行步驟f ;步驟d:第一計數值加1,判斷第一計數值,若在第四預設范圍內則第二計數值加1,執行步驟g,若在第五預設范圍內則執行步驟h,否則重新執行步驟206-4 ;步驟e :第一計數值加I,執行步驟g ;步驟f:判斷第一計數值,若在第四預設范圍內則第二計數值加1,執行步驟g,若在第五預設范圍內則執行步驟h,否則重新執行上述步驟206-5 ;步驟g :將與當前數據相鄰的下一數據作為當前數據,返回執行步驟b ;步驟h:判斷第二計數值是否小于預設值,是則存在符合第二格式的數據,否則不存在符合第二格式的數據;步驟207 :判斷第一數據緩沖區中是否有數據,是則清除第一數據緩沖區中的數據,執行步驟208,否則直接執行步驟208 ;步驟208 :丟棄本次接收到的音頻數據,返回執行步驟201 ;優選地,步驟208中還包括將解析數據末尾的部分數據存入第一數據緩沖區。步驟209 :獲取整形后的待解析數據中的解碼寬度數據,計算解碼寬度;具體地,在本實施例中,解析裝置接收到的音頻數據中頭部數據后設置有解碼寬度數據;參見圖8,步驟209具體包括步驟209-1 :獲取整形后的待解析數據中所述符合第二格式的數據之后的首個數據作為當前數據;步驟209-2 :判斷是否有與當前數據相鄰的下一數據,是則執行步驟209-3,否則將本次接收到的音頻數據存入第一數據緩沖區,返回執行步驟201 ;步驟209-3 :判斷當前數據和與其相鄰的下一數據的乘積,若等于O則執行步驟209-4,若小于O則執行步驟209-5,若大于O則執行步驟209-7 ;步驟209-4 :記錄當前數據和與其相鄰的下一數據二者中為O —方所對應的橫坐標,執行步驟209-6 ;步驟209-5 :根據當前數據和與其相鄰的下一數據對應的坐標,確定直線方程,記錄所述直線方程與橫軸交點對應的橫坐標,執行步驟209-6 ;步驟209-6 :判斷記錄的橫坐標的個數是否等于16,是則執行步驟209_8,否則執行步驟209-7 ;步驟209-7 :將與所述當前數據相鄰的下一數據作為當前數據,返回執行步驟
209-2 ;步驟209-8 :計算記錄的前4個橫坐標和后4個橫坐標的平均值,作為第一解碼寬度,計算記錄的中間8個橫坐標的平均值,作為第二解碼寬度;進一步地,為了能更準確的分割頭部數據,還可在頭部數據和解碼寬度數據之間設置標記數據,相應地,上述步驟209-1替換為獲取整形后的待解析數據中所述標記數據對應的數據之后的首個數據作為當前數據。步驟210 :獲取整形后的待解析數據中的數據長度數據,對獲取到的數據進行解碼,根據解碼結果計算數據長度;參見圖9,所述獲取整形后的待解析數據中的數據長度數據,對獲取到的數據進行解碼具體包括步驟210-1 :獲取整形后的待解析數據中解碼寬度數據之后的首個數據作為當前數據;步驟210-2:判斷是否有與當前數據相鄰的下一數據,是則執行步驟210-3,否則將本次接收到的音頻數據存入第一數據緩沖區,返回執行步驟201 ;步驟210-3 :判斷當前數據和與其相鄰的下一數據的乘積,若等于O則執行步驟
210-4,若小于O則執行步驟210-5,若大于O則執行步驟210-7;步驟210-4 :記錄當前數據和與其相鄰的下一數據二者中為O —方所對應的橫坐標,執行步驟210-6 ;步驟210-5 :根據當前數據和與其相鄰的下一數據對應的坐標,確定直線方程,記錄所述直線方程與橫軸交點對應的橫坐標,執行步驟210-6 ;步驟210-6 :判斷記錄的橫坐標的個數是否等于16,是則執行步驟210_8,否則執行步驟210-7 ;步驟210-7 :將與所述當前數據相鄰的下一數據作為當前數據,返回執行步驟210-2 ;步驟210-8 :將記錄的每兩個相鄰橫坐標作為一組,計算每組中的后者減去前者,判斷得到的計算結果,若在第六預設范圍內則解碼為1,若在第七預設范圍內則解碼為O ;其中,所述第六預設范圍根據第一解碼寬度確定,所述第七預設范圍根據第二解碼寬度確定;本實施例中,數據傳入采用小端方式,低位在前,高位在后,例如,若解碼結果為O00000000000100 0,00000000 為 00000000 =0x00,0 0 0 01000為0001000 0=0x10,則數據長度為16個字節。步驟211 :根據計算得到的數據長度獲取整形后的待解析數據中相應的數據;具體地,在本實施例中,發送給解析裝置的音頻數據包含校驗數據,位于音頻數據末尾。步驟212 :判斷是否成功獲取到全部的所述相應的數據,是則執行步驟214,否則執行步驟213 ;具體地,參見圖10,步驟211和步驟212可細化為步驟211-1 :獲取整形后的待解析數據中數據長度數據之后的首個數據作為當前數據;步驟211-2:判斷是否有與當前數據相鄰的下一數據,是則執行步驟211-3,否則未成功獲取到全部的所述相應數據,執行步驟213 ;步驟211-3 :判斷當前數據和與其相鄰的下一數據的乘積,若等于O則執行步驟
211-4,若小于O則執行步驟211-5,若大于O則執行步驟211-7;步驟211-4 :記錄當前數據和與其相鄰的下一數據二者中為O —方所對應的橫坐標,執行步驟211-6 ;步驟211-5 :根據當前數據和與其相鄰的下一數據對應的坐標,確定直線方程,記錄所述直線方程與橫軸交點對應的橫坐標,執行步驟211-6 ;步驟211-6 :判斷記錄的橫坐標的個數是否等于數據長度加I后與16的乘積,是則成功獲取到全部的所述相應數據,否則執行步驟211-7 ;步驟211-7 :將所述與當前相鄰的下一數據作為當前數據,返回執行步驟211-2。步驟213 :將本次接收到的音頻數據存入第一數據緩沖區,返回執行步驟201 ;進一步地,步驟210、步驟211、步驟212和步驟213可替換為步驟210丨:判斷第二緩沖區中是否有數據,是則將整形后的待解析數據與第二數據緩沖區中的數據組成第一數據,獲取存儲的數據長度,執行步驟211丨,否則將整形后的待解析數據作為第一數據,獲取所述整形后的解析數據中的數據長度數據并對根據解碼寬度對其進行解碼,根據解碼結果計算得到數據長度,執行步驟211丨;步驟211':根據數據長度獲取第一數據中相應的數據;步驟212丨:判斷是否成功獲取到全部的所述相應的數據,是則執行步驟214,否則執行步驟213 ^ ;步驟213丨:將本次接收到的音頻數據存入第一數據緩沖區,將一次解碼數據末尾不能完整解析為一個字節的數據存入第二數據緩沖區,并存儲數據長度,返回執行步驟201。步驟214 :對獲取 到的數據進行解碼,得到解碼數據;步驟214具體包括將記錄的每兩個相鄰橫坐標作為一組,計算每組中的后者減去前者,判斷得到的計算結果,若在第六預設范圍內則解碼為1,若在第七預設范圍內則解碼為O。步驟215 :將解碼數據中每8個比特位組成一個字節數據,根據最后一個字節數據校驗其余字節數據是否正確,是則執行步驟218,否則執行步驟216 ;步驟216 :判斷第一數據緩沖區中是否有數據,是則清除第一數據緩沖區中的數據,執行步驟217,否則直接執行步驟217 ;進一步地,步驟216中還包括檢查第二數據緩沖區,若所述第二數據緩沖區中有數據則清除第二數據緩沖區中的數據,并刪除存儲的數據長度。步驟217 :丟棄本次接收到的音頻數據,返回執行步驟201 ;步驟218 :輸出所述其余字節數據,清空第一數據緩沖區,返回執行步驟201。以上所述,僅為本發明較佳的具體實施方式
,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發明公開的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應該以權利要求的保護范圍為準。
權利要求
1.一種解析音頻數據的方法,其特征在于包括 步驟A :解析裝置接收音頻數據,判斷第一數據緩沖區中是否有數據,是則將本次接收到的音頻與第一數據緩沖區中的數據組成待解析數據,否則將本次接收到的音頻數據作為待解析數據; 步驟B :對所述待解析數據進行整形,得到整形后的待解析數據; 步驟C :對所述整形后的待解析數據進行一次解碼,得到一次解碼數據; 步驟D :根據所述一次解碼數據判斷待解析數據中是否包含頭部數據,是則執行步驟E,否則若第一數據緩沖區中有數據則清除第一數據緩沖區中的數據,返回執行步驟A,沒有數據則直接返回執行步驟A ; 步驟E :獲取數據長度,根據獲取到的數據長度獲取第一數據中相應的數據單元; 步驟F :判斷是否成功獲取到全部的所述相應數據單元,是則執行步驟G,否則將本次接收到的音頻數據存入第一數據緩沖區,返回執行步驟A ; 步驟G :對獲取到的數據單元進行二次解碼,根據解碼結果得到相應的字節數據,根據最后一個字節數據校驗其余字節數據是否正確,是則輸出所述其余字節數據,否則若第一數據緩沖區中有數據則清除第一數據緩沖區中的數據,返回執行步驟A,沒有數據則直接返回執行步驟A。
2.根據權利要求1所述的方法,其特征在于,所述步驟D中,當待解析數據中不包含頭部數據時還包括將待解析數據末尾的部分數據存入第一數據緩沖區。
3.根據權利要求1所述的方法,其特征在于,所述步驟F中,當沒有成功獲取到全部的所述相應數據單元時還包括存儲數據長度并將一次解碼數據末尾不能完整解析為一個字節的數據存入第二數據緩沖區; 所述步驟E具體包括 步驟El :判斷第二數據緩沖區中是否有數據,是則執行步驟E2,否則執行步驟E3 ;步驟E2 :將一次解碼數據與第二數據緩沖區中的數據組成第一數據,獲取存儲的數據長度,執行步驟E4 ; 步驟E3 :將一次解碼數據作為第一數據,獲取所述一次解碼數據中與數據長度對應的數據單元并對其進行二次解碼,根據解碼結果計算得到數據長度,執行步驟E4 ; 步驟E4 :根據數據長度獲取第一數據中相應的數據單元; 所述步驟G中,當所述其余字節數據不正確時還包括檢查第二數據緩沖區,若所述第二數據緩沖區中有數據則清除第二數據緩沖區中的數據,并刪除存儲的數據長度。
4.根據權利要求1所述的方法,其特征在于,步驟C、步驟D、步驟E、步驟F和步驟G替換為 步驟C ':根據整形后的待解析數據判斷待解析數據中是否包含頭部數據,是則執行步驟D ',否則若第一數據緩沖區中有數據則清除第一數據緩沖區中的數據,返回執行步驟A,沒有數據則直接返回執行步驟A ; 步驟D ':獲取所述整形后的待解析數據中的解碼寬度數據,計算解碼寬度; 步驟E / :獲取數據長度,根據獲取到的數據長度獲取第一數據中相應的數據; 步驟F':判斷是否成功獲取到全部的所述相應的數據,是則執行步驟G ',否則將本次接收到的音頻數據存入第一數據緩沖區,返回執行步驟A ;步驟G ':根據解碼寬度對獲取到的數據進行解碼,根據解碼結果得到相應的字節數據,根據最后一個字節數據校驗其余字節數據是否正確,是則輸出所述其余字節數據,否則若第一數據緩沖區中有數據則清除第一數據緩沖區中的數據,返回執行步驟A,沒有數據則直接返回執行步驟A。
5.根據權利要求4所述的方法,其特征在于,所述步驟C'中,當待解析數據中不包含頭部數據時還包括將待解析數據末尾的部分數據存入第一數據緩沖區。
6.根據權利要求4所述的方法,其特征在于,所述步驟F'中,若沒有成功獲取到全部的所述相應數據單元時還包括,存儲數據長度并將一次解碼數據末尾不能完整解析為一個字節的數據存入第二數據緩沖區; 所述步驟E丨具體包括 步驟El':判斷第二緩沖區中是否有數據,是則執行步驟E2 ',否則執行步驟E3 '; 步驟E2丨:將整形后的待解析數據與第二數據緩沖區中的數據組成第一數據,獲取存儲的數據長度,執行步驟E4 '; 步驟E3丨:將整形后的待解析數據作為第一數據,獲取所述整形后的解析數據中的數據長度數據并對根據解碼寬度對其進行解碼,根據解碼結果計算得到數據長度,執行步驟E4 ;; 步驟E4':根據數據長度獲取第一數據中相應的數據; 所述步驟G '中,當所述其余字節數據不正確時還包括檢查第二數據緩沖區,若所述第二數據緩沖區中有數據則清除第二數據緩沖區中的數據,并刪除存儲的數據長度。
7.根據權利要求1或4所述的方法,其特征在于,所述解析裝置接收音頻數據之前包括 解析裝置進行設備初始化,判斷設備初始化是否成功,是則創建錄音線程,開始接收音頻數據,否則提示設備初始化失敗。
8.根據權利要求1或4所述的方法,其特征在于,所述對所述待解析數據進行整形具體包括 ①分配一塊大小與待解析數據的數據長度相同的新內存; ②判斷待解析數據中是否還有未處理的數據,是則執行③,否則執行④; ③獲取基線,判斷是否成功獲取到基線,是則將當前數據與基線的差值存儲到所述新內存中,返回執行②,否則將當前數據存儲到所述新內存中,返回執行②; ④用所述新內存中的數據替換所述待解析數據,得到整形后的待解析數據,釋放所述新內存。
9.根據權利要求8所述的方法,其特征在于,所述獲取基線具體包括 獲取當前數據之前的預設值個數據和之后的預設值個數據,尋找獲取到的數據和當前數據中的最大值與最小值,計算所述最大值與最小值的平均值,所述平均值即為基線。
10.根據權利要求1所述的方法,其特征在于,所述步驟C具體包括 ①將所述整形后的待解析數據中的首個數據作為當前數據; ②判斷是否有與當前數據相鄰的下一數據,是則執行③,否則執行⑤; ③判斷當前數據和與其相鄰的下一數據的乘積,若為O則記錄當前數據和與其相鄰的下一數據二者中為O —方所對應的橫坐標的值,執行④,若大于O則執行④,若小于O則根據當前數據和與其相連的下一數據對應的坐標確定直線方程,記錄所述直線方程與橫軸交點對應的橫坐標的值,執行④; ④將所述與當前數據相鄰的下一數據作為當前數據,返回②; ⑤將記錄的每兩個相鄰橫坐標作為一組,計算每組中的后者減去前者,判斷得到的計算結果,若其在第一預設范圍內則解碼為第一數值,在第二預設范圍內則解碼為第二數值,在第三預設范圍內則解碼為第三數值。
11.根據權利要求10所述的方法,其特征在于,所述根據所述一次解碼數據判斷待解析數據中是否包含頭部數據包括 判斷一次解碼數據中是否有符合第一格式的數據,是則待解析數據中包含頭部數據,否則待解析數據中不包含頭部數據。
12.根據權利要求11所述的方法,其特征在于,所述第一格式的數據為連續的不少于預設個數個第一數值。
13.根據權利要求10所述的方法,其特征在于,所述進行二次解碼包括將第二數值解碼為I,將第三數值解碼為O。
14.根據權利要求4所述的方法,其特征在于,根據所述整形后的待解析數據判斷待解析數據中是否包含頭部數據包括 ①將整形后的待解析數據的首個數據作為當前數據; ②判斷是否有與當前數據相鄰的下一數據,是則執行③,否則待解析數據中不包含頭部數據; ③判斷當前數據和與其相鄰的下一數據的乘積,若所述乘積等于O則執行④,若所述乘積小于O則執行⑤,若所述乘積大于O則將與所述當前數據相鄰的下一數據作為當前數據,返回執行②; ④初始化第一計數值為2,從與當前數據和與其相鄰的下一數據二者中為O的數據相鄰的下一數據開始尋找是否存在符合第二格式的數據,是則待解析數據中包含頭部數據,否則待解析數據中不包含頭部數據; ⑤初始化第一計數值為1,從與所述當前數據相鄰的下一數據開始尋找是否存在符合第二格式的數據,是則待解析數據中包含頭部數據,否則待解析數據中不包含頭部數據。
15.根據權利要求14所述的方法,其特征在于 所述④中包括初始化第一計數值為2 ;所述⑤中包括初始化第一計數值為I ; 從某數據開始尋找是否存在符合第二格式的數據,其中,所述某數據為與當前數據和與其相鄰的下一數據二者中為O的數據相鄰的下一數據或與所述當前數據相鄰的下一數據,包括 a :初始第二計數值為0,將所述某數據作為當前數據; b :判斷是否有與當前數據相鄰的下一數據,是則執行C,否則不存在符合第二格式的數據; c :判讀當前數據和與其相鄰的下一數據的乘積,若乘積為O則執行d,若乘積大于O則執行e,若乘積小于O則執行f ; d :第一計數值加1,判斷第一計數值,若在第四預設范圍內則第二計數值加1,執行g,若在第五預設范圍內則執行h,否則重新執行所述④;e :第一計數值加1,執行g ; f :判斷第一計數值,若在第四預設范圍內則第二計數值加1,執行g,若在第五預設范圍內則執行h,否則重新執行所述⑤; g :將與當前數據相鄰的下一數據作為當前數據,返回執行b ; h :判斷第二計數值是否小于預設值,是則不存在符合第二格式的數據,否則存在符合第二格式的數據。
16.根據權利要求4所述的方法,其特征在于,所述步驟D'具體包括 ①獲取整形后的待解析數據中所述頭部數據之后的首個數據作為當前數據; ②判斷是否有與當前數據相鄰的下一數據,是則執行③,否則將本次接收到的音頻數據存入第一數據緩沖區,返回執行步驟A ; ③判斷當前數據和與其相鄰的下一數據的乘積,若等于O則執行④,若小于O則執行⑤,若大于O則執行⑦;④記錄當前數據和與其相鄰的下一數據二者中為O—方所對應的橫坐標,執行⑥; ⑤根據當前數據和與其相鄰的下一數據對應的坐標,確定直線方程,記錄所述直線方程與橫軸交點對應的橫坐標,執行⑥; ⑥判斷記錄的橫坐標的個數是否等于16,是則執行⑧,否則執行⑦; ⑦將與所述當前數據相鄰的下一數據作為當前數據,返回執行②; ⑧計算記錄的前4個橫坐標和后4個橫坐標的平均值,作為第一解碼寬度,計算記錄的中間8個橫坐標的平均值,作為第二解碼寬度。
17.根據權利要求6所述的方法,其特征在于,所述獲取所述整形后的待解析數據中的數據長度數據并根據解碼寬度對其進行解碼具體包括 S1、獲取整形后的待解析數據中解碼寬度數據之后的首個數據作為當前數據;s2、判斷是否有與當前數據相鄰的下一數據,是則執行s3,否則將本次接收到的音頻數據存入第一數據緩沖區,返回執行步驟A ; S3、判斷當前數據和與其相鄰的下一數據的乘積,若等于O則執行步驟s4,若小于O則執行步驟s5,若大于O則執行步驟s7 ; s4、記錄當前數據和與其相鄰的下一數據二者中為O —方所對應的橫坐標,執行s6 ;s5、根據當前數據和與其相鄰的下一數據對應的坐標,確定直線方程,記錄所述直線方程與橫軸交點對應的橫坐標,執行s6 ; s6、判斷記錄的橫坐標的個數是否等于16,是則執行s8,否則執行s7 ;s7、將與所述當前數據相鄰的下一數據作為當前數據,返回執行s2 ;s8、將記錄的每兩個相鄰橫坐標作為一組,計算每組中的后者前去前者,判斷得到的計算結果,若在第六預設范圍內則解碼為1,若在第七預設范圍內則解碼為O ; 其中,所述第六預設范圍根據第一解碼寬度確定,所述第七預設范圍根據第二解碼寬度確定。
全文摘要
本發明公開一種解析音頻數據的方法,屬于通信領域,具體包括解析裝置接收音頻數據,得到待解析數據,對所述待解析數據進行整形得到整形后的待解析數據,對所述整形后的待解析數據進行一次解碼得到一次解碼數據,判斷待解析數據中是否包含頭部數據,是則獲取數據長度,根據獲取到的數據長度獲取第一數據中相應的數據單元,當成功獲取到全部的所述相應數據單元時對獲取到的數據單元進行二次解碼,根據解碼結果得到相應字節數據,并進行校驗,否則將本次接收到的音頻數據存入第一數據緩沖區,繼續接收音頻數據。其有益效果在于提高了音頻數據解析的效率和命中率,廣泛適用于基于耳機通訊的雙方進行數字通訊。
文檔編號G10L25/00GK103065641SQ20131004075
公開日2013年4月24日 申請日期2013年2月1日 優先權日2013年2月1日
發明者陸舟, 于華章 申請人:飛天誠信科技股份有限公司