音频数据读取方法及处理系统与流程

文档序号:16929419发布日期:2019-02-22 20:08阅读:2287来源:国知局
音频数据读取方法及处理系统与流程

本发明涉及音频数据处理领域,具体涉及一种音频数据读取方法及处理系统。



背景技术:

人类能够听到的所有声音都称之为音频,它可能包括噪音,声音被录制下来以后,无论是说话声、歌声、乐器都可以通过数字音乐软件处理,然后将音频储存在计算机里,实际上,如果有计算机,再加上相应的音频卡(就是我们经常说的声卡),我们就可以把所有的声音录制下来,声音的声学特性(比如声音的高低等)都可以用计算机硬盘文件的方式储存。

在目前这样一个数码时代,优良的音质和良好的音频通话体验是我们所追求的,现有的很多操作系统(比如安卓)都可以支持麦克风等音频输入,为了解决网络传输不稳定造成的音频延迟、卡顿等问题,在读取音频数据时可以进行音频数据缓冲丢包,目前的缓冲丢包处理方法比较复杂,效率低,因此,在满足需求的情况下,如何采用简单而又可以实现音频低延迟的方法进行音频数据读取处理具有非常重要的意义。



技术实现要素:

有鉴于此,本申请提供一种音频数据处理方法,通过读取音频缓冲区剩余数据量的大小,再根据预设的欲将读取音频数据量大小与音频缓冲区剩余数据量的大小之间的关系判断是否丢弃数据,判据简单,数据处理效率高,可以满足音频低延迟的需要。为解决以上技术问题,本发明提供的技术方案如下:

音频数据读取方法,包括:

获取缓冲音频数据量m;

获取欲读取音频数据量n;

获取允许缓冲音频数据量p;

判断m与n的关系,如果m>n+p,丢弃s个缓冲音频数据,然后读取n个缓冲音频数据,其中,0≤m-(s+n)≤p。

进一步地,所述方法还包括:

如果n≤m≤n+p,直接读取n个缓冲音频数据。

进一步地,所述方法还包括:

如果m<n,直接读取m个缓冲音频数据,或继续等待直到缓冲音频数据量达到n个后,读取n个音频数据。

进一步地,所述获取缓冲音频数据量m这一步骤包括:

接收音频数据读取命令;

根据所述音频数据读取命令查找到缓冲数据节点;

通过所述缓冲数据节点获取缓冲音频数据量m。

进一步地,p=n,所述丢弃s个缓冲音频数据这一动作包括:根据公式(1)丢弃s个缓冲音频数据:

s=(int(m/n)-1)*n(1),

其中,int表示取整函数。

音频数据处理系统,包括:

缓冲音频数据量获取模块:用于获取缓冲音频数据量m;

欲读取音频数据量获取模块:用于获取欲读取音频数据量n;

允许缓冲音频数据量获取模块:用于获取允许缓冲音频数据量p;

判断处理模块:用于判断m与n的关系并根据判断结果选择读取音频数据的方式。

进一步地,所述判断处理模块还包括音频数据等待单元:用于在m<n时,使判断处理模块继续等待直到缓冲音频数据量达到n个后读取n个音频数据。

进一步地,还包括:

音频数据读取命令接收模块:用于接收音频数据读取命令;

缓冲数据节点查找模块:用于根据音频数据读取命令查找缓冲数据节点。

进一步地,所述判断处理模块包括音频数据丢弃函数储存单元:用于储存音频数据丢弃函数,所述音频数据处理模块根据所述音频数据丢弃函数丢弃缓冲音频数据。

本发明提供的音频数据处理方法,通过读取音频缓冲区剩余数据量的大小,再根据预设的欲将读取的音频数据量大小与音频缓冲区剩余数据量的大小之间的关系判断是否丢弃数据或是直接读取音频数据,判据简单,数据处理效率高,可以满足音频低延迟的需要。

附图说明

图1为实施例1提供的方法流程图。

图2为实施例2提供的音频数据处理系统结构示意框图。

具体实施方式

为了使本领域的技术人员更好地理解本发明的技术方案,下面结合附图和具体实施例对本发明作进一步的详细说明。

实施例1

如图1所示,本实施例提供一种音频数据读取方法,包括:

s1:获取缓冲音频数据量m;

s2:获取欲读取音频数据量n;

s3:获取允许缓冲音频数据量p;

s4:判断m与n的关系,如果m>n+p,丢弃s个缓冲音频数据,然后读取n个缓冲音频数据,其中,0≤m-(s+n)≤p。

