基于循环队列的数据处理方法、装置、设备及存储介质与流程

文档序号:28801371发布日期:2022-02-08 23:06阅读:109来源:国知局
基于循环队列的数据处理方法、装置、设备及存储介质与流程

1.本发明属于通信技术领域,尤其涉及一种基于循环队列的数据处理方法、装置、设备及存储介质。


背景技术:

2.目前,循环队列越来越多地被运用于代码框架中,同时,在语音处理行业中,对于音频的处理,更是频繁地运用了循环队列,用于提高音频处理的时效性。当前的循环队列技术大多是队列数据的进与出保持一致,不存在会因出的长度大于进的长度,而导致取的数据产生不连续的情况。
3.但是,在实际运用过程中,可能会因为各种情况出现多个进、出队列嵌套,且存在每个队列进、出长度不一样以及一个队列进和出的长度不一致的情况,进而影响了循环队列的使用效果。


技术实现要素:

4.本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的一个目的在于提出一种基于循环队列的数据处理方法、装置、设备及存储介质。
5.为了解决上述技术问题,本发明的实施例提供如下技术方案:
6.一种基于循环队列的数据处理方法,包括:
7.预设每次写入循环队列的数据的写入数量a,以及每次从所述循环队列读取的所述数据的读取数量c;
8.确定所述a与c的大小关系,并获取确定结果;
9.根据所述确定结果,计算所述a与c的差值d;其中,d大于0;
10.基于所述a、c以及d,确定将所述数据写入所述循环队列的次数m以及从所述循环队列读取所述数据的次数m,其中,m大于1;
11.基于所述m,将所述数据写入所述循环队列并从所述循环队列读取所述数据。
12.可选的,根据所述确定结果,计算所述a与c的差值d,包括:
13.若所述a大于c,则a-c=d,且c=n
·b14.其中,b为单位时间内从所述循环队列读取的数据的读取数量,n大于1。
15.可选的,所述基于所述a、c以及d,确定将所述数据写入所述循环队列的次数m以及从所述循环队列读取所述数据的次数m,包括如下公式:
[0016][0017]
可选的,所述基于所述m,将所述数据写入所述循环队列并从所述循环队列读取所述数据,包括:
[0018]
基于声卡模块将所述a的数据写入所述循环队列;
[0019]
基于算法模块从所述循环队列读取所述c的数据;
[0020]
重复以上步骤(m-1)次后,基于声卡模块将所述a的数据写入所述循环队列,基于算法模块从所述循环队列读取所述(n+1)
·
b的数据。
[0021]
可选的,所述根据所述确定结果,计算所述所述a与c的差值d,包括:
[0022]
若所述a小于c,则c-a=d,且a=n
·e[0023]
其中,e为单位时间内写入所述循环队列的数据的写入数量,n大于1。
[0024]
可选的,所述基于所述a、c以及d,确定将所述数据写入所述循环队列的次数m以及从所述循环队列读取所述数据的次数m,包括如下公式:
[0025][0026]
可选的,所述基于所述m,将所述数据写入所述循环队列并从所述循环队列读取所述数据,包括:
[0027]
基于声卡模块将所述a的数据写入所述循环队列;
[0028]
基于算法模块从所述循环队列读取所述c的数据;
[0029]
重复以上步骤(m-1)次后,基于声卡模块将所述(n+1)
·
e的数据写入所述循环队列,基于算法模块从所述循环队列读取所述c的数据。
[0030]
可选的,基于声卡模块将所述a的数据写入所述循环队列,包括:
[0031]
确定所述循环队列的第(e+1)个位置;
[0032]
从所述第(e+1)个位置开始,基于声卡模块将所述a的数据写入所述循环队列。
[0033]
本发明的实施例还提供一种基于循环队列的数据处理装置,包括:
[0034]
预设单元,用于预设每次写入循环队列的数据的写入数量a,以及每次从所述循环队列读取的所述数据的读取数量c;
[0035]
第一确定单元,用于确定所述a与c的大小关系,并获取确定结果;
[0036]
计算单元,用于根据所述确定结果,计算所述所述a与c的差值d;其中,d大于0;
[0037]
第二确定单元,用于基于所述a、c以及d,确定将所述数据写入所述循环队列的次数m以及从所述循环队列读取所述数据的次数m,其中,m大于1;
[0038]
调整单元,用于基于所述m,将所述数据写入所述循环队列并从所述循环队列读取所述数据。
[0039]
本发明的实施例还提供一种电子设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的方法。
[0040]
本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上所述的方法。
[0041]
本发明的实施例,具有如下技术效果:
[0042]
本发明的上述技术方案,1)当每次写入循环队列的进样点的个数大于每次从循环队列读取的出样点的个数,通过设置循环写入循环队列以及读取循环队列的数据的方式,实现了写入循环队列的数据的总写入数量或者总长度等于从循环队列读取的总读取数量或总长度,进而保证了基于循环队列处理数据的连续性以及准确性,提高了语音音频处理的时效性。
[0043]
2)当每次写入循环队列的进样点的个数小于每次从循环队列读取的出样点的个数时,通过设置循环写入循环队列以及读取循环队列的数据的方式,实现了写入循环队列的数据的总写入数量或者总长度等于从循环队列读取的总读取数量或总长度,进而保证了基于循环队列处理数据的连续性以及准确性,提高了语音音频处理的时效性。
[0044]
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
[0045]
图1是本发明实施例提供的一种基于循环队列的数据处理方法的流程示意图;
[0046]
图2是本发明实施例提供的一种基于循环队列的数据处理方法的装置的结构示意图。
具体实施方式
[0047]
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
[0048]
如图1所示,本发明的实施例提供一种基于循环队列的数据处理方法,包括:
[0049]
步骤s1:预设每次写入循环队列的数据的写入数量a,以及每次从所述循环队列读取所述数据的读取数量c;
[0050]
具体的,可以根据实际需要(例如:不同的声卡模块或算法模块)对a以及c的值进行预设。
[0051]
步骤s2:确定所述a与c的大小关系,并获取确定结果;
[0052]
具体的,可能存在a大于c或a小于c。
[0053]
在实际应用场景中,预设a、c的值以后,为了后续确保总的写入数量以及读取数量可以被调整到一致,因此,需要对a和c的大小进行确认,然后确认数据循环进出循环队列的次数等。
[0054]
其中,每次写入循环队列的数据的写入数量a可能大于每次从所述循环队列读取所述数据的读取数量c,每次写入循环队列的数据的写入数量a也可能小于每次从所述循环队列读取所述数据的读取数量c,在将声卡的多个采样点数据写入循环队列之前需要对a以及c的值进行确认,以便于保证写入循环队列的数据的数量与从循环队列读取的数据的数量保持一致,以保证数据处理过程中数据的连续性,并提高语音音频处理的时效性。
[0055]
步骤s3:根据所述确定结果,计算所述所述a与c的差值d;其中,d大于0;
[0056]
具体的,根据所述确定结果,计算所述所述a与c的差值d,包括:
[0057]
若所述a大于c,则a-c=d,且c=n
·b[0058]
其中,b为单位时间内从所述循环队列读取的数据的读取数量,n大于1。
[0059]
例如:令a的值为512,c的值在读取的次数为5的整数倍的时候,c的值为640,c的值在读取的次数不是5的整数倍的时候,c的取值为480,在读取的次数不为5的整数倍的时候,d为32,也即,n=3,b=160,a=512,d=32。
[0060]
具体的,基于声卡每次将512个进样点写入循环队列,每次从循环队列读取480个
出样点,其中,480个出样点基于循环3次读取160个出样点获取,当读取的出样点的个数不足160个时,则认为这些出样点无效,算法模块无法获取。
[0061]
对于512个进样点,160个出样点的队列(每次持续3次读取,也即每次读取的采样点一共480个,直至第5次取样640个,并依次循环),基于上述计算可知,采样点的数据进出循环队列的过程可以是:
[0062]
进:512 512 512 512 512 512 512 512 512 512
……
[0063]
出:480 480 480 480 640 480 480 480 480 640
……
[0064]
其中,第一次写入循环队列512个进样点后,可以从循环队列循环读取3次160个出样点,还剩下32个进样点在循环队列里,32小于160,属于无效进样点,因此,不对循环队列剩下的32个进样点进行读取;
[0065]
第二次写入循环队列512个进样点后,可以从循环队列循环读取3次160个出样点,还剩下64个进样点在循环队列里,64小于160,属于无效进样点,因此,不对循环队列剩下的64个进样点进行读取;
[0066]
第三次写入循环队列512个进样点后,可以从循环队列循环读取3次160个出样点,还剩下96个进样点在循环队列里,96小于160,属于无效进样点,因此,不对循环队列剩下的96个进样点进行读取;
[0067]
第四次写入循环队列512个进样点后,可以从循环队列循环读取3次160个出样点,还剩下128个进样点在循环队列里,128小于160,属于无效进样点,因此,不对剩下的128个进样点进行读取;
[0068]
第五次写入循环队列512个进样点后,可以从循环队列循环读取3次160个出样点,还剩下160个进样点在循环队列里,32等于160,属于有效进样点,因此,对剩下的32个进样点继续进行读取;因此,第五次从循环队列读取的出样点的个数为640,所以,当基于循环队列写入、读取数据5次后,数据的写入数量与数据的读取数量相同,保持一致;
[0069]
重复上述步骤,可以实现5次写入、读取为一个循环,循环队里剩余的有效的进样点的数量为0,进而可以实现每5次将数据的写入数量以及读取数量调整为平衡一致。
[0070]
本发明的实施例,当每次写入循环队列的进样点的个数大于每次从循环队列读取的出样点的个数,通过循环写入循环队列以及读取循环队列的数据的方式,实现写入循环队列的数据的总写入数量或者总长度等于从循环队列读取的总读取数量或总长度,进而保证了基于循环队列处理数据的连续性以及准确性,提高了语音音频处理的时效性。
[0071]
具体的,所述根据所述确定结果,计算所述所述a与c的差值d,包括:
[0072]
若所述a小于c,则c-a=d,且a=n
·e[0073]
其中,e为单位时间内写入所述循环队列的数据的写入数量,n大于1。
[0074]
例如:令a的值为480,a的值在写入的次数为5的整数倍的时候,a的值为640,c的取值为512,在写入的次数不为5的整数倍的时候,d为32,也即,n=3,b=160,c=512;d=32。
[0075]
对于160个进样点(每次持续3次写入,也即每次写入的采样点一共480个,直至第5次写入640个,并依次循环),512个出样点的队列,基于上述计算可知,采样点的数据进出循环队列的过程可以是:
[0076]
进:480 480 480 480 640 480 480 480 480 640
……
[0077]
出:512 512 512 512 512 512 512 512 512 512
……
[0078]
其中,第一次,找到循环队列的第161个位置,从第161个位置开始写入数据;
[0079]
具体的,可以向循环队列循环写入3次160个进样点,读取数据的时候,从循环队列的第一个位置开始读取,读取512个出样点;循环队列还剩下128个进样点;
[0080]
第二次,从第129个位置开始写入数据;
[0081]
具体的,可以向循环队列循环写入3次160个进样点,读取数据的时候,从循环队列的第一个位置开始读取,读取512个出样点;循环队列还剩下96个进样点;
[0082]
第三次,从第97个位置开始写入数据;
[0083]
具体的,可以向循环队列循环写入3次160个进样点,读取数据的时候,从循环队列的第一个位置开始读取,读取512个出样点;循环队列还剩下64个进样点;
[0084]
第四次,从第65个位置开始写入数据;
[0085]
具体的,可以向循环队列循环写入3次160个进样点,读取数据的时候,从循环队列的第一个位置开始读取,读取512个出样点;循环队列还剩下32个进样点;
[0086]
第五次,从第33个位置开始写入数据;
[0087]
具体的,可以向循环队列循环写入4次160个进样点,读取数据的时候,从循环队列的第一个位置开始读取,读取512个出样点;循环队列还剩下160个进样点;
[0088]
重复上述步骤,可以实现5次写入、读取为一个循环,循环队列剩余的有效的进样点的数量为160,进而可以实现每5次将数据的写入数量以及读取数量调整为平衡一致。
[0089]
本发明的实施例,当每次写入循环队列的进样点的个数小于每次从循环队列读取的出样点的个数时,通过循环写入循环队列以及读取循环队列的数据的方式,实现写入循环队列的数据的总写入数量或者总长度等于从循环队列读取的总读取数量或总长度,进而保证了基于循环队列处理数据的连续性以及准确性,提高了语音音频处理的时效性。
[0090]
步骤s4:基于所述a、c以及d,确定将所述数据写入所述循环队列的次数m以及从所述循环队列读取所述数据的次数m,其中,m大于1;
[0091]
具体的,所述基于所述a、c以及d,确定将所述数据写入所述循环队列的次数m以及从所述循环队列读取所述数据的次数m,包括如下公式:
[0092][0093]
可选的,所述基于所述a、c以及d,确定将所述数据写入所述循环队列的次数m以及从所述循环队列读取所述数据的次数m,包括如下公式:
[0094][0095]
步骤s5:基于所述m,将所述数据写入所述循环队列并从所述循环队列读取所述数据。
[0096]
具体的,所述基于所述m,将所述数据写入所述循环队列并从所述循环队列读取所述数据,包括:
[0097]
基于声卡模块将所述a的数据写入所述循环队列;
[0098]
基于算法模块从所述循环队列读取所述c的数据;
[0099]
重复以上步骤(m-1)次后,基于声卡模块将所述a的数据写入所述循环队列,基于算法模块从所述循环队列读取所述(n+1)
·
b的数据。
[0100]
具体的,所述基于所述m,将所述数据写入所述循环队列并从所述循环队列读取所述数据,包括:
[0101]
基于声卡模块将所述a的数据写入所述循环队列;
[0102]
基于算法模块从所述循环队列读取所述c的数据;
[0103]
重复以上步骤(m-1)次后,基于声卡模块将所述(n+1)
·
e的数据写入所述循环队列,基于算法模块从所述循环队列读取所述c的数据。
[0104]
具体的,基于声卡模块将所述a的数据写入所述循环队列,包括:
[0105]
确定所述循环队列的第(e+1)个位置;
[0106]
从所述第(e+1)个位置开始,基于声卡模块将所述a的数据写入所述循环队列。
[0107]
每隔五次进出,队列中有效的数值将为为0,但是在前四次进出操作时,由于出大于进,那么出结束的下标将会大于进结束的下标,所以需要在刚开始存的时候补位,当进和出的有效值达到平衡(5次时),队列中始终会有160个有效值供后边的5次进行取的操作,且不会出结束的下标不会大于进的下标。
[0108]
如图2所示,本发明的实施例还提供一种基于循环队列的数据处理装置200,包括:
[0109]
预设单元201,用于预设每次写入循环队列的数据的写入数量a,以及每次从所述循环队列读取的所述数据的读取数量c;
[0110]
第一确定单元202,用于确定所述a与c的大小关系,并获取确定结果;
[0111]
计算单元203,用于根据所述确定结果,计算所述所述a与c的差值d;其中,d大于0;
[0112]
第二确定单元204,用于基于所述a、c以及d,确定将所述数据写入所述循环队列的次数m以及从所述循环队列读取所述数据的次数m,其中,m大于1;
[0113]
调整单元205,用于基于所述m,将所述数据写入所述循环队列并从所述循环队列读取所述数据。
[0114]
可选的,根据所述确定结果,计算所述a与c的差值d,包括:
[0115]
若所述a大于c,则a-c=d,且c=n
·b[0116]
其中,b为单位时间内从所述循环队列读取的数据的读取数量,n大于1。
[0117]
可选的,所述基于所述a、c以及d,确定将所述数据写入所述循环队列的次数m以及从所述循环队列读取所述数据的次数m,包括如下公式:
[0118][0119]
可选的,所述基于所述m,将所述数据写入所述循环队列并从所述循环队列读取所述数据,包括:
[0120]
基于声卡模块将所述a的数据写入所述循环队列;
[0121]
基于算法模块从所述循环队列读取所述c的数据;
[0122]
重复以上步骤(m-1)次后,基于声卡模块将所述a的数据写入所述循环队列,基于算法模块从所述循环队列读取所述(n+1)
·
b的数据。
[0123]
可选的,所述根据所述确定结果,计算所述a与c的差值d,包括:
[0124]
若所述a小于c,则c-a=d,且a=n
·e[0125]
其中,e为单位时间内写入所述循环队列的数据的写入数量,n大于1。
[0126]
可选的,所述基于所述a、c以及d,确定将所述数据写入所述循环队列的次数m以及
从所述循环队列读取所述数据的次数m,包括如下公式:
[0127][0128]
可选的,所述基于所述m,将所述数据写入所述循环队列并从所述循环队列读取所述数据,包括:
[0129]
基于声卡模块将所述a的数据写入所述循环队列;
[0130]
基于算法模块从所述循环队列读取所述c的数据;
[0131]
重复以上步骤(m-1)次后,基于声卡模块将所述(n+1)
·
e的数据写入所述循环队列,基于算法模块从所述循环队列读取所述c的数据。
[0132]
可选的,基于声卡模块将所述a的数据写入所述循环队列,包括:
[0133]
确定所述循环队列的第(e+1)个位置;
[0134]
从所述第(e+1)个位置开始,基于声卡模块将所述a的数据写入所述循环队列。
[0135]
本发明的实施例还提供一种电子设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的方法。
[0136]
本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上所述的方法。
[0137]
另外,本发明实施例的设备的其他构成及作用对本领域的技术人员来说是已知的,为减少冗余,此处不做赘述。
[0138]
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0139]
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
[0140]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0141]
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
[0142]
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0143]
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
[0144]
在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
[0145]
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1