[go: up one dir, main page]

CN103065641B - 一种解析音频数据的方法 - Google Patents

一种解析音频数据的方法 Download PDF

Info

Publication number
CN103065641B
CN103065641B CN201310040757.9A CN201310040757A CN103065641B CN 103065641 B CN103065641 B CN 103065641B CN 201310040757 A CN201310040757 A CN 201310040757A CN 103065641 B CN103065641 B CN 103065641B
Authority
CN
China
Prior art keywords
data
resolved
adjacent
current
decoded
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201310040757.9A
Other languages
English (en)
Other versions
CN103065641A (zh
Inventor
陆舟
于华章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201310040757.9A priority Critical patent/CN103065641B/zh
Publication of CN103065641A publication Critical patent/CN103065641A/zh
Priority to US14/764,313 priority patent/US10013824B2/en
Priority to PCT/CN2014/070595 priority patent/WO2014117646A1/zh
Application granted granted Critical
Publication of CN103065641B publication Critical patent/CN103065641B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/16Vocoder architecture
    • G10L19/167Audio streaming, i.e. formatting and decoding of an encoded audio signal representation into a data stream for transmission or storage purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/60Information retrieval; Database structures therefor; File system structures therefor of audio data
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
    • G07C9/00Individual registration on entry or exit
    • G07C9/20Individual registration on entry or exit involving the use of a pass
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/008Multichannel audio signal coding or decoding using interchannel correlation to reduce redundancy, e.g. joint-stereo, intensity-coding or matrixing
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L25/00Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
    • G10L25/48Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 specially adapted for particular use
    • G10L25/69Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00 specially adapted for particular use for evaluating synthetic or decoded voice signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04SSTEREOPHONIC SYSTEMS 
    • H04S3/00Systems employing more than two channels, e.g. quadraphonic
    • H04S3/008Systems employing more than two channels, e.g. quadraphonic in which the audio signals are in digital form, i.e. employing more than two discrete digital channels
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04SSTEREOPHONIC SYSTEMS 
    • H04S2400/00Details of stereophonic systems covered by H04S but not provided for in its groups
    • H04S2400/15Aspects of sound capture and related signal processing for recording or reproduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Acoustics & Sound (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Computational Linguistics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Television Signal Processing For Recording (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本发明公开一种解析音频数据的方法,属于通信领域,具体包括:解析装置接收音频数据,得到待解析数据,对所述待解析数据进行整形得到整形后的待解析数据,对所述整形后的待解析数据进行一次解码得到一次解码数据,判断待解析数据中是否包含头部数据,是则获取数据长度,根据获取到的数据长度获取第一数据中相应的数据单元,当成功获取到全部的所述相应数据单元时对获取到的数据单元进行二次解码,根据解码结果得到相应字节数据,并进行校验,否则将本次接收到的音频数据存入第一数据缓冲区,继续接收音频数据。其有益效果在于提高了音频数据解析的效率和命中率,广泛适用于基于耳机通讯的双方进行数字通讯。

Description

一种解析音频数据的方法
技术领域
本发明涉及通信领域,特别涉及一种解析音频数据的方法。
背景技术
智能密钥设备,是一种带有处理器和存储器的小型硬件装置,主要用于身份认证、软件保护等领域,它通过计算机的数据通讯接口与计算机连接,然而随着手机技术的发展,手机越来越多的替代了计算机的功能;发明人在实现本发明的过程中发现,目前尚无一种有效的方法实现在手机上使用智能密钥设备进行数字通讯。
发明内容
为了解决现有技术中存在的问题,本发明提供了一种解析音频数据的方法,所述装置内置于手机中,智能密钥设备为耳机Key,通过耳机接口与手机进行通讯,需要说明的是,本发明不限于手机与智能密钥设备进行数字通讯,适用于任意基于耳机通讯的双方进行数字通讯。
本发明方法是通过下述技术方案实现的:
一种解析音频数据的方法,具体包括:
步骤A:解析装置接收音频数据,判断第一数据缓冲区中是否有数据,是则将本次接收到的音频与第一数据缓冲区中的数据组成待解析数据,否则将本次接收到的音频数据作为待解析数据;
步骤B:对所述待解析数据进行整形,得到整形后的待解析数据;
步骤C:对所述整形后的待解析数据进行一次解码,得到一次解码数据;
步骤D:根据所述一次解码数据判断待解析数据中是否包含头部数据,是则执行步骤E,否则若第一数据缓冲区中有数据则清除第一数据缓冲区中的数据,返回执行步骤A,没有数据则直接返回执行步骤A;
步骤E:获取数据长度,根据获取到的数据长度获取第一数据中相应的数据单元;
步骤F:判断是否成功获取到全部的所述相应的数据单元,是则执行步骤G,否则将本次接收到的音频数据存入第一数据缓冲区,返回执行步骤A;
步骤G:对获取到的数据单元进行二次解码,根据解码结果得到相应的字节数据,根据最后一个字节数据校验其余字节数据是否正确,是则输出所述其余字节数据,否则若第一数据缓冲区中有数据则清除第一数据缓冲区中的数据,返回执行步骤A,没有数据则直接返回执行步骤A。
进一步地,所述步骤C具体包括:
①将所述整形后的待解析数据中的首个数据作为当前数据;
②判断是否有与当前数据相邻的下一数据,是则执行③,否则执行⑤;
③判断当前数据和与其相邻的下一数据的乘积,若为0则记录当前数据和与其相邻的下一数据二者中为0一方所对应的横坐标的值,执行④,若大于0则执行④,若小于0则根据当前数据和与其相连的下一数据对应的坐标确定直线方程,记录所述直线方程与横轴交点对应的横坐标的值,执行④;
④将所述与当前数据相邻的下一数据作为当前数据,返回②;
⑤将记录的每两个相邻横坐标作为一组,计算每组中的后者减去前者,判断得到的计算结果,若其在第一预设范围内则解码为第一数值,在第二预设范围内则解码为第二数值,在第三预设范围内则解码为第三数值;
所述根据所述一次解码数据判断待解析数据中是否包含头部数据包括:判断一次解码数据中是否有符合第一格式的数据,是则待解析数据中包含头部数据,否则待解析数据中不包含头部数据,所述第一格式的数据为连续的不少于预设个数个第一数值;
所述进行二次解码包括:将第二数值解码为1,将第三数值解码为0;
所述步骤D中,当待解析数据中不包含头部数据时还包括:将待解析数据末尾的部分数据存入第一数据缓冲区;
所述步骤F中,当没有成功获取到全部的所述相应的数据单元时还包括:存储数据长度并将一次解码数据末尾不能完整解析为一个字节的数据存入第二数据缓冲区;相应地,所述步骤E具体包括:
步骤E1:判断第二数据缓冲区中是否有数据,是则执行步骤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'具体包括:
步骤E1':判断第二缓冲区中是否有数据,是则执行步骤E2',否则执行步骤E3';
步骤E2':将整形后的待解析数据与第二数据缓冲区中的数据组成第一数据,获取存储的数据长度,执行步骤E4';
步骤E3':将整形后的待解析数据作为第一数据,获取所述整形后的待解析数据中的数据长度数据并对根据解码宽度对其进行解码,根据解码结果计算得到数据长度,执行步骤E4';
步骤E4':根据数据长度获取第一数据中相应的数据;
所述步骤G'中,当所述其余字节数据不正确时还包括:检查第二数据缓冲区,若所述第二数据缓冲区中有数据则清除第二数据缓冲区中的数据,并删除存储的数据长度;
根据所述整形后的待解析数据判断待解析数据中是否包含头部数据包括:
①将整形后的待解析数据的首个数据作为当前数据;
②判断是否有与当前数据相邻的下一数据,是则执行③,否则待解析数据中不包含头部数据;
③判断当前数据和与其相邻的下一数据的乘积,若所述乘积等于0则执行④,若所述乘积小于0则执行⑤,若所述乘积大于0则将与所述当前数据相邻的下一数据作为当前数据,返回执行②;
④初始化第一计数值为2,从与当前数据和与其相邻的下一数据二者中为0的数据相邻的下一数据开始寻找是否存在符合第二格式的数据,是则待解析数据中包含头部数据,否则待解析数据中不包含头部数据;
⑤初始化第一计数值为1,从与所述当前数据相邻的下一数据开始寻找是否存在符合第二格式的数据,是则待解析数据中包含头部数据,否则待解析数据中不包含头部数据;
所述④中包括初始化第一计数值为2;所述⑤中包括初始化第一计数值为1;
从某数据开始寻找是否存在符合第二格式的数据,其中,所述某数据为与当前数据和与其相邻的下一数据二者中为0的数据相邻的下一数据或与所述当前数据相邻的下一数据,包括:
a:初始第二计数值为0,将所述某数据作为当前数据;
b:判断是否有与当前数据相邻的下一数据,是则执行c,否则不存在符合第二格式的数据;
c:判读当前数据和与其相邻的下一数据的乘积,若乘积为0则执行d,若乘积大于0则执行e,若乘积小于0则执行f;
d:第一计数值加1,判断第一计数值,若在第四预设范围内则第二计数值加1,执行g,若在第五预设范围内则执行h,否则重新执行所述④;
e:第一计数值加1,执行g;
f:判断第一计数值,若在第四预设范围内则第二计数值加1,执行g,若在第五预设范围内则执行h,否则重新执行所述⑤;
g:将与当前数据相邻的下一数据作为当前数据,返回执行b;
h:判断第二计数值是否小于预设值,是则不存在符合第二格式的数据,否则存在符合第二格式的数据;
所述步骤D'具体包括:
①获取整形后的待解析数据中所述头部数据之后的首个数据作为当前数据;
②判断是否有与当前数据相邻的下一数据,是则执行③,否则将本次接收到的音频数据存入第一数据缓冲区,返回执行步骤A;
③判断当前数据和与其相邻的下一数据的乘积,若等于0则执行④,若小于0则执行⑤,若大于0则执行⑦;
④记录当前数据和与其相邻的下一数据二者中为0一方所对应的横坐标,执行⑥;
⑤根据当前数据和与其相邻的下一数据对应的坐标,确定直线方程,记录所述直线方程与横轴交点对应的横坐标,执行⑥;
⑥判断记录的横坐标的个数是否等于16,是则执行⑧,否则执行⑦;
⑦将与所述当前数据相邻的下一数据作为当前数据,返回执行②;
⑧计算记录的前4个横坐标和后4个横坐标的平均值,作为第一解码宽度,计算记录的中间8个横坐标的平均值,作为第二解码宽度;
所述获取所述整形后的待解析数据中的数据长度数据并根据解码宽度对其进行解码具体包括:
s1、获取整形后的待解析数据中解码宽度数据之后的首个数据作为当前数据;
s2、判断是否有与当前数据相邻的下一数据,是则执行s3,否则将本次接收到的音频数据存入第一数据缓冲区,返回执行步骤A;
s3、判断当前数据和与其相邻的下一数据的乘积,若等于0则执行步骤s4,若小于0则执行步骤s5,若大于0则执行步骤s7;
s4、记录当前数据和与其相邻的下一数据二者中为0一方所对应的横坐标,执行s6;
s5、根据当前数据和与其相邻的下一数据对应的坐标,确定直线方程,记录所述直线方程与横轴交点对应的横坐标,执行s6;
s6、判断记录的横坐标的个数是否等于16,是则执行s8,否则执行s7;
s7、将与所述当前数据相邻的下一数据作为当前数据,返回执行s2;
s8、将记录的每两个相邻横坐标作为一组,计算每组中的后者前去前者,判断得到的计算结果,若在第六预设范围内则解码为1,若在第七预设范围内则解码为0;
其中,所述第六预设范围根据第一解码宽度确定,所述第七预设范围根据第二解码宽度确定。
更进一步地,所述解析装置接收音频数据之前包括:
解析装置进行设备初始化,判断设备初始化是否成功,是则创建录音线程,开始接收音频数据,否则提示设备初始化失败;
所述对所述待解析数据进行整形具体包括:
①分配一块大小与待解析数据的数据长度相同的新内存;
②判断待解析数据中是否还有未处理的数据,是则执行③,否则执行④;
③获取基线,判断是否成功获取到基线,是则将当前数据与基线的差值存储到所述新内存中,返回执行②,否则将当前数据存储到所述新内存中,返回执行②;
④用所述新内存中的数据替换所述待解析数据,得到整形后的待解析数据,释放所述新内存;
其中,所述获取基线具体包括:获取当前数据之前的预设值个数据和之后的预设值个数据,寻找获取到的数据和当前数据中的最大值与最小值,计算所述最大值与最小值的平均值,所述平均值即为基线。
本发明方法的有益效果在于:提高了音频数据解析的效率和命中率,广泛适用于基于耳机通讯的双方进行数字通讯。
附图说明
为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图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:创建录音线程,开始接收音频数据;
例如,在本实施例中,解析装置接收到的音频数据为:DE67D167FF270F0EB1127608E103A6FBADF639F7BC67AF67A267956789677C676F6762671625B50E80113E07560113FA7EF370F74E674267356728671B670E670167F4667022300FE70F5D054EFEBDF764EFA2F7E366D666C966BC66AF66A36696668966E71FA30F5D0E9F03D5FB4FF6E8ECBCF879666C665F665366466639662C661F66C31D0010B00C3902B9F929F540EA73FA11660466F765EA65DE65D165C465B76591226C0E9D0D010175F921F408E90FFCA8659C658F658265766569655C65506570206D0E770C19FF54F8C6F17FE9E5F44365366529651D6510650365F764EA64831D720F630AADFE0BF611F1BCE62EF7DE64D264C564B864AC649F64936486649D1BB50F840856FD3DF4A5F02AE54EF97B646E646264556449643C6430642364C219FB0F0F0797FC01F37FF0DDE32BFC18640C64FF63F363E663DA63CD63C1633A182010B205E9FB67F1FEEF3CE2BEFEB763AA639E639263856379636C6360639B162B1008042AFB56F0E6EFC9E0830156634A633E633163256318630C6300630E151C10250232FAD7EEB8EFADDFC004F762EA62DE62D262C562B962AC62A0628B132210C100C9F990ED84EF2ADE880898628B627F62736266625A624E6241622C12A40F9BFEBBF876ECA0EF4BDDE80B39622D62216215620862FC61F061E461BC10DF0FBAFD5EF860EB45EFFBDB3A0FDC61CF61C361B761AB619F6192618661A20F060F89FB48F7D9E9CDEE86DA73127F61736167615B614E61426136612A618F0E640EF7F98DF6F9E8BCEE7AD97516236117610B61FF60F360E660DA60CE60860DD30D84F8C0F5CCE792EE9AD8E419C860BC60B060A46098608B607F6073606A0CA30C92F6D4F495E606EE44D73A1E6D606160556049603D603160256019606D0EAF0B79F690F336E63DEDC9D6FE2013600760FB5FEF5FE35FD75FCB5FBF5F980DA80A39F545F259E5FBEBD9D6E716BB5FAF5FA45F985F8C5F805F745F685F370CB3090CF31EF172E32EEB2BD5221A655F595F4D5F415F355F295F1D5FEB5EE30A1508D6F0D4EF00E252EA55D33D1E0F5F045FF85EEC5EE05ED45EC85E755B96094B06BDEE58EE36E052E9ECD17B22BC5EB05EA45E985E8C5E805E755E7A5884088F04C9EC61ECB3DE31E843D07125695E5E5E525E465E3A5E2E5E235E0D551807CF0187EA18EB1FDDE4E68ACEE629195E0D5E015EF65DEA5DDE5DD25D9F51E905290094E880E9BEDBACE54BCD1B2ECA5DBE5DB25DA75D9B5D8F5D845D4A4E9C04F3FDB2E6B0E720DA2AE401CCB4317D5D715D655D5A5D4E5D425D375D464B47037FFB7EE487E532D840E220CAE034315D265D1A5D0E5D035DF75CEB5C5448D401CCF858E286E3B4D67FE0E8C89A38E85CDC5CD05CC55CB95CAE5CA25C3B456D0027F6A9E017E14ED5BEDD46C8BD39A05C6342FAF70746845C5447E9F78341695C1E4102F716474D5C5E450CF7F141325C933FD9F5D842175C1D3D75F6C549FC5B1E421CF59846E15BD65BCA5BBF5BB35BBE4613F56E51965B134060F202477B5B705B645B595B4E5BA343E0FBFBEF2BD983DEB3C6E63E455B395B2E5B225B175B7C409DFAB2ED5ED78BDCB3C588420F5B045BF85AED5AE25A0342F3EE544CC75ABB5AB05AA45A995A94394DEF4B4E7F5AC63DDEF2F256635A575A4C5A415A365A3D3982EE5E551B5A0F5A045AF959EE59943A9BEE8254D359C759BC59B159A6593D3B57F095598A597F59735968595D590E3727EF3F58425937592C592159165904358FF6D6EBCEDB02E0C3D19E530B59FD3307EFFA53F158A62D95EE5D55D858CD58C258B758AC582032F7F33DE615D814DA86CE2753A5586030DDEF95588A587F58745869585E58472B62EC50584558E72C60EE37582C58EC2BC0EA1E58135835240BED0658FB57432978EAED57E2572722D2EAD657CB575D286CEEBD57B257C4247DE9A5579A575F2749EC8D5782573D249EE576576B57A51FD9E85F57545705257AE647573C570A1D85E8315726572D21DCE81A570F5714214EE40357F85605196DE7EE56E356B51E9BE3D756CD568017F9E3C256B756E51D13E8AC56A1562E1BF5E197568C56815676566B5661569C1D67E056564B56405636562B562056BC1CEAE415560A564C1B8CE00056F555D612CFE3EC55E155411824E0D755CD554411F6DFC455B9557A0D1CE4B055A5559B55905585557B55BC0F6FE371556755C51152E75D555255C90F55DD4A553F55310A75E237552C5529105DDD245519550F0886E112550755B91045D2E8C52BBB77B810C221551655AD0735CEBEBFC9B704B2E9BE3355295537025BDD225518550D550255F854ED547D0738CC0DBBA1B5BBAA37C60C550155AB016DDFFA54F054930238D8EA54DF54ACFAD8DDDA54CF54C454BA54AF54A554BBFA4ADC9F5494547F0558C37FB741ADEAA6E2BCB854AD549CF6CEDBA8549E54B8FC87D599548E54D3F411DB8A547F541CFACCDB7A546F5465545A545054455410F32CDB415436542C54215417540C5467F338D90854FE5385F522BB4EAF3EA8C99E56C126541B5411540654FC53F153EBE634DDEE53E453EAF8C3B880ACA4A5269AFFC50D540254F853EE53E353D953E4E6CBE8D453CA53C8E59DDEC753BC53E8E99AE1B853AE53A35399538E538453A7E03CE181537753C1E8FCD874536A535F5355534A53405370DA02E73D53335378E902B4969B9FD547533C53E7E133E239532F53A3E31ADF2C532253A5DB4EDB2153AC4E65E7。
步骤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:释放所述新内存,整形结束;
在本实施例中,整形后的待解析数据如下:B42FF2313DF6CADE6CE331D9A2D472CC79C705C888387B386E3861380F38442CF92FE63242F432E103E4C8D9E6D3ADCC18C60ACAE839DC39CF39C239BC37CF2BB2303334FEF2F1E3AEE42BDA22D39ACC41C47FCCC03BB33BA63B993B6D37032C5C313A3562F1D8E598E4E0D91DD29FCC38C30CCFC93CBC3CAF3CA33CAC36A52CDA31133605F0BDE774E403DA8AD101CD18C24BD2E93DDC3DCF3DC23D9C35FA2B423201368CF5F9E631E69BD916D2C9CCB0C1B7D4503E443E373E2A3E9B345A2C02335F36CCF4F3E603E5ACD7EDD065CA1EC284CDE23DD53DC83DBC3DFC37302D063350376CF28CE984E4D4D838D044CBEFC061D1113F053FF83EEB3EA636EE2D7F330538EFF0CAEAA0E378D865CFD3CB58C07CD4A93F9C3F903F833F6535772EAE33723858EFE8EB03E391D801CF85CCE3BF31D81E4012400540F93FC533F52ED3330E3942EE0FEDA7E2E5D869CE05CD43BFC5DBBE40B140A54099404B329A2F02346639DFEC04EEE7E110D942CED7CDBABE74DF47413B412F412241B9305B304E34F6390AECB3EEC3E0D6D881CD66CE5BBE6EE3A54198418C418041EA2EDD305334693A5AEBABEF50E05ED92BCD23CFC9BD27E837422A421E421242D62CC131AB34C73AB8EACCEFC9DEEFD8B0CCDECF89BD26EC77426B425F425342F82A0332AB34243B02EADEF0BFDE69D971CC5AD010BD4FF0F142E442D842CC423A29ED320735B83BDAE9EEF077DD3CD9D3CBCBD084BC71F47D437143654359435D2987333635FA3B65E900F199DC35D9A7CB6ED12CBC27F9D543C943BD43B1439F2913346F35633C21E90DF1C4DB06D918CBE1D1E9BB33FD17440B44FF43F343FF29DE34B735D13CCEE8B5F0ABDAF3D8BACA2ED26CBB6202954489447D4471442F2ABE342D36D43C2EEB2CF0FCDA19D8C5CACFD15BBB9005A54499448D448144862A3135A536153DF4EA4AEFE1D9F3D60DCAB1D08FBB9DFB714465445A444E44D52A1D360E37DD3DB2EA58EFB7D8CFD629C9E6D0E3BADAFF1D4511450545F944782B0C378737453E43EAD0EE97D79BD6CEC820D123BA0B05DD45D245C645BA45332CEE371A38DE3B05EAE5ED5DD6FED5E2C7FED098B9270A68465C4650464446E72CBE38ED38CF39DFE928ED68D505D55DC7DBD0EDB81B0E13470847FC46F0461E2EB639B139553766E96DEB2BD4C2D4CEC693D039B89513C847BC47B047A547C92E883A823AC0340FE98FEA00D3F2D334C622D0C1B791184048344828481D48BD2F513B4C3B6132B9E825E9EAD1EED261C56BCF42B7F51CBE48B248A6489B48D030453C403C7B3081E8C8E7CDD0DCD18AC498CE78B6382189497E49724966490532333D2C3D6D2EF3E7D7E569CF9DD0CCC397CD00B6B225004AF449E849DD493233E63DE03D2C2C64E7A8E32FCEA3CEDBC24BCBD3B54A272D4AF02F87E594334032831D26CEC017A6325B174DCD611D98323D1CF9CDDE181F338016D4CCD31912337614DCCD2C216333851990CC0C1E55334F335033453339339E1FF8CD592A87340A1965CB072080347534A9350641FB408C32CFEAF0DE25C883CDB7B5EA2D494A3D4A324A264AC641003027EA42DDF4C626CC52B52732AE4AA34A974A8C4AE135021DF8C95F27D735D135D335C7358F358A1449CA4D298735D318F8CD0C32B533D735DA35CF35C435CB1416CAF730BA35B335B635AB359335391646CA33308935833585357A359134281648CB8C348634193515350A35FF34B612D4CAF233FB34F534A036993E8E3E821F12E15FD65CC696CA5CBC373EA443961EA0D9933E2135D609D2CA9A3115350A35383941403640711E4EE099D277C47BC6F1BA923F1045CB1C48DC00454934FC35F935EE35E335D108F2C9E535E035580BD8CCAF36A4366A0A45C9A3369836E302C0CBBB36B036FE0739C9AE36A336EE00A0C9A4366C36AE07C3CD143709372004E0C80837FD36B708A8CDEC38E138A10509C7E138D63815014FCAD5385C3813068EC75B38503823FEA5C95138403768031DCB5B3950395A039AC64F394439B0FB1ECA9F3994396C0157C69339893941FAC0C689394F398401B8CB513A463AD8FEA5C5473A3C3AFD3AF73AEC3AE23A2302F3C4E83AE23ADC3AD83ACD3A8038510184C9B43AAF3AF6FF3CC5B03AA53ABFF7BDC8DA3ACF3A4CFD33C5E63ADC3A59F610C5DE3AD33A99F23FC9D33AB53807390139F638EC3832F3EAC6F238ED385DF8EFCDFA3BEF3B6BF6FCC3F13BE63BDEF026C9E83BD93BDBF613C4DA3BCF3B57F400D4EB4C3A4EF10979CB1CBF5FB4ABB144BBAC4E84511B049ACA23BC2EB469AE4EBB98518E519CFEC0D9144BD13B5D44EB4C974FFE54930754CC29BBBDB5D7AA53C628551D55C70189DF59474E3EF7EB9FC1513E463E18E447C7493E6E3B303C283C1D3C133CA8EE29D6A253C756B70787C5AEB970AF19A911BFE756DC56CBF8FDDDDB4B7F3F9EE770C0823F773FC1DF01C67A3FAA3C4DE2FFC3AD3C443C903C873C7D3C723C43DB64C37E3C783C6E3D653D5B3D503DBBEB7BD7D8558E5A1AFCAAC1D6B5C6AE51A5DEC7AE5AA35A995A8E5A3E49443B7CE0ECDC1957D35CDE01A9C166B58AAE0CA3E5CEF35CE85CDE5CD45CDD46EF3695CD81CF8F3A8A3A8DCC65C58F3A843AB5D068C8863A773972396A395F39553952CAEDCA373D323D81D2BEC2363D2C3D263D1D3D123D4E3CBAD687EFC75BC35B09F293BC27A430DED85BCD5B78EAC4EAC63EB93B5ECCD7C7E93BDF3B67C411C4E43B6F372DD0。
步骤106:对整形后的待解析数据进行一次解码,得到一次解码数据;
具体地,所述对整形后的待解析数据进行一次解码是指根据整形后的待解析数据对应的波形的宽度对数据进行解码;
优选地,参加图4,所述对整形后的待解析数据进行一次解码,得到一次解码数据具体包括:
步骤106-1:将所述整形后的待解析数据中的首个数据作为当前数据;
步骤106-2:判断是否有与当前数据相邻的下一数据,是则执行步骤106-3,否则执行步骤106-8;
步骤106-3:判断当前数据和与其相邻的下一数据的乘积是否为0,是则执行步骤106-4,否则执行步骤106-5;
步骤106-4:记录当前数据和与其相邻的下一数据二者中为0一方所对应的横坐标,执行步骤106-7;
优选地,在本实施例中,约定所述整形后的待解析数据中的首个数据对应的横坐标为0;
步骤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 1010 10 10 10 10 10 10 10 10 10 10 10 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 04 04 04 04 04 04 04 04 04 04 10 08 10 08 10 04 10 04 04 04 10 04 10 04 10 04 10 04 10 08 04 0404 04 10 08 04 04 10 04 04 04 04 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 10 04 10 04 04 04 04 04 04 04 04 04 04 04 10 04 04 04 04 04 04 04 04 04 0404 04 08 04 08 04 04 10 08 04 04 04 04 04 04 10 04 04 08 04 04 04 04 04 04 04 04 10 04 10 04 04 08 10 04 0408 10 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个数据单元04 04 04 04 04 04 04 04 04 04 04 04 10 04 04 04;
若不能成功获取到全部与数据长度数据对应的数据单元,则将本次接收到的音频数据存入第一数据缓冲区,返回执行步骤101;
所述二次解码具体为将数据单元0x08解码为1,将数据单元0x04解码为0;例如,在本实施例中,通过对数据单元04 04 04 04 04 04 04 04 04 04 04 04 10 04 04 04进行二次解码得到数据0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0,本实施例中,数据传入采用小端方式,低位在前,高位在后,0 0 0 0 0 0 0 0为0 0 0 0 0 0 0 0 =0x00,0 0 0 0 1 0 0 0为0 0 0 1 0 0 0 0=0x10,数据长度为16个字节(128个比特),对应128个数据单元。
步骤111:根据计算得到的数据长度获取一次解码数据中相应的数据单元;
具体地,在本实施例中,发送给解析装置的音频数据还包含校验数据,对应一次解码数据末尾的8个数据单元,因此所述相应的数据单元为数据长度数据对应的数据单元之后的136个数据单元;
在本实施例中,所述相应的数据单元为:10 08 10 08 10 04 10 04 04 04 10 04 10 04 10 0410 04 10 08 04 04 04 04 10 08 04 04 10 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 04 04 10 04 10 04 04 04 04 04 04 04 04 04 04 04 10 04 04 04 04 0404 04 04 04 04 04 04 08 04 08 04 04 10 08 04 04 04 04 04 04 10 04 04 08 04 04 04 04 04 04 04 04 10 04 10 0404 08 10 04 04 08 10 04 04 04 04 04;
步骤112:判断是否成功获取到全部的所述相应的数据单元,是则执行步骤113,否则将本次接收到的音频数据存入第一数据缓冲区,返回执行步骤101;
进一步地,步骤110、步骤111和步骤112可替换为:
步骤110':判断第二数据缓冲区中是否有数据,是则将一次解码数据和第二数据缓冲区中的数据组成第一数据,获取存储的数据长度,执行步骤111',否则将一次解码数据作为第一数据,获取一次解码数据中与数据长度对应的数据单元并对其进行二次解码,根据解码结果计算得到数据长度,执行步骤111';
步骤111':根据数据长度获取第一数据中相应的数据单元;
步骤112':判断是否成功获取到全部的所述相应的数据单元,是则执行步骤113,否则将本次接收到的音频数据存入第一数据缓冲区,将一次解码数据末尾不能完整解析为一个字节的数据存入第二数据缓冲区并存储数据长度,返回执行步骤101。
步骤113:对获取到的数据单元进行二次解码得到二次解码数据;
具体地,所述二次解码方法同步骤110中所述,在此不再赘述;
在本实施例中,对获取到的数据单元进行二次解码得到的二次解码数据为:00000000 00001000 11111010 00101010 10110000 11001000 00000000 00000000 00000000 0000000000001010 00000000 00100000 00000001 01001100 00001001 00000000 10100110 01100000;
步骤114:将二次解码数据中每8个比特位组成一个字节数据,根据最后一个字节数据校验其余字节数据是否正确,是则执行步骤117,否则执行步骤115;
优选地,在本实施例中采用奇偶校验;
进一步地,当校验得出其余字节数据不正确时,还包括向上位机返回错误提示信息;
在本实施例中,将二次解码数据中每8个比特位组成一个字节数据后,得到的数据为:0x5f 0x54 0x0d 0x13 0x00 0x00 0x00 0x00 0x50 0x00 0x04 0x80 0x32 0x90 0x00 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,若所述乘积小于0则执行步骤206-5,若所述乘积大于0,则执行步骤206-6;
步骤206-4:初始化第一计数值为2,从与二者中值为0的数据相邻的下一数据开始寻找是否存在符合第二格式的数据,是则待解析数据中包含头部数据,执行步骤209,否则待解析数据中不包含头部数据,执行步骤207;
步骤206-5:初始化第一计数值为1,从与所述当前数据相邻的下一数据开始寻找是否存在符合第二格式的数据,是则待解析数据中包含头部数据,执行步骤209,否则待解析数据中不包含头部数据,执行步骤207;
步骤206-6:将与所述当前数据相邻的下一数据作为当前数据,返回执行步骤206-2;
进一步地,参见图7,从某一数据开始寻找是否存在符合第二格式的数据具体包括:
步骤a:初始第二计数值为0,将所述某一数据作为当前数据;
步骤b:判断是否有与当前数据相邻的下一数据,是则执行步骤c,否则不存在符合第二格式的数据;
步骤c:判读当前数据和与其相邻的下一数据的乘积,若乘积为0则执行步骤d,若乘积大于0则执行步骤e,若乘积小于0则执行步骤f;
步骤d:第一计数值加1,判断第一计数值,若在第四预设范围内则第二计数值加1,执行步骤g,若在第五预设范围内则执行步骤h,否则重新执行步骤206-4;
步骤e:第一计数值加1,执行步骤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:判断当前数据和与其相邻的下一数据的乘积,若等于0则执行步骤209-4,若小于0则执行步骤209-5,若大于0则执行步骤209-7;
步骤209-4:记录当前数据和与其相邻的下一数据二者中为0一方所对应的横坐标,执行步骤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:判断当前数据和与其相邻的下一数据的乘积,若等于0则执行步骤210-4,若小于0则执行步骤210-5,若大于0则执行步骤210-7;
步骤210-4:记录当前数据和与其相邻的下一数据二者中为0一方所对应的横坐标,执行步骤210-6;
步骤210-5:根据当前数据和与其相邻的下一数据对应的坐标,确定直线方程,记录所述直线方程与横轴交点对应的横坐标,执行步骤210-6;
步骤210-6:判断记录的横坐标的个数是否等于16,是则执行步骤210-8,否则执行步骤210-7;
步骤210-7:将与所述当前数据相邻的下一数据作为当前数据,返回执行步骤210-2;
步骤210-8:将记录的每两个相邻横坐标作为一组,计算每组中的后者减去前者,判断得到的计算结果,若在第六预设范围内则解码为1,若在第七预设范围内则解码为0;
其中,所述第六预设范围根据第一解码宽度确定,所述第七预设范围根据第二解码宽度确定;
本实施例中,数据传入采用小端方式,低位在前,高位在后,例如,若解码结果为0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0,0 0 0 0 0 0 0 0为0 0 0 0 0 0 0 0=0x00,0 0 0 0 1 0 0 0为0 00 1 0 0 0 0=0x10,则数据长度为16个字节。
步骤211:根据计算得到的数据长度获取整形后的待解析数据中相应的数据;
具体地,在本实施例中,发送给解析装置的音频数据包含校验数据,位于音频数据末尾。
步骤212:判断是否成功获取到全部的所述相应的数据,是则执行步骤214,否则执行步骤213;
具体地,参见图10,步骤211和步骤212可细化为:
步骤211-1:获取整形后的待解析数据中数据长度数据之后的首个数据作为当前数据;
步骤211-2:判断是否有与当前数据相邻的下一数据,是则执行步骤211-3,否则未成功获取到全部的所述相应数据,执行步骤213;
步骤211-3:判断当前数据和与其相邻的下一数据的乘积,若等于0则执行步骤211-4,若小于0则执行步骤211-5,若大于0则执行步骤211-7;
步骤211-4:记录当前数据和与其相邻的下一数据二者中为0一方所对应的横坐标,执行步骤211-6;
步骤211-5:根据当前数据和与其相邻的下一数据对应的坐标,确定直线方程,记录所述直线方程与横轴交点对应的横坐标,执行步骤211-6;
步骤211-6:判断记录的横坐标的个数是否等于数据长度加1后与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,若在第七预设范围内则解码为0。
步骤215:将解码数据中每8个比特位组成一个字节数据,根据最后一个字节数据校验其余字节数据是否正确,是则执行步骤218,否则执行步骤216;
步骤216:判断第一数据缓冲区中是否有数据,是则清除第一数据缓冲区中的数据,执行步骤217,否则直接执行步骤217;
进一步地,步骤216中还包括:检查第二数据缓冲区,若所述第二数据缓冲区中有数据则清除第二数据缓冲区中的数据,并删除存储的数据长度。
步骤217:丢弃本次接收到的音频数据,返回执行步骤201;
步骤218:输出所述其余字节数据,清空第一数据缓冲区,返回执行步骤201。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (17)

1.一种解析音频数据的方法,其特征在于包括:
步骤A:解析装置接收音频数据,判断第一数据缓冲区中是否有数据,是则将本次接收到的音频与第一数据缓冲区中的数据组成待解析数据,否则将本次接收到的音频数据作为待解析数据;
步骤B:对所述待解析数据进行整形,得到整形后的待解析数据;
步骤C:对所述整形后的待解析数据进行一次解码,得到一次解码数据;
步骤D:根据所述一次解码数据判断待解析数据中是否包含头部数据,是则执行步骤E,否则若第一数据缓冲区中有数据则清除第一数据缓冲区中的数据,返回执行步骤A,没有数据则直接返回执行步骤A;
步骤E:获取数据长度,根据获取到的数据长度获取第一数据中相应的数据单元;
步骤F:判断是否成功获取到全部的所述相应的数据单元,是则执行步骤G,否则将本次接收到的音频数据存入第一数据缓冲区,返回执行步骤A;
步骤G:对获取到的数据单元进行二次解码,根据解码结果得到相应的字节数据,根据最后一个字节数据校验其余字节数据是否正确,是则输出所述其余字节数据,否则若第一数据缓冲区中有数据则清除第一数据缓冲区中的数据,返回执行步骤A,没有数据则直接返回执行步骤A。
2.根据权利要求1所述的方法,其特征在于,所述步骤D中,当待解析数据中不包含头部数据时还包括:将待解析数据末尾的部分数据存入第一数据缓冲区。
3.根据权利要求1所述的方法,其特征在于,所述步骤F中,当没有成功获取到全部的所述相应的数据单元时还包括:存储数据长度并将一次解码数据末尾不能完整解析为一个字节的数据存入第二数据缓冲区;
所述步骤E具体包括:
步骤E1:判断第二数据缓冲区中是否有数据,是则执行步骤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'具体包括:
步骤E1':判断第二缓冲区中是否有数据,是则执行步骤E2',否则执行步骤E3';
步骤E2':将整形后的待解析数据与第二数据缓冲区中的数据组成第一数据,获取存储的数据长度,执行步骤E4';
步骤E3':将整形后的待解析数据作为第一数据,获取所述整形后的待解析数据中的数据长度数据并对根据解码宽度对其进行解码,根据解码结果计算得到数据长度,执行步骤E4';
步骤E4':根据数据长度获取第一数据中相应的数据;
所述步骤G'中,当所述其余字节数据不正确时还包括:检查第二数据缓冲区,若所述第二数据缓冲区中有数据则清除第二数据缓冲区中的数据,并删除存储的数据长度。
7.根据权利要求1或4所述的方法,其特征在于,所述解析装置接收音频数据之前包括:
解析装置进行设备初始化,判断设备初始化是否成功,是则创建录音线程,开始接收音频数据,否则提示设备初始化失败。
8.根据权利要求1或4所述的方法,其特征在于,所述对所述待解析数据进行整形具体包括:
①分配一块大小与待解析数据的数据长度相同的新内存;
②判断待解析数据中是否还有未处理的数据,是则执行③,否则执行④;
③获取基线,判断是否成功获取到基线,是则将当前数据与基线的差值存储到所述新内存中,返回执行②,否则将当前数据存储到所述新内存中,返回执行②;
④用所述新内存中的数据替换所述待解析数据,得到整形后的待解析数据,释放所述新内存。
9.根据权利要求8所述的方法,其特征在于,所述获取基线具体包括:
获取当前数据之前的预设值个数据和之后的预设值个数据,寻找获取到的数据和当前数据中的最大值与最小值,计算所述最大值与最小值的平均值,所述平均值即为基线。
10.根据权利要求1所述的方法,其特征在于,所述步骤C具体包括:
①将所述整形后的待解析数据中的首个数据作为当前数据;
②判断是否有与当前数据相邻的下一数据,是则执行③,否则执行⑤;
③判断当前数据和与其相邻的下一数据的乘积,若为0则记录当前数据和与其相邻的下一数据二者中为0一方所对应的横坐标的值,执行④,若大于0则执行④,若小于0则根据当前数据和与其相连的下一数据对应的坐标确定直线方程,记录所述直线方程与横轴交点对应的横坐标的值,执行④;
④将所述与当前数据相邻的下一数据作为当前数据,返回②;
⑤将记录的每两个相邻横坐标作为一组,计算每组中的后者减去前者,判断得到的计算结果,若其在第一预设范围内则解码为第一数值,在第二预设范围内则解码为第二数值,在第三预设范围内则解码为第三数值。
11.根据权利要求10所述的方法,其特征在于,所述根据所述一次解码数据判断待解析数据中是否包含头部数据包括:
判断一次解码数据中是否有符合第一格式的数据,是则待解析数据中包含头部数据,否则待解析数据中不包含头部数据。
12.根据权利要求11所述的方法,其特征在于,所述第一格式的数据为连续的不少于预设个数个第一数值。
13.根据权利要求10所述的方法,其特征在于,所述进行二次解码包括:将第二数值解码为1,将第三数值解码为0。
14.根据权利要求4所述的方法,其特征在于,根据所述整形后的待解析数据判断待解析数据中是否包含头部数据包括:
①将整形后的待解析数据的首个数据作为当前数据;
②判断是否有与当前数据相邻的下一数据,是则执行③,否则待解析数据中不包含头部数据;
③判断当前数据和与其相邻的下一数据的乘积,若所述乘积等于0则执行④,若所述乘积小于0则执行⑤,若所述乘积大于0则将与所述当前数据相邻的下一数据作为当前数据,返回执行②;
④初始化第一计数值为2,从与当前数据和与其相邻的下一数据二者中为0的数据相邻的下一数据开始寻找是否存在符合第二格式的数据,是则待解析数据中包含头部数据,否则待解析数据中不包含头部数据;
⑤初始化第一计数值为1,从与所述当前数据相邻的下一数据开始寻找是否存在符合第二格式的数据,是则待解析数据中包含头部数据,否则待解析数据中不包含头部数据。
15.根据权利要求14所述的方法,其特征在于:
所述④中包括初始化第一计数值为2;所述⑤中包括初始化第一计数值为1;
从某数据开始寻找是否存在符合第二格式的数据,其中,所述某数据为与当前数据和与其相邻的下一数据二者中为0的数据相邻的下一数据或与所述当前数据相邻的下一数据,包括:
a:初始第二计数值为0,将所述某数据作为当前数据;
b:判断是否有与当前数据相邻的下一数据,是则执行c,否则不存在符合第二格式的数据;
c:判读当前数据和与其相邻的下一数据的乘积,若乘积为0则执行d,若乘积大于0则执行e,若乘积小于0则执行f;
d:第一计数值加1,判断第一计数值,若在第四预设范围内则第二计数值加1,执行g,若在第五预设范围内则执行h,否则重新执行所述④;
e:第一计数值加1,执行g;
f:判断第一计数值,若在第四预设范围内则第二计数值加1,执行g,若在第五预设范围内则执行h,否则重新执行所述⑤;
g:将与当前数据相邻的下一数据作为当前数据,返回执行b;
h:判断第二计数值是否小于预设值,是则不存在符合第二格式的数据,否则存在符合第二格式的数据。
16.根据权利要求6所述的方法,其特征在于,所述步骤D'具体包括:
①获取整形后的待解析数据中所述头部数据之后的首个数据作为当前数据;
②判断是否有与当前数据相邻的下一数据,是则执行③,否则将本次接收到的音频数据存入第一数据缓冲区,返回执行步骤A;
③判断当前数据和与其相邻的下一数据的乘积,若等于0则执行④,若小于0则执行⑤,若大于0则执行⑦;
④记录当前数据和与其相邻的下一数据二者中为0一方所对应的横坐标,执行⑥;
⑤根据当前数据和与其相邻的下一数据对应的坐标,确定直线方程,记录所述直线方程与横轴交点对应的横坐标,执行⑥;
⑥判断记录的横坐标的个数是否等于16,是则执行⑧,否则执行⑦;
⑦将与所述当前数据相邻的下一数据作为当前数据,返回执行②;
⑧计算记录的前4个横坐标和后4个横坐标的平均值,作为第一解码宽度,计算记录的中间8个横坐标的平均值,作为第二解码宽度。
17.根据权利要求16所述的方法,其特征在于,所述获取所述整形后的待解析数据中的数据长度数据并根据解码宽度对其进行解码具体包括:
s1、获取整形后的待解析数据中解码宽度数据之后的首个数据作为当前数据;
s2、判断是否有与当前数据相邻的下一数据,是则执行s3,否则将本次接收到的音频数据存入第一数据缓冲区,返回执行步骤A;
s3、判断当前数据和与其相邻的下一数据的乘积,若等于0则执行步骤s4,若小于0则执行步骤s5,若大于0则执行步骤s7;
s4、记录当前数据和与其相邻的下一数据二者中为0一方所对应的横坐标,执行s6;
s5、根据当前数据和与其相邻的下一数据对应的坐标,确定直线方程,记录所述直线方程与横轴交点对应的横坐标,执行s6;
s6、判断记录的横坐标的个数是否等于16,是则执行s8,否则执行s7;
s7、将与所述当前数据相邻的下一数据作为当前数据,返回执行s2;
s8、将记录的每两个相邻横坐标作为一组,计算每组中的后者前去前者,判断得到的计算结果,若在第六预设范围内则解码为1,若在第七预设范围内则解码为0;
其中,所述第六预设范围根据第一解码宽度确定,所述第七预设范围根据第二解码宽度确定。
CN201310040757.9A 2013-02-01 2013-02-01 一种解析音频数据的方法 Expired - Fee Related CN103065641B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201310040757.9A CN103065641B (zh) 2013-02-01 2013-02-01 一种解析音频数据的方法
US14/764,313 US10013824B2 (en) 2013-02-01 2014-01-14 Audio data parsing method
PCT/CN2014/070595 WO2014117646A1 (zh) 2013-02-01 2014-01-14 一种解析音频数据的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310040757.9A CN103065641B (zh) 2013-02-01 2013-02-01 一种解析音频数据的方法

Publications (2)

Publication Number Publication Date
CN103065641A CN103065641A (zh) 2013-04-24
CN103065641B true CN103065641B (zh) 2014-12-10

Family

ID=48108239

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310040757.9A Expired - Fee Related CN103065641B (zh) 2013-02-01 2013-02-01 一种解析音频数据的方法

Country Status (3)

Country Link
US (1) US10013824B2 (zh)
CN (1) CN103065641B (zh)
WO (1) WO2014117646A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103065641B (zh) * 2013-02-01 2014-12-10 飞天诚信科技股份有限公司 一种解析音频数据的方法
KR101440231B1 (ko) * 2013-05-15 2014-09-12 엘에스산전 주식회사 고속철도에서 atc 불연속정보 처리방법
CN108269596B (zh) * 2016-12-30 2020-03-31 北京酷我科技有限公司 一种获取音频数据的方法及系统
CN107342098B (zh) * 2017-07-20 2019-11-26 青岛海信电器股份有限公司 音频播放方法及装置
CN112911558B (zh) * 2021-01-18 2023-01-06 佳格科技(浙江)股份有限公司 数据通信系统、数据发送装置及数据接收装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4449108B2 (ja) * 1999-08-05 2010-04-14 パナソニック株式会社 音声復号装置
CA2419151C (en) * 2000-08-25 2009-09-08 British Telecommunications Public Limited Company Audio data processing
JP2002142192A (ja) * 2000-11-01 2002-05-17 Sony Corp 信号処理装置および方法、ならびに、記録装置および方法
JP2005347930A (ja) * 2004-06-01 2005-12-15 Matsushita Electric Ind Co Ltd データストリーム再生装置
CN100527849C (zh) * 2005-12-02 2009-08-12 上海奇码数字信息有限公司 音频解码方法、音频解码器及其中的平滑滤波方法
JP5103880B2 (ja) * 2006-11-24 2012-12-19 富士通株式会社 復号化装置および復号化方法
CN101308658B (zh) * 2007-05-14 2011-04-27 深圳艾科创新微电子有限公司 一种基于片上系统的音频解码器及其解码方法
WO2009074711A1 (en) * 2007-12-13 2009-06-18 Nokia Corporation Speech data encryption and decryption
JP2009260643A (ja) * 2008-04-16 2009-11-05 Nec Electronics Corp データストリーム解析装置、復号装置及びデータストリーム解析方法
CN101267293B (zh) * 2008-04-18 2011-03-30 清华大学 基于分层模型的流媒体隐蔽通信方法
CN102625301A (zh) * 2011-02-01 2012-08-01 上海晨兴希姆通电子科技有限公司 无线模块、手机及密钥传输方法
CN102223234B (zh) * 2011-06-17 2013-11-20 飞天诚信科技股份有限公司 基于音频通信的电子签名系统及方法
CN103065641B (zh) * 2013-02-01 2014-12-10 飞天诚信科技股份有限公司 一种解析音频数据的方法

Also Published As

Publication number Publication date
CN103065641A (zh) 2013-04-24
US10013824B2 (en) 2018-07-03
US20150371466A1 (en) 2015-12-24
WO2014117646A1 (zh) 2014-08-07

Similar Documents

Publication Publication Date Title
CN103065641B (zh) 一种解析音频数据的方法
Ren et al. AMR steganalysis based on the probability of same pulse position
CN203415228U (zh) 使用节目信息元数据的音频解码器
IL271502A (en) Adaptive processing with multiple media processor nodes
CN101253552B (zh) 解码音频信号的方法及装置
CN104331487A (zh) 日志的处理方法及装置
CN103378933A (zh) 解码方法、解码模块及信号处理方法、信号处理装置
CN102881291A (zh) 语音感知哈希认证的感知哈希值提取方法及认证方法
CN110460424A (zh) 一种支持隐私保护的语音数据加密方法及系统
CN104765884B (zh) 一种https网页的指纹识别方法
CN105304091A (zh) 一种基于dct的语音篡改恢复方法
CN102279711B (zh) 基于插件的实时数据存储方法及装置
CN104079941B (zh) 一种深度信息编解码方法、装置及视频处理播放设备
CN109347873A (zh) 一种命令注入攻击的检测方法、装置及计算机设备
CN112901146B (zh) 声波测井探测中坏道的识别方法及装置
KR20140102317A (ko) 펄스 인코딩 방법 및 장치와, 펄스 디코딩 방법 및 장치
CN112532328A (zh) 一种信道特征量化方法、装置、电子设备及存储介质
RU2552145C2 (ru) Способ скрытой передачи информации
CN109150320B (zh) 一种声波信号编码、解码方法及装置
Qian et al. A fragile watermarking algorithm for speech authentication by modifying least significant digits
US20210152564A1 (en) Sound wave communication platform, communication method using sound wave signal, and device therefor
CN202931290U (zh) 一种基于gzip的压缩硬件系统
CN104637496A (zh) 计算机系统及音频比对方法
CN102065105B (zh) 用于数字化变电站的iec61850-9-2协议数据帧的组帧方法
CN114465826B (zh) 编码技术的数据加密方法、系统及储存介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20141210

CF01 Termination of patent right due to non-payment of annual fee