这里需要说明的是,本实施例可以应用于安卓系统或其它操作系统,以安卓系统为例,系统内核里有一个音频驱动,在音频驱动中设有缓冲区,音频数据存放在缓冲区中,在步骤s1中,可以通过公式period_size*period_count来计算剩余音频数据量m,其中,period_size是指从音频驱动中缓冲区内每一次读取的最小数据量,period_count是指缓冲区中有多少个period_size,具体实施本实施例时,period_size是事先设定好的,每次读取音频数据前,只读取一次剩余音频数据量m,音频数据读取完成后,如果需要再次读取音频数据,由于音频驱动中缓冲区内的剩余音频数据量是动态变化的,则需要再次读取新的剩余音频数据量m。

还需要说明的是,欲读取音频数据量n是指系统想要读取的音频数据量,这个取值可以是动态变化的,之所以判断m与n的大小,一方面是由于当剩余数据量m超过需要的数据n时,说明音频会有延迟,如果要降低延迟,则需要丢弃部分数据,本实施例中,丢弃的数据量根据需要灵活选择,只要保证丢弃一部分数据后,从缓冲区内读取的n个数据后剩余的数据量不大于允许剩余音频数据量就行,这个预设值可以为n,也可以为其他数值,如果p=0,则只有m大于n,就需要数据丢包动作。

还需要说明的是,步骤s4中,为了提高效率,可以随意丢弃缓冲区内的s个音频数据,如果需要精确丢弃相关数据,可以采用vad算法进行丢弃处理。

作为优选,本实施例提供的方法还包括:

如果n≤m≤n+p,直接读取n个缓冲音频数据。

这里需要说明的是,虽然缓冲区内的剩余数据量会导致音频延迟,但是丢弃数据这一动作也会占用系统资源和浪费处理时间,因此,如果读取音频数据后,所剩余的数据量不大于p,系统的音频延迟就可以接受,因此,设置允许剩余音频数据可以平衡音频延迟与系统效率之间的关系,当然,如果需要,p值可以设置得比较小,甚至为0,这样在数据丢包后,音频延迟会非常小甚至零延迟,可以有效提高用户体验。

作为优选,所述方法还包括:如果m<n,直接读取m个缓冲音频数据,或继续等待直到缓冲音频数据量达到n个后,读取n个音频数据。

这里需要说明的是,当m<n时,可以有两种方式读取音频数据,一种是直接将缓冲区内的剩余音频数据全部读取,另一种是等到缓冲区内的音频数据达到n个后再读取,具体实施时,可以设置等待时间,如果在设置的等待时间内缓冲区的音频数据量还是没有达到n,则放弃等待直接读取。

优选地,所述获取缓冲音频数据量m这一步骤,即步骤s1包括:

接收音频数据读取命令;

根据所述音频数据读取命令查找到缓冲数据节点;

通过所述缓冲数据节点获取缓冲音频数据量m。

这里需要说明的是,所述缓冲数据节点是系统内核的音频驱动做的一个接口,用户可以通过这个节点获取或者写入一些数据,达到用户层面和内核空间的一个交互,通过所述缓冲数据节点获取缓冲音频数据量m,就是对查找到的缓冲数据节点进行解析,把节点打开,然后读取字符串到一个地方,然后解析读取到的字符串后面的数值,从而获取到缓冲音频数据量m。

作为优选,步骤s4中,p=n,所述丢弃s个缓冲音频数据这一动作包括:根据公式(1)丢弃所述缓冲区内的s个数据:

s=(int(m/n)-1)*n(1),

其中,int表示取整函数。

实施例2

如图2所示,本实施例提供一种音频数据处理系统,包括:

缓冲音频数据量获取模块:用于获取缓冲音频数据量m;

欲读取音频数据量获取模块:用于获取欲读取音频数据量n;

允许缓冲音频数据量获取模块:用于获取允许缓冲音频数据量p;

判断处理模块:用于判断m与n的关系并根据判断结果选择读取音频数据的方式。

优选地,所述判断处理模块还包括音频数据等待单元:用于在m<n时,使判断处理模块继续等待直到缓冲音频数据量达到n个后读取n个音频数据。

优选地,本实施例还包括:

音频数据读取命令接收模块:用于接收音频数据读取命令;

缓冲数据节点查找模块:用于根据音频数据读取命令查找缓冲数据节点。

优选地,所述判断处理模块包括音频数据丢弃函数储存单元:用于储存音频数据丢弃函数,所述音频数据处理模块根据所述音频数据丢弃函数丢弃缓冲音频数据关于上述实施例中的音频数据处理系统,各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不作详细阐述说明。

以上仅是本发明的优选实施方式,应当指出的是,上述优选实施方式不应视为对本发明的限制,本发明的保护范围应当以权利要求所限定的范围为准。对于本技术领域的普通技术人员来说,在不脱离本发明的精神和范围内,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1