CN117636895A - 一种语音数据获取方法、装置、设备和介质 - Google Patents

一种语音数据获取方法、装置、设备和介质 Download PDF

Info

Publication number
CN117636895A
CN117636895A CN202311436518.5A CN202311436518A CN117636895A CN 117636895 A CN117636895 A CN 117636895A CN 202311436518 A CN202311436518 A CN 202311436518A CN 117636895 A CN117636895 A CN 117636895A
Authority
CN
China
Prior art keywords
data
buffer
sound
spliced
audio
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.)
Pending
Application number
CN202311436518.5A
Other languages
English (en)
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.)
Hefei Jiefa Technology Co ltd
Original Assignee
Hefei Jiefa Technology 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 Hefei Jiefa Technology Co ltd filed Critical Hefei Jiefa Technology Co ltd
Priority to CN202311436518.5A priority Critical patent/CN117636895A/zh
Publication of CN117636895A publication Critical patent/CN117636895A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Circuit For Audible Band Transducer (AREA)

Abstract

本申请实施例提供了一种语音数据获取方法、装置、设备和介质。所述方法包括:检查第一缓冲区、第二缓冲区、第三缓冲区和第四缓冲区的存储状态;第一缓冲区中的数据是从第三缓冲区中获取的,第二缓冲区中的数据是从第四缓冲区中获取的,第三缓冲区用于存储从音频输出通路上采集的参考音,第四缓冲区用于存储从音频输入通路上采集的环境音;在检查到第一缓冲区与第二缓冲区中的数据量相等且第一缓冲区、第二缓冲区、第三缓冲区和第四缓冲区的容量均未溢出的情况下,读取第一缓冲区中的待拼接参考音和第二缓冲区中的待拼接环境音;根据预先测定的时延将读取到的待拼接参考音与待拼接环境音对齐,并拼接,得到目标语音数据。得到合格的语音数据。

Description

一种语音数据获取方法、装置、设备和介质
技术领域
本申请涉及声学领域,更具体地说涉及计算机声学处理领域,特别是涉及一种语音数据获取方法、装置、设备和介质。
背景技术
随着科技的发展,汽车也进入了智能时代。很多智能汽车都带有智能语音识别功能,车载麦克风(Microphone,MIC)从车内采集到环境音后传输给车机系统,车机系统(IVISoC,In-Vehicle Infotainment System On Chip)对接收到的环境音进行语音识别,例如是从环境音中识别出用于控制智能汽车的语音指令。
但是,MIC采集到的环境音中可能混杂智能汽车上的车载扬声器输出的声音。例如,车内驾乘人员在讲述语音指令时车内车载扬声器正在播放音乐,此时,MIC会同时采集到车载扬声器输出的声音和车内驾乘人员讲话的声音。MIC采集到的环境音中混杂的扬声器输出的声音会干扰语音识别。因此,需要对采集的环境音进行回声消除处理,即需要从采集到的环境音中消除掉采集到的扬声器输出的声音。
目前,通用的消回声方案是在车机系统向车载扬声器输出音频时回采该输出音频,将该回采的输出音频作为参考音(Reference,REF),然后利用该参考音抵消掉环境音中的回声,从而实现消回声处理。
发明内容
本申请实施例的目的是提供一种语音数据获取方法、装置、设备、介质、芯片和计算机程序产品,能够在一定程度上解决智能汽车上的语音识别功能后台常驻时因语音识别时使用的语音数据不合格而导致语音识别精度较低的技术问题。
本申请实施例的第一方面提供了一种语音数据的获取方法所述方法包括:检查第一缓冲区、第二缓冲区、第三缓冲区和第四缓冲区的存储状态;其中,所述第一缓冲区中的数据是从所述第三缓冲区中获取的,所述第二缓冲区中的数据是从所述第四缓冲区中获取的,所述第三缓冲区用于存储从音频输出通路上采集的参考音,所述第四缓冲区用于存储从音频输入通路上采集的环境音;在检查到所述第一缓冲区与所述第二缓冲区中的数据量相等且所述第一缓冲区、所述第二缓冲区、所述第三缓冲区和所述第四缓冲区的容量均未溢出的情况下,读取所述第一缓冲区中的待拼接参考音和所述第二缓冲区中的待拼接环境音;根据预先测定的时延将读取到的所述待拼接参考音与所述待拼接环境音对齐,并在对齐后将所述待拼接参考音与所述待拼接环境音拼接,得到目标语音数据。
本申请实施例的第二方面提供了一种语音数据的获取装置,所述装置包括:第一检查模块,用于检查第一缓冲区、第二缓冲区、第三缓冲区和第四缓冲区的存储状态;其中,所述第一缓冲区中的数据是从所述第三缓冲区中获取的,所述第二缓冲区中的数据是从所述第四缓冲区中获取的,所述第三缓冲区用于存储从音频输出通路上采集的参考音,所述第四缓冲区用于存储从音频输入通路上采集的环境音;第一读取模块,用于在检查到所述第一缓冲区与所述第二缓冲区中的数据量相等且所述第一缓冲区、所述第二缓冲区、所述第三缓冲区和所述第四缓冲区的容量均未溢出的情况下,读取所述第一缓冲区中的待拼接参考音和所述第二缓冲区中的待拼接环境音;对齐拼接模块,用于根据预先测定的时延将读取到的所述待拼接参考音与所述待拼接环境音对齐,并在对齐后将所述待拼接参考音与所述待拼接环境音拼接,得到目标语音数据。
本申请实施例的第三方面提供了一种电子设备,所述电子设备包括:中央处理器、第一处理器和存储器,所述存储器存储可在所述第一处理器和所述中央处理器中的至少之一上运行的程序或指令,所述程序或指令中存在程序或指令被所述第一处理器执行时实现如第一方面所述的语音数据获取方法的步骤。
本申请实施例的第四方面提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的语音数据获取方法的步骤。
本申请实施例的第五方面提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的语音数据获取方法。
本申请实施例的第六方面提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面所述的语音数据获取方法。
在本申请实施例中,通过检查第一缓冲区、第二缓冲区、第三缓冲区和第四缓冲区的存储状态,从而确定第一缓冲区中的待拼接参考音是否足够用于抵消第二缓冲区中的待拼接环境音中的回声,以及确定参考音采集硬件采集到的参考音传递至第一缓冲区和环境音采集硬件采集到的环境音传递至第二缓冲区的两个传递过程是否存在数据丢失;在检查到第一缓冲区与第二缓冲区中的数据量相等且第一缓冲区、第二缓冲区、第三缓冲区和第四缓冲区的容量均未溢出的情况下,确定第一缓冲区中的待拼接参考音已经足够用于抵消第二缓冲区中的待拼接环境音中的回声,且前述两个传递过程无存在数据丢失;此时,读取第一缓冲区中的待拼接参考音和第二缓冲区中的待拼接环境音,并根据预先测定的时延将读取到的待拼接参考音与待拼接环境音对齐,并在对齐后将待拼接参考音与待拼接环境音拼接,得到目标语音数据。从而保证拼接后得到的目标语音数据中的参考音与环境音之间的相对时延的稳定,即得到合格的语音数据,将该目标语音数据提供给智能汽车上的语音识别功能进行使用时,因目标语音数据中的参考音与环境音已经基于预先测定的时延对齐并拼接在一起了,在进行消回声处理时能更加完美地利用参考音抵消环境音的中的回声,以使后续语音识别时降低回声造成的干扰,进而提高了智能汽车上的语音识别功能后台常驻时的识别精度。
附图说明
图1是智能汽车内的音频设备的一工作原理示意图;
图2是本申请实施例提供的一种电子设备的结构示意图;
图3是图2所示的电子设备200的音频处理的工作原理示意图;
图4是本申请实施例提供的语音数据的获取方法的流程图;
图5是一种环形缓冲区的结构示意图;
图6是本申请实施例提供的语音数据的获取方法的流程图;
图7是本申请实施例提供的语音数据的获取方法中测定通路时延的流程图;
图8是本申请实施例提供的语音数据获取方法中测定通路时延的部分步骤的流程图;
图9是本申请实施例提供的语音数据的获取方法中测定通路时延的测试结果记录的示意图;
图10是本申请实施例所提供的电子设备200中执行本申请实施例提供的数据获取方法在数据产生阶段的时序图;
图11和图12是本申请实施例提供的语音数据获取方法中第三缓冲区两次相邻中断时的状态示意图,图11是前一次中断时第三缓冲区的状态示意图,图12是后一次中断时第三缓冲区的状态示意图;
图13是本申请实施例提供的语音数据获取方法中语音数据的流转示意图;
图14是本申请实施例提供的语音数据获取方法中语音数据的参考音与环境音的对齐拼接示意图;
图15是本申请实施例提供的一种语音数据的获取装置的结构示意图;
图16是本申请实施例还提供一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
在对本申请实施例所提供的一种语音数据获取方法、装置、设备、存储介质、芯片和计算机程序产品进行具体说明之前,先就本申请实施例所解决的技术问题的产生原因的及其发现过程做详细地说明。
本申请的发明人发现智能汽车上的语音识别功能后台常驻时时常出现语音识别精度较低的现象。本申请的发明人对该现象进行研究后发现,导致精度较低的原因主要是进行识别时所使用的语音数据不合格导致的。下面以智能汽车作为具体场景为例说明这种现象以及相关成因。
如图1所示,示出了智能汽车内的音频设备的一工作原理示意图。请参见图1,车内的MIC103在进行声音采集时,很可能同时采集到车内的扬声器101输出的音乐声音MUSIC和车内的驾乘人员102讲述的语音SOURCE,即MIC103采集到的环境音是音乐声音MUSIC和语音SOURCE相互叠加的声音(MUSIC+SOURCE),其中含有回声MUSIC(后文中所称的回声均指MIC在采集环境音时采集到的车内扬声器输出的声音),并将采集到的环境音存储至第四缓冲区105中,以供CPU104进行语音识别时读取使用。为了提高识别精度,IVI SoC(在图1中未示出)内的中央处理器(CPU)104在对环境音MUSIC+SOURCE进行识别前,需要先从第四缓冲区105中将环境音MUSIC+SOURCE读取到CPU104中,然后对环境音MUSIC+SOURCE进行回声消除处理,即从环境音MUSIC+SOURCE中消除回声MUSIC,最终保留语音SOURCE。并对保留下来的语音SOURCE进行语音识别,并根据识别结果执行相应的动作,例如根据识别到的语音指令通知(智能汽车)主机执行相应的功能。
请继续参见图1,目前,通用的消回声方案是在输出音频(例如图1中的音乐MUSIC)时,从音频输出通路上回采输出音频,将回采的输出音频作为参考音MUSIC_ref并存储至第三缓冲区106中,以供CPU104进行消回声处理时读取使用。CPU104在进行语音识别之前从第三缓冲区106中读取参考音MUSIC_ref和从第四缓冲区105中读取环境音MUSIC+SOURCE至CPU104中,CPU104利用该参考音MUSIC_ref作为环境音MUSIC+SOURCE中回声MUSIC的反相声波抵消环境音MUSIC+SOURCE中的回声MUSIC,从而实现消回声。
在上述的消回声方案中,基于物理学知识可知,针对在某一输出音频MUSIC,音频MUSIC从音频输出通路传递至扬声器101、经扬声器101转换成声波再传递至MIC103以及被MIC103采集到再转换成音频所需要的时长通常大于直接从音频输出通路上采集到该音频MUSIC的时长。即,从音频输出通路上采集到该音频MUSIC的参考音MUSIC_ref第一起始时间点t1与MIC103采集到该音频MUSIC对应的声音的第二起始时间点t2之间会存在一定的时差(记作第一时差Δt1),且第一起始时间点t1总是早于第二起始时间点t2
假设,针对一段输出音频MUSIC,在t1时刻同步开始采集参考音和环境音。在t1时刻至t3时刻(记作时间段T1,其中t1时刻在于t2时刻,t2时刻早于t3时刻)采集到参考音(MUSIC_ref)-T1,在T1时间段内采集到环境音(MUSIC+SOURCE)-T1。其中,在环境音(MUSIC+SOURCE)-T1中的t1时刻至t2时刻的时间段对应的音频内是不含有回声的,而只在t2时刻至t3时刻的时间段对应的音频内含有回声MUSIC。基于前述,在上述消回声方案中,参考音MUSIC_ref是作为环境音中MUSIC+SOURCE的回声MUSIC的反相声波去抵消回声MUSIC,基于该基本原理,在对环境音(MUSIC+SOURCE)-T1进行消回声处理时,是需要用参考音(MUSIC_ref)-T1作为反相声波抵消(MUSIC+SOURCE)-T1中在t2时刻至t3时刻的时间段内采集到的回声MUSIC。即,在进行消回声处理时,需要考虑针对同一输出音频采集到参考音和回声之间的第一时差Δt1(也即通路时延)。
因此,在上述的消回声方案中,CPU104针对在某一时间段(例如在t1时刻至t3时刻的时间段T1)内采集的环境音(MUSIC+SOURCE)-T1进行消回声处理时,CPU104获取到在T1时间段内采集的参考音(MUSIC_ref)-T1的时间点和获取到T1时间段内采集到的环境音(MUSIC+SOURCE)-T1的时间点之间通常也被配置为存在一定的第二时差Δt2(该第二时差Δt2记为相对时延),且该相对时延Δt2应当在一固定的范围内(通常该相对时延Δt2不能大于5毫秒(ms),该范围的最大值不应当超出前述的第一时差Δt1),且相对时延Δt2应当基本不发生变化,CPU104才能利用参考音(MUSIC_ref)-T1作为环境音(MUSIC+SOURCE)-T1中的回声MUSIC的反相声波以从环境音(MUSIC+SOURCE)-T1中抵消回声MUSIC,从而实现消回声。
若该相对时延Δt2发生较大变化(例如相对时延为50ms),可能会导致CPU104在对环境音(MUSIC+SOURCE)-T1进行消回声处理时未能及时获得参考音(MUSIC_ref)-T1,从而导致CPU104在对环境音(MUSIC+SOURCE)-T1进行消回声处理时缺少用于抵消该环境音(MUSIC+SOURCE)-T1中的回声MUSIC的反相声波(MUSIC_ref)-T1,进而导致CPU104对该环境音(MUSIC+SOURCE)-T1的消回声处理时未能抵消环境音(MUSIC+SOURCE)-T1中的回声MUSIC,即消回声处理失效。因此,后续CPU104对该T1时间段内采集的环境音(MUSIC+SOURCE)-T1进行语音识别时环境音(MUSIC+SOURCE)-T1中还含有回声MUSIC,即进行识别时所使用的语音数据不合格,导致语音识别时会对回声MUSIC也进行识别,干扰了对(MUSIC+SOURCE)-T1中的语音数据SOURCE的识别,从而导致语音识别精度较低。
本申请的发明人对CPU104获取参考音MUSIC_ref和环境音MUSIC+SOURCE的过程进行了进一步地研究,发现导致智能汽车上的语音识别功能后台常驻时所使用的语音数据不合格的原因是用于获取参考音MUSIC_ref和环境音MUSIC+SOURCE的线程阻塞导致的,也可以说是线程阻塞导致了CPU104获取同一时间段内采集的参考音MUSIC_ref和环境音MUSIC+SOURCE的相对时延Δt2产生较大波动且超出了固定范围。下面仍然以上述图1中的CPU104获取参考音(MUSIC_ref)-T1和环境音(MUSIC+SOURCE)-T1的相对时延超出固定范围为例进行说明。
请继续参见图1,在图1中向CPU104输入参考音MUSIC_ref的通路上和向CPU输入环境音MUSIC+SOURCE的通路上一一分别存在第三缓冲区106和第四缓冲区105。基于现代计算机组成原理可知,处理器的运行速度远高于其他硬件(例如MIC103),为了提高处理器的运行效率,通常处理器不会直接读取数据生产(或存储)硬件中的数据,而是通过将部分数据读取至缓冲区中进行缓冲。当处理器当前所需的数据在缓冲区中存在时,则直接从缓冲区读取;当处理器当前所需的数据在缓冲区不存在时,再从数据生产(或存储)硬件中读取到缓冲区中,再从缓冲区读取;从而提高处理器的运行效率(具体请参见计算机组成原理,在此不再赘述)。图1中的第三缓冲区106和第四缓冲区105的作用与此相似。当CPU104运行语音识别应用程序时需要从第三缓冲区106中读取参考音MUSIC_ref和从第四缓冲区105中读取环境音MUSIC+SOURCE至CPU104中进行回声消除处理。
基于现代计算机操作系统的基本原理可知,现代计算机基本都是基于多道程序的机制进行内存管理,即在同一时刻在内存中装载多个程序并且能够被同时执行。一个运行中的程序即一个进程,一个进程通常又可以包含多个线程。一个进程中的多个线程通常是并发执行的,某个线程若想被执行必须要得到处理器的使用权。以一个多核心的处理器为例,每个核心均可调度一个线程执行,处理器有几个核心最多同时可调度几个线程。在多道程序的机制下,为了保证各个程序的顺利运行,需要对线程对处理器的使用权进行调度。在计算机中,线程调度有两种模型,分别是分时调度模型和抢占式调度模型。分时调度模型,是指让所有的线程轮流获得处理器的使用权,并且平均分配每个线程占用处理器的时间片。抢占式调度模型,是指让可运行池中优先级高的线程优先占用处理器,而对于优先级相同的线程,随机选择一个线程使其占用处理器,当它失去了处理器的使用权后,再随机选择其他线程获取处理器使用权。
请继续参见图1,在上述通用的消回声方案对应的程序(或计算机术语上的算法)在CPU104上运行时,该消回声进程至少包括两个处理线程(分别记作:第一处理线程和第二处理线程),其中,第一处理线程会开启参考音采集硬件以及从第三缓冲区106中读取参考音MUSIC_ref,第二处理线程会开启环境音采集硬件以及从第四缓冲区中读取环境音MUSIC+SOURCE。第一处理线程和第二处理线程受到为CPU104设定的线程调度模型的调度,当CPU104的负载过高时,第一处理线程和第二处理线程中的至少之一可能被阻塞(线程阻塞可以简单理解为该线程失去处理器使用权而暂时或永久停止执行),从而导致CPU104获取到同一时间段内采集的参考音和环境音的相对时延Δt2产生波动且超出允许的范围(例如相对时延大于了5ms)。
示例性地,当CPU104运行语音识别应用程序的过程中通知第一处理线程和第二处理线程分别从第三缓冲区106中读取参考音MUSIC_ref和从第四缓冲区105中读取环境音MUSIC+SOURCE至CPU104中进行消回声处理时,第一处理线程和第二处理线程中的至少之一因CPU104负载较高受到线程调度模型的调度进入睡眠状态、等待状态、礼让状态或自闭状态等阻塞状态,从而导致CPU104获取到的环境音MUSIC+SOURCE和参考音MUSIC_ref不相匹配。例如,在通知第一处理线程读取T1时间段内采集的参考音(MUSIC_ref)-T1和通知第二处理线程读取T1时间段内采集到的环境音(MUSIC+SOURCE)-T1时第一处理线程被阻塞,导致CPU104获取到的环境音是(MUSIC+SOURCE)-T1,但CPU104未能在允许的相对时延Δt2范围内(例如5ms内)获取到参考音(MUSIC_ref)-T1(CPU104有可能获取到在其他时间段采集的参考音),从而导致CPU104对环境音(MUSIC+SOURCE)-T1进行消回声处理时缺少用于抵消回声MUSIC的反相声波(MUSIC_ref)-T1而无法消除环境音(MUSIC+SOURCE)-T1中的回声MUSIC,即消回声时使用环境音和参考音不匹配,也即消回声时使用的语音数据不合格,导致消回声处理失效。
本申请的发明人在归纳总结了上述研究过程后,得到如下结论:智能汽车上的语音识别功能后台常驻时时常出现语音识别精度较低的现象的直接原因主要是:进行识别时所使用的语音数据不合格导致消回声处理失效,进而导致后续进行语音识别所使用的语音数据含有回声,对语音识别造成了干扰导致语音识别精度较低;智能汽车上的语音识别功能后台常驻时时常出现语音识别精度较低的现象的根本原因是:受CPU的负载和线程调度模型的影响,向CPU内读入参考音数据的第一处理线程和向CPU内读入环境音数据的第二处理线程中的至少之一可能出现阻塞,导致向CPU内读入的参考音数据和环境音数据不匹配,导致CPU对读入的环境音数据进行回声消除处理时缺失用于抵消环境音中的回声的反相声波,从而导致消回声处理失效,进而导致后续进行语音识别所使用的语音数据含有回声,对语音识别造成了干扰导致语音识别精度较低。
需要特别申明的是,上述示例的智能汽车上的语音识别功能后台常驻时时常出现语音识别精度较低的现象的相关成因及其发现过程的说明应当是本申请发明人做出的技术贡献的一部分,不能将其简单地视为现有技术或相关技术中公知的成因。本领域技术人员通常仅仅是从表面上观察到智能汽车上的语音识别功能后台常驻时时常出现语音识别精度较低的现象,不经过创造性地劳动(如对智能汽车上的音频设备的工作原理进行研究)不可能发现智能汽车上的语音识别功能后台常驻时时常出现语音识别精度较低的直接原因,不经过进一步地创造性地劳动(如对CPU获取参考音和环境音的过程进行进一步地研究)更不可能发现智能汽车上的语音识别功能后台常驻时时常出现语音识别精度较低的根本原因(直接原因和根本原因可以参见上文,在此不再叙述)。总而言之,本申请发明人发现上述智能汽车上的语音识别功能后台常驻时时常出现语音识别精度较低现象的直接原因和/或根本原因的过程均超出了本领域技术人员的研究能力和认知水平。
本申请发明人针对上述说明的技术问题进行发明的过程中,曾提出过一些相对于本申请实施例所提供的一种语音数据获取方法、装置、设备、存储介质、芯片和计算机程序产品而言都不太完善或理想的技术方案,为了便于理解本申请实施例所提供的一种语音数据获取方法、装置、设备、存储介质、芯片和计算机程序产品,下面也对本申请发明人在发明过程中所提出的一些不完善的技术方案进行说明。
本申请发明人曾提出在设备中增加专门用于消回声处理的硬件电路,即设计专门的消回声硬件电路模块,该消回声硬件电路模块直接获取从音频输出通路上采集的参考音的第一模拟信号和从音频输入通路上采集的环境音的第二模拟信号,该消回声硬件电路模块直接利用第一模拟信号对第二模拟信号进行抑制,从而实现对第二模拟信号进行消回声处理,再将完成消回声处理的第二模拟信号转换成数字信号后提供给CPU使用。从而避免了CPU通过两个处理线程获取参考音和环境音时线程可能被阻塞导致获取到的参考音和环境音不匹配而不能顺利进行消回声处理的缺陷。但该方案需要专门的硬件工程师设计与之匹配的消回声硬件电路,其硬件设计、生产和装配等都无形中增加了设备的硬件成本。
本申请发明人还曾提出提高获取参考音的第一处理线程和获取环境音的第二处理线程的优先级,从而降低第一处理线程和第二处理线程被阻塞的概率。虽然提高第一处理线程和第二处理线程的优先级确实能在一定程度上降低第一处理线程和第二处理线程被阻塞的概率,但是当CPU的负载过高时,第一处理线程和第二处理线程仍然存在被阻塞的可能性,从而导致CPU获取到的参考音和环境音还是可能不匹配。因此,提高第一处理线程和第二处理线程优先级的方式对于提高语音识别应用后台常驻时的识别精度的效果并不理想。
需要特别申明的是,本申请的发明人所提出的上述两种方案是本申请发明过程中的预想方案和试验方案,预想方案和试验方案并未予以公开,不应当在无证据证明其属于本申请的现有技术的情况下就径行将其认定为或视为属于本申请的现有技术。
本申请实施例所提供的一种语音数据获取方法、装置、设备、存储介质、芯片和计算机程序产品能有效解决上述技术问题且相对于本申请发明人曾提出过的上述两种方案而言效果更佳。下面结合附图,对本申请实施例提供的一种语音数据获取方法、装置、设备、存储介质、芯片和计算机程序产品进行详细地说明。
如图2所示,示出了本申请实施例提供的一种电子设备的结构示意图。所述电子设备可以是计算机、智能手机、平板电脑、可穿戴智能设备、智能汽车上的车机系统(IVI SoC,In-Vehicle Infotainment System On Chip)等设备,也可以是分布式系统的服务器、云服务器、带人工智能技术的智能云计算服务器或智能云主机等服务器。请参见图2,该电子设备200包括:CPU204、第一处理器207、主存210、第一缓冲区208、第二缓冲区209、输出缓冲区216(在输出缓冲区216中分配了部分固定的存储区域作为第三缓冲区206)、第四缓冲区205、MIC控制器211、ADC(Analog-to-Digital Converter,模数转换)器件212、MIC203、扬声器控制器213、I2S(Inter—IC Sound,集成电路内置音频)总线214、功率放大器215、扬声器201、(除前述的ADC器件212、MIC203、I2S总线214、功率放大器215、扬声器201之外的)其它输入/输出子系统217。
其中,第一处理器207与CPU204通过通信总线连接,第一处理器207与CPU204均与主存210通过总线通信连接,第一缓冲区208和第二缓冲区209均与第一处理器207通过总线通信连接,输出缓冲区216(第三缓冲区206)和第四缓冲区205均与CPU204通过总线通信连接。位于音频输入通路上的:MIC203和ADC器件212之间电连接,ADC器件212和MIC控制器211之间通信连接,MIC控制器211通过通信总线与CPU204、第四缓冲区205、主存210通信连接。位于音频输出通路上的:扬声器201和功率放大器215之间电连接,功率放大器215和扬声器控制器213之间通过I2S总线214通信连接,扬声器控制器213通过通信总线与CPU204、输出缓冲区216(第三缓冲区206)、主存210通信连接。
第一处理器207和CPU204均可以包括一个或多个处理单元;可选的,第一处理器207和CPU204集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作系统、用户界面和应用程序等的操作,调制解调处理器主要处理通信信号,如基带处理器、数字信号处理器。可以理解的是,上述调制解调处理器也可以不集成到第一处理器207和/或CPU204中。在一些可选的实施方式中,第一处理器207可以是DSP(Digital SignalProcessor,数字信号处理器)、协处理器或ARM核心。
第一缓冲区208、第二缓冲区209、输出缓冲区216(第三缓冲区206)和第四缓冲区205均是高速缓冲存储器。
输出缓冲区216中非第三缓冲区206所占据的区域可以用于存储通过音频输出通路输出的音频数据,该音频数据可以通过总线传输给扬声器控制器213,扬声器控制器213通过I2S总线214传输给功率放大器215,功率放大器215对接收到音频数据进行数模转换后传输给扬声器201,扬声器201将接收到的模拟信号转换成声音输出。输出缓冲区216的第一控制器(图2中未示出,基于计算机的组成原理可知,缓冲区的缓冲器和控制器是集成在一起的,因此在图2中未示意,缓冲区受到控制器的控制,例如控制缓冲器内的数据读取与输出以及通信中断等。)在控制输出缓冲区216在通过音频输出通路向外输出音频数据时还可以对输出的音频数据进行采集(例如,第一控制器在第三缓冲区206中创建输出的音频数据的副本)得到参考音,并存储至第三缓冲区206中,即输出缓冲区216(第三缓冲区206)的第一控制器可以作为参考音采集硬件。MIC203在采集到环境音后得到对应的模拟信号并传输给ADC器件212,ADC器件212对接收到模拟信号进行模数转换得到采集到的环境音的数字信号,并将MIC203采集到的该环境音的该数字信号存储至第四缓冲区205中,即MIC控制器211和第四缓冲区205的第二控制器可以作为环境音采集硬件(因为MIC控制器211采集到数据后几乎可以瞬间存储至第四缓冲区205中,因此为了便于进行表述和说明,在后文中说明环境音采集硬件时将忽略第四缓冲区205的第二控制器,直接以MIC控制器211作为环境音采集硬件进行说明)。
输出缓冲区216(第三缓冲区206)和第四缓冲区205受到CPU204的直接控制。例如CPU204可以向输出缓冲区216中存储准备通过音频输出通路输出的输出音频数据;CPU204也可以通知第一控制器和第二控制器分别一一清空输出缓冲区216(第三缓冲区206)和第四缓冲区205;CPU204还可以监测第一控制器和第二控制器的中断情况,在监测到第一控制器产生硬件中断的情况下通知第一处理器207将第三缓冲区206中的数据搬运至第一缓冲区208中,在监测到第二控制器产生硬件中断的情况下通知第一处理器207将第四缓冲区205中的数据搬运至第二缓冲区209中。
在一些可选的实施方式中,输出缓冲区216(第三缓冲区206)和第四缓冲区205是DMA(Direct Memory Access,直接存储器访问)存储器。
第一缓冲区208和第二缓冲区209受到第一处理器207的直接控制。例如第一处理器207可以从第一缓冲区208和第二缓冲区209中读取数据;第一处理器207也可以通知控制第一缓冲区208的第三控制器和控制第二缓冲区209的第四控制器分别一一清空第一缓冲区208和第二缓冲区209;第一处理器207还可以在接收到CPU204发送的第一数据搬运指令的情况下将第三缓冲区206中的数据搬运至第一缓冲区208中,以及在接收到CPU204发送的第二数据搬运指令的情况下将第四缓冲区205中的数据搬运至第二缓冲区209中。
在一些可选的实施方式中,第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205均可以是随机存取存储器(Random Access Memory,RAM)、静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。
在一些可选的实施方式中,第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205均是环形缓冲区,具体请参见后文中的下图5的相关说明。
主存210中可以装载程序或指令,装载的程序或指令可以是消回声处理的程序或指令、语音识别程序或指令、本申请实施例提供的语音数据获取方法对应的程序或指令等。装载的程序或指令可以被CPU204和第一处理器207中设定的处理器执行,例如消回声处理的程序或指令、语音识别程序或指令可以被CPU204执行,本申请实施例提供的语音数据获取方法对应的程序或指令中可以被第一处理器207出行。主存210中还可以存储数据,存储的该数据可以被CPU204和第一处理器207读取,CPU204和第一处理器207也可以向主存210中存入数据。
主存210可以是随机存取存储器(Random Access Memory,RAM)、静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。
其它输入/输出子系统217包括但不限于:射频单元、网络模块、音频输出单元、输入单元、传感器、显示单元、用户输入单元、接口单元、外部存储器(与前述的电子设备中的计算机体系中的第一缓冲区208、第二缓冲区209、输出缓冲区216/第三缓冲区206、第四缓冲区205和主存210相区分的存储器)等部件。本领域技术人员可以理解,电子设备200还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与CPU204逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图2中示出的电子设备200结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
应理解的是,本申请实施例中,输入单元可以包括图形处理器(GraphicsProcessing Unit,GPU),图形处理器对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元包括显示面板,可以采用液晶显示器、有机发光二极管等形式来配置显示面板。用户输入单元包括触控面板以及其他输入设备中的至少一种。触控面板,也称为触摸屏。触控面板可包括触摸检测装置和触摸控制器两个部分。其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
外部存储器可用于存储软件程序以及各种数据。外部存储器可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作系统、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,外部存储器可以包括易失性存储器或非易失性存储器,或者,外部存储器可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请实施例中的存储器包括但不限于这些和任意其它适合类型的存储器。
如图3所示,示出了图2所示的电子设备200的音频处理的工作原理示意图。图3中所示的部件均是图2中所示的电子设备200中的器件或元件,相同的标号所标识的器件或元件是相同(或相同类型)的器件或元件。
请参见图3,在该电子设备200上的语音识别功能后台常驻的情况下,MIC203在采集到扬声器201输出的声音MUSIC和人员202讲述的语音SOURCE后,环境音采集硬件将采集到的环境音MUSIC+SOURCE存储至第四缓冲区205中。同时,参考音采集硬件从音频输出通路上采集输出音频MUSIC得到参考音MUSIC_ref并存储至第三缓冲区206中。
CPU204在监测到第一控制器产生硬件中断的情况下CPU204通知第一处理器207将第三缓冲区206中的数据搬运至第一缓冲区208中(即CPU204向第一处理器207发送第一数据搬运指令),CPU204在监测到第二控制器产生硬件中断的情况下通知第一处理器207将第四缓冲区205中的数据搬运至第二缓冲区209中(即CPU204向第一处理器207发送第二数据搬运指令)。第一处理器207在接收到第一数据搬运指令的情况下,将第三缓冲区206中的数据搬运至第一缓冲区208中;第一处理器207在接收到第二数据搬运指令的情况下,将第四缓冲区205中的数据搬运至第二缓冲区209中。
且第一处理器207,用于:
检查第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205的存储状态;其中,所述第一缓冲区208中的数据是从所述第三缓冲区206中获取的,所述第二缓冲区209中的数据是从所述第四缓冲区205中获取的,所述第三缓冲区206用于存储从音频输出通路上采集的参考音MUSIC_ref,所述第四缓冲区205用于存储从音频输入通路上采集的环境音MUSIC+SOURCE;
在检查到所述第一缓冲区208与所述第二缓冲区209中的数据量相等且所述第一缓冲区208、所述第二缓冲区209、所述第三缓冲区206和所述第四缓冲区205的容量均未溢出的情况下,读取所述第一缓冲区208中的待拼接参考音MUSIC_ref和所述第二缓冲区209中的待拼接环境音MUSIC+SOURCE;
根据预先测定的时延将读取到的所述待拼接参考音MUSIC_ref与所述待拼接环境音MUSIC+SOURCE对齐,并在对齐后将所述待拼接参考音MUSIC_ref与所述待拼接环境音MUSIC+SOURCE拼接,得到目标语音数据MUSIC_ref+MUSIC+SOURCE;
将目标语音数据MUSIC_ref+MUSIC+SOURCE发送给CPU204;
CPU204用于:
在接收到目标语音数据MUSIC_ref+MUSIC+SOURCE的情况下,对目标语音数据MUSIC_ref+MUSIC+SOURCE进行消回声处理,即利用目标语音数据MUSIC_ref+MUSIC+SOURCE中的参考音MUSIC_ref作为目标语音数据MUSIC_ref+MUSIC+SOURCE中的回声MUSIC反相声波抵消目标语音数据MUSIC_ref+MUSIC+SOURCE中的回声MUSIC,得到消回声处理后的环境音SOURCE;
对消回声处理后的环境音SOURCE进行语音识别,并根据识别结果执行相应的动作,例如根据识别到的语音指令控制电子设备200执行相应的功能。
如图4所示,图4是本申请实施例提供的语音数据的获取方法的流程图。下面以图2和图3所示的电子设备为例,对本申请实施例提供的语音数据的获取方法进行说明。但应当申明的是,这不是对本申请实施例提供的语音数据的获取方法的具体限制,本申请实施例提供的语音数据的获取方法还可以应用于图15所示的语音数据的获取装置、图16所示的电子设备等,具体请参见文中的相关说明。请结合参见图2、图3和图4,电子设备200上的语音识别功能后台常驻的情况下,电子设备200的第一处理器207执行所述语音数据的获取方法对应的程序或指令,实现以下步骤S401至步骤S403:
S401:检查第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205的存储状态。
其中,第一缓冲区208中的数据是从第三缓冲区206中获取的,第二缓冲区209中的数据是从第四缓冲区205中获取的,第三缓冲区206用于存储参考音采集硬件(例如是第三缓冲区206的第一控制器)从音频输出通路上采集的参考音MUSIC_ref,第四缓冲区205用于存储环境音采集硬件(例如MIC控制器211)从音频输入通路上采集的环境音MUSIC+SOURCE。
如前所述,在第三缓冲区206的第一控制器产生中断的情况下,第一处理器207会将第三缓冲区206中的数据搬运至第一缓冲区208中,在第四缓冲区205的第二控制器产生中断的情况下,第一处理器207会将第四缓冲区205中的数据搬运至第二缓冲区209中。具体请参见图10所示的实施例的相关说明。
在一些可选的实施方式中,第三缓冲区206和第四缓冲区205是DMA存储器,一一分别控制第三缓冲区206和第四缓冲区205的第一控制器和第二控制器产生中断是指DMA中断。有关第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205的其他相关说明,请参见图2和图3对应的实施例的相关说明,在此不再重复赘述。
检查缓冲区的存储状态就是检查缓冲区中存储的数据的数据量,以及确定缓冲区的容量状态(即确定缓冲区的容量是否溢出)。
在电子设备200开启语音识别功能并后台常驻时,第一处理器207实时性地检查第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205的存储状态,即第一处理器207周期性地或实时性地检查这四个缓冲区中存储的数据的数据量。
在一些可选的实施方中,步骤S401,包括以下步骤:
周期性地检查第一缓冲区208中和第二缓冲区209中的数据量;
在检查到所述第一缓冲区208中和所述第二缓冲区209中的数据量相等的情况下,检查所述第一缓冲区208、所述第二缓冲区209、所述第三缓冲区206和所述第四缓冲区205的容量状态。
有关说明请参见后文数据拼接阶段对应实施例的相关说明,在此不再赘述。
S402:在检查到所述第一缓冲区208与所述第二缓冲区209中的数据量相等且所述第一缓冲区208、所述第二缓冲区209、所述第三缓冲区206和所述第四缓冲区205的容量均未溢出的情况下,读取所述第一缓冲区208中的待拼接参考音和所述第二缓冲区209中的待拼接环境音。
基于前述可知,第一缓冲区208和第三缓冲区206中存储的均是参考音MUSIC_ref,第二缓冲区209和第四缓冲区205中存储的均是环境音MUSIC+SOURCE。第一缓冲区208和第二缓冲区209可被第一处理器207直接访问,第三缓冲区206和第四缓冲区205不能被第一处理器207直接访问。第一处理器207在检查到第一缓冲区208和第二缓冲区209的数据量相等时,意味着从第三缓冲区206搬运至第一缓冲区208中的待拼接参考音MUSIC_ref已经足够用于抵消从第四缓冲区205中搬运至第二缓冲区209中存储的待拼接环境音MUSIC+SOURCE中的回声MUSIC。
缓冲区是一个物理存储区,用于在将数据从一个位置移到另一位置时临时存储数据。当向缓冲区写入的数据量大于缓冲区的容量时,会导致缓冲区出现容量溢出现象。换言之,过量的信息被传递至没有足够容量的缓冲区中,这些过量的信息会替换缓冲区中已经存储的信息,即缓冲区中已经存储的数据被后续传递的信息所覆写。下面以一个环形缓冲区为例进行说明。
如图5所示,图5示出了一种环形缓冲区的结构示意图。请参见图5,在向该环形缓冲区中写入数据时是从缓冲区的头部(head)开始在每个存储空间(buffer)写入缓冲数据,并沿着图中所示顺时针方向向空白区域(free space)生长(growth);缓冲区中最后一个存储有数据的存储空间一般称为已占用区域尾部(tail)。例如,在初始状态下,该缓冲区中尚未存储任何数据,当前需要在该缓冲区中写入N份数据,则先在第一存储空间buff1处写入第一份缓冲数据,然后在第二存储空间buff2处写入第二份缓冲数据……直至在第N存储空间buffN处写入第N份缓冲数据,其中,N为大于零的正整数;在下次向该缓冲区中继续写入数据时,假设前述的N份数据仍在该缓冲区中,则此次写入数据时从第N+1存储空间buff(N+1)处开始写入。从该缓冲区中取出数据的速度小于存入数据的速度时,必然会出现已占用区域尾部(tail)与头部(head)出现重合的情况,当已占用区域尾部(tail)与头部(head)开始出现重合时,第一存储空间buff1中已经存储的数据将被后续的信息所覆盖,即该缓冲区出现容量溢出现象,也即该缓冲区出现了覆写。
在一些可选的实施方式中,第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205中至少之一是图5所示的环形缓冲区。
第一处理器207在检查到第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205的容量均未溢出的情况下,意味着第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205均未出现覆写,也即意味着参考音采集硬件(例如是第三缓冲区206的第一控制器)在向第三缓冲区206中存储采集的参考音、第一处理器207在将第三缓冲区206中的参考音搬运至第一缓冲区208中、环境音采集硬件(例如MIC控制器211)在向第四缓冲区205中存储采集的环境音、第一处理器207在将第四缓冲区205中的环境音搬运至第二缓冲区209的过程中均未出现数据丢失。此时,第一处理器207将第一缓冲区208中的待拼接参考音和第二缓冲区209中的待拼接环境音读取至第一处理器207中。
S403:根据预先测定的时延将读取到的所述待拼接参考音MUSIC_ref与所述待拼接环境音MUSIC+SOURCE对齐,并在对齐后将所述待拼接参考音MUSIC_ref与所述待拼接环境音MUSIC+SOURCE拼接,得到目标语音数据MUSIC_ref+MUSIC+SOURCE。
基于前述对本申请实施例所解决的技术问题的相关成因的发现过程的说明可知,电子设备200上的语音识别功能后台常驻的情况下,参考音采集硬件和环境音采集硬件几乎是同时开启的,针对一输出音频MUSIC,参考音采集硬件(例如是第三缓冲区206的第一控制器)在输出通路上采集到参考音MUSIC_ref的时间点总是早于环境音采集硬件(例如MIC控制器211)采集到回声MUSIC的时间点,即前述的第一时差。也就是说,环境音采集硬件采集的环境音MUSIC+SOURCE中的前段音频部分存在一小段音频是没有输出音频MUSIC对应的回声MUSIC的。因此,在将待拼接参考音MUSIC_ref与待拼接环境音MUSIC+SOURCE进行拼接时,需要将待拼接参考音MUSIC_ref与待拼接环境音MUSIC+SOURCE中含有回声MUSIC部分对齐,以在拼接时将待拼接参考音MUSIC_ref拼接入待拼接环境音MUSIC+SOURCE中含有回声MUSIC的音频段,以便于后续将目标语音数据MUSIC_ref+MUSIC+SOURCE传输给CPU204时进行消回声处理。
因此,可以预先测定针对一输出音频MUSIC,参考音采集硬件(例如是第三缓冲区206的第一控制器)在输出通路上采集到参考音MUSIC_ref的时间点总是早于环境音采集硬件(例如MIC控制器211)采集到回声MUSIC的时间点之间的第一时差Δt1,即预先测定该时延Δt1,然后基于该预先测定时延确定待拼接环境音MUSIC+SOURCE中不存在回声MUSIC的音频段和存在回声MUSIC的音频段,然后将待拼接参考音MUSIC_ref和待拼接环境音MUSIC+SOURCE中存在回声MUSIC的音频段对齐后,将待拼接参考音MUSIC_ref与待拼接环境音MUSIC+SOURCE中的回声MUSIC音频段进行拼接,即得到目标语音数据MUSIC_ref+MUSIC+SOURCE。
在一些可选的实施方式中,步骤S403,包括以下步骤:
将所述待拼接参考音中与所述待拼接环境音中相互对齐的参考音数据帧和环境音数据帧拼接为一帧,得到多帧拼接语音数据帧;
并将所述多帧拼接语音数据帧按照所述参考音数据帧或所述环境音数据帧的帧序进行拼接,得到目标语音数据。
具体请参见图14对应的实施例的相关说明,在此不再赘述。
在本申请实施例中,通过检查第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205的存储状态,从而确定第一缓冲区208中的待拼接参考音是否足够用于抵消第二缓冲区209中的待拼接环境音中的回声,以及确定参考音采集硬件采集到的参考音传递至第一缓冲区208和环境音采集硬件采集到的环境音传递至第二缓冲区209的两个传递过程是否存在数据丢失;在检查到第一缓冲区208与第二缓冲区209中的数据量相等且第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205的容量均未溢出的情况下,确定第一缓冲区208中的待拼接参考音已经足够用于抵消第二缓冲区209中的待拼接环境音中的回声,且前述两个传递过程无存在数据丢失;此时,读取第一缓冲区208中的待拼接参考音和第二缓冲区209中的待拼接环境音,并根据预先测定的时延将读取到的待拼接参考音与待拼接环境音对齐,并在对齐后将待拼接参考音与待拼接环境音拼接,得到目标语音数据。从而保证拼接后得到的目标语音数据中的参考音与环境音之间的相对时延的稳定,即得到合格的语音数据,将该目标语音数据提供给电子设备200上的语音识别功能进行使用时,因目标语音数据中的参考音与环境音已经基于预先测定的时延对齐并拼接在一起了,在进行消回声处理时能更加完美地利用参考音抵消环境音的中的回声,以使后续语音识别时降低回声造成的干扰,进而提高了电子设备200上的语音识别功能后台常驻时的识别精度。
如图6所示,图6是本申请实施例提供的语音数据的获取方法的流程图。请结合参见图2、图3和图6,电子设备200上的语音识别功能后台常驻的情况下,电子设备200的第一处理器207执行所述语音数据的获取方法对应的程序或指令,实现以下步骤S601至步骤S604:
S601:检查第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205的存储状态。
S602:在检查到所述第一缓冲区208与所述第二缓冲区209中的数据量相等且所述第一缓冲区208、所述第二缓冲区209、所述第三缓冲区206和所述第四缓冲区205的容量均未溢出的情况下,读取所述第一缓冲区208中的待拼接参考音和所述第二缓冲区209中的待拼接环境音。
S603:根据预先测定的时延将读取到的所述待拼接参考音MUSIC_ref与所述待拼接环境音MUSIC+SOURCE对齐,并在对齐后将所述待拼接参考音MUSIC_ref与所述待拼接环境音MUSIC+SOURCE拼接,得到目标语音数据MUSIC_ref+MUSIC+SOURCE。
上述步骤S601-S603与前述步骤S401-S403相同,具体请参见相关说明,在此不再赘述。
S604:在检查到所述第一缓冲区208、所述第二缓冲区209、所述第三缓冲区206和所述第四缓冲区205中至少之一的容量为已溢出的情况下,第一处理器207清空所述第一缓冲区208和所述第二缓冲区209,并通知中央处理器204清空所述第三缓冲区206和所述第四缓冲区205。
第一处理器207检查到第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205中的任意一个缓冲区出现容量溢出的现象,均说明第一处理器207负载过高或其他意外事件导致容量溢出的缓冲区中的数据未来得及及时处理而可能被覆写,即采集到的参考音数据和采集到的环境音中的至少之一可能已经出现过丢失,这种丢失是不可挽回的,不仅可能会导致消回声效果不理想,也可能会进一步导致后续语音识别的精度的降低。语音识别是及时进行的,且通常人们发现电子设备200未正确识别到其语音指令时会重新讲述语音指令,与其利用已经不完整的数据进行语音识别影响识别精度,还不如将不完整的数据直接丢弃重新采集环境音再进行消回声和识别。
因此,第一处理器207向第一缓冲区208的第三控制器发出清空第一缓冲区208的指令以及向第二缓冲区209的第四控制器清空第二缓冲区209的指令;同时,第一处理器207向CPU204发送清空第三缓冲区206和第四缓冲区205的请求,CPU204在接收到该请求后向第三缓冲区206的第一控制器发送清空第三缓冲区206的指令和向第四缓冲区205的第二控制器发送清空第四缓冲区205指令;第三控制器、第四控制器、第一控制器和第二控制器一一分别在接收到指令的情况下,一一分别清空第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205。
在一些实施例中,在上述图4或图6对应的实施例的基础上,电子设备200上的语音识别功能后台常驻的情况下,电子设备200的第一处理器207执行所述语音数据的获取方法对应的程序或指令,还可以实现以下步骤:第一处理器207向中央处理器204发送所述目标语音数据MUSIC_ref+MUSIC+SOURCE。
第一处理器207可以通过通信总线将目标语音数据MUSIC_ref+MUSIC+SOURCE发送给CPU204,以供在CPU204上运行的语音识别进程使用,具体请参见图2和图3所示的实施例的相关说明,这并非本申请实施例的重点,在此不再赘述。
在上述说明的基础上,下面仍然以图2和图3所示的电子设备200为依托,对本申请实施例所提供的语音数据的获取方法作更加详细的补充说明。
本申请实施例所提供的音数据的获取方法大致包括以下四个阶段:通路时延测定阶段、(语音识别应用运行时)硬件开启阶段、(语音识别应用运行时)数据产生阶段和(语音识别应用所需)数据拼接阶段。说明如下:
通路时延测定阶段
如前所述,针对一输出音频MUSIC,参考音采集硬件(例如是第三缓冲区206的第一控制器)在输出通路上采集到参考音MUSIC_ref的时间点总是早于环境音采集硬件(例如MIC控制器211)采集到回声MUSIC的时间点,即前述的第一时差Δt1,该第一时差Δt1即通路时延。也就是说,通路时延Δt1是用于描述针对一音频数据MUSIC从音频输出通路输出变成目标声音SOUND且该目标声音SOUND被音频输入通路采集到的过程中从音频输出通路上采集到该音频数据MUSIC的采集时间与从音频输入通路上采集到改音频数据MUSIC的采集时间之间的时差。
通路时延Δt1可以预先测定,以备数据拼接阶段时使用(具体请参见数据拼接阶段的相关说明)。若电子设备200是智能汽车上的IVI SoC,测定其通路时延时可以在实车标定环节进行测试并记录。如图7所示,图7是本申请实施例提供的语音数据的获取方法中测定通路时延的流程图。如图9所示,图9是本申请实施例提供的语音数据的获取方法中测定通路时延的测试结果记录的示意图。请结合参见图2、图3、图7、图8和图9,通路时延Δt1是第一处理器207执行所述语音数据的获取方法对应的程序或指令,实现以下步骤S601-S603测定的:
S701:获取特征音频数据。
特征音频数据是波形相对较为规则的音频数据。例如是图9中所示的波形是三角波的音频数据或波形是方波的音频数据。在一些可选的实施方式中,特征音频数据包括前序特征音频数据(记作F-audio)和后序特征音频数据(记作S-audio);其中,在测试的过程中,前序特征音频数据先于后序特征音频数据输出。例如图9中所示的三角波是前序特征音频数据,方波是后序特征音频数据。
需要特别申明的是,图9中所示的特征音频数据只是一种示例性的说明,并不构成对本申请的具体限制。特征音频数据还可以是其他波形,例如是正弦波形的。且前序特征音频数据和后序特征音频数据也并不限于图9所示的输出顺序,例如也可以是方波作为前序特征音频数据,三角波作为后序特征音频数据。
在一些可选的实施方式中,特征音频数据是预先制作完成后存储在电子设备200的外部存储器中,在电子设备200的第一处理器207接收到其它输入/输出子系统217输入的测试启动命令时,从外部存储器中加载至主存210中,再从主存210中读取至第一处理器207中。
在一些可选的实施方式中,特征音频数据是电子设备200的第一处理器207响应于接收到其它输入/输出子系统217输入的测试启动命令,调用特征音频数据生成函数自动生成的。
S702:通过所述音频输出通路输出所述特征音频数据,并通知中央处理器204同步开启参考音采集硬件和环境音采集硬件,以采集所述音频输出通路上的音频数据(记为数据R)和所述音频输入通路从环境中采集到声音后输入的音频数据(记为数据M)。
第一处理器207在获取到特征音频数据后,将获取到的前序特征音频数据和后序特征音频数据依次传递至输出缓冲区216中,并在此过程中同步通知CPU204开启参考音采集硬件(例如是第三缓冲区206的第一控制器)和环境音采集硬件(例如MIC控制器211)。
第一处理207控制输出缓冲区216依次将前序特征音频数据F-audio和后序特征音频数据S-audio传输给扬声器控制器213,扬声器控制器213通过I2S总线214依次将前序特征音频数据F-audio和后序特征音频数据S-audio传输给功率放大器215进行数模转换,功率放大器215依次将前序特征音频数据F-audio和后序特征音频数据S-audio对应的模拟信号传输给扬声器201,扬声器201依次输出前序特征音频数据F-audio和后序特征音频数据S-audio对应的声音F-audio-Sound和S-audio-Sound。
参考音采集硬件(例如是第三缓冲区206的第一控制器)从音频输出通路上依次采集到前序特征音频数据F-audio和后序特征音频数据S-audio对应的音频数据R-F-audio和R-S-audio,并传输给第一处理器207。
MIC213依次采集声音F-audio-Sound和S-audio-Sound,得到声音F-audio-Sound和S-audio-Sound对应的模拟信号,并传输给ADC器件212,ADC器件212依次对声音F-audio-Sound和S-audio-Sound对应的模拟信号进行模数转换,得到声音F-audio-Sound和S-audio-Sound对应的数字信号M-F-audio和M-S-audio,并传输给MIC控制器211,MIC控制器211将从音频输入通路上采集的音频数据M-F-audio和M-S-audio传输给第四缓冲区205,第四缓冲区205的第二控制器将音频数据M-F-audio和M-S-audio传输给第一处理器207。
S703:根据所述参考音采集硬件采集到的音频数据和所述环境音采集硬件采集到的音频数据,确定通路时延Δt1
第一处理器207在接收到音频数据R-F-audio、R-S-audio、M-F-audio和M-S-audio后,根据音频数据R-F-audio、R-S-audio、M-F-audio和M-S-audio确定通路时延Δt1
如图8所示,图8是本申请实施例提供的语音数据获取方法中测定通路时延的部分步骤的流程图。在一些可选的实施方式中,步骤S703,包括步骤S801-S803:
S801:在先输出所述前序特征音频数据F-audio的过程中,根据所述参考音采集硬件采集到的音频数据和所述环境音采集硬件采集到的音频数据,确定所述音频输出通路上的前序特征音频数据R-F-audio和所述音频输入通路上的前序特征音频数据M-F-audio之间的比例关系。
在先输出前序特征音频数据F-audio的过程中,将数据R和数据M进行比对识别,识别出两者中波形相似的音频数据,即先分别从数据R和数据M中识别出采集到的前序特征音频数据;并分别确定参考音采集硬件采集到的前序特征音频数据的第一波峰值A1和环境音采集硬件采集到的前序特征音频数据的第二波峰值A2,并根据记录的第一波峰值和第二波峰值确定音频输出通路上的前序特征音频数据R-F-audio和音频输入通路上的前序特征音频数据M-F-audio之间的比例关系
示例性地,请参见图9,参考音采集硬件采集的音频数据位于时间轴t的上半部分,环境音采集硬件采集的音频数据位于时间轴t的下半部分。在输出频率为1KHz(千赫兹)、波形为三角波的前序特征音频数据F-audio的过程中,识别到参考音采集硬件采集到的波形为三角波的音频数据的波峰值为0xeb61、环境音采集硬件采集到的波形为三角波的音频数据的波峰值为0x15631,确定音频输出通路上的前序特征音频数据R-F-audio和音频输入通路上的前序特征音频数据M-F-audio之间的比例关系
S802:在后输出所述后序特征音频数据S-audio的过程中,根据所述比例在关系,从所述参考音采集硬件采集到的音频数据中和所述环境音采集硬件采集到的音频数据中分别一一识别出各自采集到的后序特征音频数据(R-S-audio和M-S-audio),并记录所述参考音采集硬件采集到后序特征音频数据R-S-audio的第一起止时间点(tr和ts)和所述环境音采集硬件采集到后序特征音频数据M-F-audio的第二起止时间点(tm和tn)。
在输出后序特征音频数据S-audio的过程中,将数据R和数据M进行比对识别,识别出两者中波形相似的音频数据,并基于在步骤S801中确定的比例关系确定识别到的波形相似的音频数据与所述后序特征音频数据S-audio的关系,若数据R与后序特征音频数据S-audio相同,且数据M与数据R之间存在比例关系/>则确定识别出的两者中波形相似的音频数据一一分别就是参考音采集硬件采集到的后序特征音频数据R-S-audio和环境音采集硬件采集到的后序特征音频数据M-S-audio。并记录所述参考音采集硬件采集到后序特征音频数据R-S-audio的第一起止时间点(tr和ts)和所述环境音采集硬件采集到后序特征音频数据M-F-audio的第二起止时间点(tm和tn)。
示例性地,请参见图9,在输出频率为5KHz(千赫兹)、波形为方波的后序特征音频数据S-audio的过程中,将数据R和数据M进行比对识别,识别出两者中波形相似的音频数据,并基于比例关系确定识别到的波形相似的音频数据与所述后序特征音频数据S-audio的关系,若数据R与后序特征音频数据S-audio相同,且数据M与数据R之间存在比例关系/>则确定识别出的两者中波形相似的音频数据一一分别就是参考音采集硬件采集到的后序特征音频数据R-S-audio和环境音采集硬件采集到的后序特征音频数据M-S-audio。并记录所述参考音采集硬件采集到后序特征音频数据R-S-audio的第一起止时间点(tr和ts)和所述环境音采集硬件采集到后序特征音频数据M-F-audio的第二起止时间点(tm和tn)。
S803:根据所述第一起止时间点(tr和ts)和所述第二起止时间点(tm和tn)之间的时差,确定通路时延Δt1
在一些可选的实施方式中,通路时延Δt1基于第一起始时间点tr和第二起始时间点tm确定,即Δt1=|tr-tm|。
在一些可选的实施方式中,通路时延Δt1基于第一终止时间点ts和第二终止时间点tn确定,即Δt1=|ts-tn|。
通过以上步骤S701-S703可以测定电子设备200的通路时延Δt1
在一些可选的实施方式中,可以多次重复执行上述步骤S701-S703,得到多个(例如是M个,M为大于等于0的正整数)通路时延(Δt1)1、(Δt1)2、…、(Δt1)M,其中;从所述多个通路时延(Δt1)1、(Δt1)2、…、(Δt1)M中确定出相对稳定的值,作为最终测定的通路时延Δt1
硬件开启阶段
请参见图2和图3,在CPU204开始运行语音识别应用程序时,第一处理线程控制开启参考音采集硬件(例如是第三缓冲区206的第一控制器)和第二处理线程控制开启环境音采集硬件(例如MIC控制器211),并指令第一控制器返回第一开启时间ta和MIC控制211返回第二开启时间tb,并确定第一开启时间ta和第二开启时间tb之间第三时差Δt3=|ta-tb|。并将该第三时差Δt3存储至指定存储空间,例如该指定存储空间可以是主存210,当然也不排除可以是外部存储器,在此仅以主存210为例进行说明。
需要特别说明的是,在现代计算机系统体系结构中,硬件的操作或处理通常位于整个体系的最高优先级,因此开启参考音采集硬件和开启环境音采集硬件的时间点几乎可以说是完全同步的。但为了提高语音识别的精确度,以及考虑到第一处理线程和第二处理线程在开启硬件的过程也存在阻塞的可能性(虽然概率很小),此时也记录开启参考音采集硬件和开启环境音采集硬件之间的开启时延Δt3(即前述的第三时差Δt3),以在后续进行语音数据拼接前也考虑该开启时延Δt3进行对齐处理。
数据产生阶段
在CPU204运行语音识别应用的过程中,语音识别应用会后台常驻。参考音采集硬件(例如是第三缓冲区206的第一控制器)和环境音采集硬件(例如MIC控制器211)会持续工作并采集数据。其具体工作原来请参见图2和图3所示的相关实施例的说明,在此不再赘述。
需要特别说明的是,在音频输出通路上即使并无输出音频,参考音采集硬件(例如是第三缓冲区206的第一控制器)也会持续工作并采集参考音数据,不过特殊的是,此时采集的参考音数据是不含有实际有效信息的,在以二进制的位模式进行数据存储的存储方式中表现为每一位上均为“0”。例如,假设参考音数据中的每个采样单元是用2个字节16个Bit(比特)表示的,那么在音频输出通路上即使并无输出音频时,参考音采集硬件采集的参考音中每个采样单元对应的2个字节内的16个位上均是“0”,即每个采样单元均为“00000000000000”。同理,在音频输入通路上即使没有输入音频,环境音采集硬件(例如MIC控制器211)同样也会持续工作并采集环境音数据,相应的,此时采集的环境音数据是不含有实际有效信息的,在以二进制的位模式进行数据存储的存储方式中也表现为每一位上均为“0”。本领域技术人员基于前述示例能清楚地、完整地理解,此处不再单独示例进行说明。
参考音采集硬件(例如是第三缓冲区206的第一控制器)和环境音采集硬件(例如MIC控制器211)在采样(也即采集到音频)后一一分别存储至第三缓冲区206和第四缓冲区205中。基于电子信息工程原理,参考音采集硬件(例如是第三缓冲区206的第一控制器)或环境音采集硬件(例如MIC控制器211)的采样频率通常是固定的,也就是说在单位时长(例如是1ms)内采集的数据量是相等的。也就是说,在单位时长内,参考音采集硬件(例如是第三缓冲区206的第一控制器)向第三缓冲区206写入的数据量和环境音采集硬件(例如MIC控制器211)向第四缓冲区205写入的数据量是相等的。
同时,基于计算机组成原理可知,缓冲区是高速缓冲器件,其具有硬件中断的固有属性,且中断周期是可以通过缓冲区的控制器配置的,且硬件中断在整个计算机系统体系结构中具有最高优先级。计算机内的总线是比较繁忙的用于在各个硬件间进行信息传输的“高速公路”,该“高速公路”的“通行权”受到CPU的支配。当外部I/O设备(输入输出设备)需要向缓冲区中写入数据时,I/O设备向缓冲区的控制器发送数据写入请求(针对DMA缓冲区,该请求即DMA请求),缓冲区的控制器再向CPU发送总线请求,从而取得“高速公路”的“通行权”,即当CPU响应该总线请求并将总线交给缓冲区的控制器和I/O设备进行数据传输,I/O设备开始通过总线向缓冲区中写入数据。但在一些计算机体系结构中,缓冲区的控制器每次取得的“通行权”是有时限的,在每次到达时限时会自动丧失“通行权”,并停止向缓冲区中写入数据,即产生了硬件中断(针对DMA缓冲区,该中断即DMA中断),并通知CPU该硬件中断。因此,针对一个特定的缓冲区,该特定的缓冲区的每个中断周期内通过该特定的缓冲区的控制器写入该特定的缓冲区的缓冲器中的数据量是相等的。例如,第三缓冲区206的第一控制器的中断周期是3ms,即第一控制器每3ms中断一次,且每两次中断之间的3ms时间段内的存入第三缓冲区206数据量均是相等的。
在本申请实施例,第三缓冲区206的第一控制器和第四缓冲区205的第二控制器均配置有中断周期。其工作方式与前述的缓冲区工作原理相同。
在一些可选的实施方式中,第一控制器的产生中断的第一周期T2和第二控制器产生中断的第二周期T3不同。
基于前述说明已知,在第三缓冲区206的第一控制器产生硬件中断时,第一处理器207会将第三缓冲区206的数据搬运至第一缓冲区208中,在第四缓冲区205的第二控制器产生硬件中断时,第一处理器207会将第四缓冲区205的数据搬运至第二缓冲区209中。为了尽可能降低第一处理器207的负载,降低处理线程被阻塞的可能性,将第一周期T2和第二周期T3配置为不同的值,可以降低第一处理器207同时搬运第三缓冲区206和第四缓冲区205的概率,从而降低第一处理器207负载。
在一些可选的实施方式中,第一周期T2和第二周期T3不仅不同,且第一周期T2和第二周期T3均为大于2的素数个基本单位时长。
假设基本单位时长设定为T,则T2=cT,T2=dT,其中c和d是大于2的素数,且c≠d。例如T=1ms,c=3,d=5,即第三缓冲区206的第一控制器的产生中断的第一周期T2=3ms,第四缓冲区205的第二控制器产生中断的第二周期T3=5ms。
将第一周期T2和第二周期T3配置为均为大于2的素数个基本单位时长,且两者配置为不同的值,能进一步降低第一处理器207同时搬运第三缓冲区206和第四缓冲区205的概率。
在CPU204运行语音识别应用的过程中,语音识别应用会后台常驻。CPU204和第一处理器207根据第三缓冲区206的第一控制器的中断情况和第四缓冲区205的第二控制器的中断情况对采集的参考音进行统计编码和搬运。说明如下。
如图10所示,图10是本申请实施例所提供的电子设备200中执行本申请实施例提供的数据获取方法在数据产生阶段的时序图。在本申请实施例中,请结合参见图2、图3和图10,CPU204和第一处理器207分别运行程序或指令,协同实现以下步骤:
S1001:CPU204监测第三缓冲区206的第一控制器和第四缓冲区205的第二控制器的中断情况。
前文已经说明,在此不再赘述。
S1002:CPU204在每次监测到第一控制器产生中断的情况下,根据第一控制器通知的数据量更新采集的参考音数据量,并向第一处理器207发送第一数据搬运指令,第一数据搬运指令携带有第一数据标识和被所述第一数据标识所标识的数据的第一数据量。
第一控制器在每次产生中断时会通知CPU204,并将此次中断时第三缓冲区206中存储的数据的结束地址(tail-206)以及此次中断前的上一个周期内写入的参考音的数据量(R-input)通知给CPU204。CPU204根据第一控制器通知的数据量更新已经采集到的参考音数据量count-R-input。CPU204将此次中断时第三缓冲区206中存储的数据的结束地址(tail-206)(即第一数据标识)和此次中断前的上一个周期内写入的参考音的数据量(R-input)封装进第一数据搬运指令并发送给第一处理器207。
示例性的,以第三缓冲区206采用的就是图5所示的缓冲区的结构为例进行说明(其他形式的缓冲区与之类似)。如图11和图12所示,图11和图12是本申请实施例提供的语音数据获取方法中第三缓冲区两次相邻中断时的状态示意图,图11是前一次中断时第三缓冲区的状态示意图,图12是后一次中断时第三缓冲区的状态示意图(注意:此处是以第一处理器207在从第三缓冲区206向第一缓冲区208搬运数据的过程中未出现阻塞为例进行示意的)。请结合参见图11和图12,假设,在第一个中断周期0-3ms的时间段内,第一控制器向第三缓冲区中写入的数据存储在图11所示的第一存储空间buff1至第N存储空间buffN内;在第二个中断周期3ms-6ms的时间段内,第一控制器向第三缓冲区中写入的数据存储在图12所示的第N+1存储空间buffN+1至第N+X存储空间buffN+X处内,X是大于0的正整数。
请参见图11,第一控制器在第一次产生中断时会通知CPU204,并将此次中断时第三缓冲区206中存储的数据的结束地址(tail-206)——第N存储空间buffN以及此次中断前的上一个周期内写入的参考音的数据量R-input是3ms时长写入的数据量(基于前述在每个中断周期内写入的数据量是相等的,因此在本申请实施例中,直接以时长来衡量数据量,后文中不再特别说明)——第一存储空间buff1至第N存储空间buffN内存储的数据的数据量通知给CPU204。
CPU204根据第一控制器通知的数据量R-input-1更新采集的参考音数据量count-R-input,并存储至指定存储空间中,例如是存储至图2中所示的主存210。并且,CPU204向第一处理器207发送第一数据搬运指令,第一数据搬运指令携带有第一数据标识(即第三缓冲区206中存储的数据的结束地址(tail-206)——第N存储空间buffN)和被所述第一数据标识所标识的数据的第一数据量(即R-input=3ms)。
请参见图12,第二控制器在第二次产生中断时会通知CPU204,并将此次中断时第三缓冲区206中存储的数据的结束地址(tail-206)——第N+X存储空间buffN+X以及此次中断前的上一个周期内写入的参考音的数据量R-input是3ms时长写入的数据量——第一存储空间buffN至第N+X存储空间buffN+X内存储的数据的数据量通知给CPU204。
CPU204根据第一控制器通知的数据量R-input-2更新采集的参考音数据量count-R-input=3ms+3ms=6ms,并存储至指定存储空间中,例如是存储至图2中所示的主存210。并且,CPU204向第一处理器207发送第一数据搬运指令,第一数据搬运指令携带有第一数据标识(即第三缓冲区206中存储的数据的结束地址(tail-206)——第N+X存储空间buffN+X)和被所述第一数据标识所标识的数据的第一数据量(即R-input=3ms)。
S1003:第一处理器207在接收到中央处理器204发送的第一数据搬运指令的情况下,根据所述第一数据搬运指令中携带的第一数据标识,读取所述第三缓冲区206中存储的被所述第一数据标识所标识的参考音并存储至第一缓冲区208,并根据所述第一数据搬运指令中携带的被所述第一数据标识所标识的数据的第一数据量更新指定存储空间中存储的已搬运参考音数据量。
第一处理器207在接收到第一数据搬运指令后,根据自身所维护的起始地址(head-206)和第一数据搬运指令中的结束地址(tail-206),从第三缓冲区206读取起始地址(head-206)至结束地址(tail-206)之间的数据并存储至第一缓冲区208中,并根据第一数据搬运指令中的携带的被第一数据标识所标识的数据的第一数据量更新指定存储空间(例如是图2所示的主存210)中存储的已搬运参考音数据量count-R。其中,第一处理器207自身所维护的起始地址(head-206)是根据每次搬运的数据的结束地址(tail-206)进行更新,例如,此次搬运的数据是第三缓冲区206中第一存储空间buff1至第N存储空间buffN内存储的数据,在此次搬运结束后,将本地的起始地址(head-206)buff0更新为buffN+1。
接上述示例,在第一控制器第一次中断时,第一处理器207将第三缓冲区206中第一存储空间buff1至第N存储空间buffN内存储的数据搬运至第一缓冲区208中,并将已搬运参考音数据量count-R更新为count-R=3ms。
在第一控制器第二次中断时,第一处理器207将第三缓冲区206中第N+1存储空间buffN+1至第N+X存储空间buffN内存储的数据搬运至第一缓冲区208中,并将已搬运参考音数据量count-R更新为count-R=3ms+3ms=6ms。
S1004:CPU204在每次监测到第二控制器产生中断的情况下,根据第二控制器通知的数据量更新采集的环境音数据量,并向第一处理器207发送第二数据搬运指令,第二数据搬运指令携带有第二数据标识和被所述第二数据标识所标识的数据的第二数据量。
第二控制器在每次产生中断时会通知CPU204,并将此次中断时第四缓冲区205中存储的数据的结束地址(tail-205)以及此次中断前的上一个周期内写入的环境音的数据量(M-input)通知给CPU204。CPU204根据第二控制器通知的数据量更新已经采集到的环境音数据量count-M-input。CPU204将此次中断时第四缓冲区205中存储的数据的结束地址(tail-205)(即第二数据标识)和此次中断前的上一个周期内写入的环境音的数据量(M-input)封装进第二数据搬运指令并发送给第一处理器207。
第四缓冲区205与第三缓冲区206的结构相同,两者唯一不同是配置的中断周期不同,在此不再附图进行示例说明,下面仅以文字进行说明。示例性的,以第四缓冲区205采用的就是图5所示的缓冲区的结构为例进行说明(其他形式的缓冲区与之类似)。(注意:此处是以第一处理器207在从第四缓冲区205向第二缓冲区209搬运数据的过程中未出现阻塞为例进行示意的)。假设,在第一个中断周期0-5ms的时间段内,第二控制器向第四缓冲区205中写入的数据存储在第四缓冲区205的第一存储空间buff1至第O存储空间buffN内;在第二个中断周期5ms-10ms的时间段内,第二控制器向第四缓冲区205中写入的数据存储在第四缓冲区205的第O+1存储空间buffO+1至第O+Y存储空间buffO+Y处内,O和Y是大于0的正整数。
第二控制器在第一次产生中断时会通知CPU204,并将此次中断时第四缓冲区205中存储的数据的结束地址(tail-205)——第O存储空间buffO以及此次中断前的上一个周期内写入的环境音的数据量M-input是5ms时长写入的数据量——第一存储空间buff1至第O存储空间buffO内存储的数据的数据量通知给CPU204。
CPU204根据第二控制器通知的数据量M-input-1更新采集的环境音数据量count-M-input,并存储至指定存储空间中,例如是存储至图2中所示的主存210。并且,CPU204向第一处理器207发送第二数据搬运指令,第二数据搬运指令携带有第二数据标识(即第四缓冲区205中存储的数据的结束地址(tail-205)——第O存储空间buffO和被所述第一数据标识所标识的数据的第一数据量(即R-input=3ms)。
第二控制器在第二次产生中断时会通知CPU204,并将此次中断时第四缓冲区205中存储的数据的结束地址(tail-205)——第O+Y存储空间buffO+Y以及此次中断前的上一个周期内写入的环境音的数据量R-input是5ms时长写入的数据量——第一存储空间buffO至第O+Y存储空间buffO+Y内存储的数据的数据量通知给CPU204。
CPU204根据第二控制器通知的数据量M-input-1更新采集的环境音数据量count-M-input=5ms+5ms=10ms,并存储至指定存储空间中,例如是存储至图2中所示的主存210。并且,CPU204向第一处理器207发送第二数据搬运指令,第二数据搬运指令携带有第二数据标识(即第四缓冲区205中存储的数据的结束地址(tail-205)——第O+Y存储空间buffO+Y)和被所述第一数据标识所标识的数据的第一数据量(即R-input=5ms)。
S1005:在接收到中央处理器204发送的第二数据搬运指令的情况下,根据所述第二数据搬运指令中携带的第二数据标识,读取所述第四缓冲区205中存储的被所述第二数据标识所标识的环境音并存储至第二缓冲区209,并根据所述第二数据搬运指令中携带的被所述第二数据标识所标识的数据的第二数据量更新所述指定存储空间中存储的已搬运环境音数据量。
第一处理器207在接收到第二数据搬运指令后,根据自身所维护的起始地址(head-205)和第二数据搬运指令中的结束地址(tail-205),从第四缓冲区205读取起始地址(head-205)至结束地址(tail-205)之间的数据并存储至第一缓冲区208中,并根据第二数据搬运指令中的携带的被第二数据标识所标识的数据的第二数据量更新指定存储空间(例如是图2所示的主存210)中存储的已搬运环境音数据量count-M。其中,第一处理器207自身所维护的起始地址(head-205)是根据每次搬运的数据的结束地址(tail-205)进行更新,例如,此次搬运的数据是第四缓冲区205中第一存储空间buff1至第O存储空间buffO内存储的数据,在此次搬运结束后,将本地的起始地址(head-205)buff0更新为buffO+1。
接上述示例,在第一控制器第一次中断时,第一处理器207将第四缓冲区205中第一存储空间buff1至第O存储空间buffO内存储的数据搬运至第二缓冲区209中,并将已搬运环境音数据量count-M更新为count-M=5ms。
在第一控制器第二次中断时,第一处理器207将第四缓冲区205中第O+1存储空间buffO+1至第O+Y存储空间buffO内存储的数据搬运至第二缓冲区209中,并将已搬运环境音数据量count-M更新为count-M=5ms+5ms=10ms。
需要特别说明的是,在第一控制器每次中断时,第一处理器207进行数据搬运时,会将第三缓冲区206的数据全部搬运至第一缓冲区208中;在第二控制器每次中断时,第二处理器207进行数据搬运时,会将第四缓冲区205的数据全部搬运至第二缓冲区209中。
数据拼接阶段
基于前述可知,在第一控制器和第二控制器产生中断后,第一缓冲区208和第二缓冲区209中将分别一一存储有待拼接参考音和待拼接环境音。因此,在电子设备200的语音识别功能后台常驻的过程中,第一处理器207还执行程序和指令,以实现以下步骤S1101-S1104:
S1101:检查第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205的存储状态。
在一些可选的实施方式中,步骤S1101包括以下子步骤S11011-S11012:
S11011:周期性地检查第一缓冲区208中和第二缓冲区209中的数据量。
可选地,第一处理器207周期性从指定存储空间(例如是图2中所示的主存210)中读取已拼接环境音数据量splice-M(请参见步骤S1102的说明)、已拼接参考音数据量splice-R(请参见步骤S1102的说明)、已搬运环境音数据量count-M和已搬运参考音数据量count-R,检查第一缓冲区208中和第二缓冲区209中的数据量,并执行运算已搬运参考音数据量count-R减去已拼接参考音数据量splice-R,得到第一缓冲区208中的数据量,以及执行运算已搬运环境音数据量count-M减去已拼接环境音数据量splice-M,得到第二缓冲区209中的数据量。
S4022:在检查到所述第一缓冲区208中和所述第二缓冲区209中的数据量相等的情况下,检查所述第一缓冲区208、所述第二缓冲区209、所述第三缓冲区206和所述第四缓冲区205的容量状态。
可选地,第一处理器207在得到第一缓冲区208中的数据量与第二缓冲区209中的数据量相等的情况下,继续从指定存储空间(例如是图2中所示的主存210)中读取环境音采集数据量count-M-input和参考音采集数据量count-R-input,并执行运算环境音采集数据量count-M-input减去已搬运环境音数据量count-M,得到第四缓冲区205中的数据量,以及执行运算参考音采集数据量count-R-input减去已搬运参考音数据量count-R,得到第三缓冲区206中的数据量。
第一处理器207将第一缓冲区208中的数据量与第一缓冲区208的容量阈值进行比较、将第二缓冲区209中的数据量与第二缓冲区209的容量阈值进行比较、将第三缓冲区206中的数据量与第三缓冲区206的容量阈值进行比较以及将第四缓冲区205中的数据量与第四缓冲区205的容量阈值进行比较,根据比较结果确定所述第一缓冲区208、所述第二缓冲区209、所述第三缓冲区206和所述第四缓冲区205的容量状态。
当且仅当第一缓冲区208至第四缓冲区205中四个缓冲区中的数据量均小于其自身的容量阈值,则确定第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205的容量均未溢出。只要第一缓冲区208至第四缓冲区205中存在至少一个缓冲区中的数据量大于或等于其自身的容量阈值,则确定数据量大于或等于其自身的容量阈值的缓冲区的容量溢出。
第一处理器207既然也是处理器,其运行方式也同前述的CPU104或CPU204,在运行线程时同样受到为第一处理器207配置的线程调度模型的调度。在第一处理器207上运行的将第三缓冲区206中的数据搬运至第一缓冲区208中的处理线程是第三处理线程,以及在第一处理器207上运行的将第四缓冲区205中的数据搬运至第二缓冲区209中的处理线程是第四处理线程,第三处理线程和第四处理线程对第一处理器207的使用权受到为第一处理器207配置的线程调度模型的调度,即第三处理线程和第四处理线程也存在被阻塞的可能性。
在本实施方式中,预先配置第一处理器207检查第一缓冲区208中和第二缓冲区209中的数据量的周期T4,第一处理器207在每个T4周期点检查第一缓冲区208中和第二缓冲区209中的数据量,在检查到第一缓冲区208中和第二缓冲区209中的数据量相等的情况下,再检查第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205的数据量,从而确定第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205中的至少之一的容量是否溢出。
相较于第一处理器207实时性地检查第一缓冲区208、第二缓冲区209、第三缓冲区206和第四缓冲区205的存储状态的实施方式,本实施方式能更加有效地降低第一处理器207的负载,从而降低第三处理线程和第四处理线程被调度而阻塞概率,进而降低第一处理器207在将第三缓冲区206中的数据搬运至第一缓冲区208中以及第四缓冲区205中的数据搬运至第二缓冲区209中的两个过程中出现阻塞的概率。
S1102:在检查到所述第一缓冲区208、所述第二缓冲区209、所述第三缓冲区206和所述第四缓冲区205中至少之一的容量为已溢出的情况下,清空所述第一缓冲区208和所述第二缓冲区209,并通知中央处理器204清空所述第三缓冲区206和所述第四缓冲区205。
S1103:在检查到所述第一缓冲区208与所述第二缓冲区209中的数据量相等且所述第一缓冲区208、所述第二缓冲区209、所述第三缓冲区206和所述第四缓冲区205的容量均未溢出的情况下,读取所述第一缓冲区208中的待拼接参考音和所述第二缓冲区209中的待拼接环境音。
可选地,第一处理器207在读取所述第一缓冲区208中的待拼接参考音和所述第二缓冲区209中的待拼接环境音时,根据读取到的所述待拼接参考音和所述待拼接环境音各自对应的数据量,更新所述指定存储空间中存储的已拼接参考音数据量和已拼接环境音数据量。
需要特别说明的是,在每次拼接时,第一处理器207会将第一缓冲区208的数据和第二缓冲区209的数据全部读取出来进行拼接。在前述说明中,在每次拼接前的检查时第一处理207确定了第一缓冲区208的数据和第二缓冲区209当前待拼接的数据量,因此将此次检查时确定的待拼接的数据量直接作为读取到的所述待拼接参考音和所述待拼接环境音各自对应的数据量,并将其更新至指定存储空间(例如是图2中所示的主存210)中存储的已拼接参考音数据量和已拼接环境音数据量中。
示例性地,第一次拼接时,当前第一缓冲区208的数据和第二缓冲区209分别均有30ms数据量,则将主存210中存储的已拼接参考音数据量splice-R更新为splice-R=30ms和已拼接环境音数据量splice-M更新为splice-M=30ms。
S1103:根据预先测定的时延将读取到的所述待拼接参考音MUSIC_ref与所述待拼接环境音MUSIC+SOURCE对齐,并在对齐后将所述待拼接参考音MUSIC_ref与所述待拼接环境音MUSIC+SOURCE拼接,得到目标语音数据MUSIC_ref+MUSIC+SOURCE。
如图13所示,图13是本申请实施例提供的语音数据获取方法中语音数据的流转示意图。如图14所示,图14是本申请实施例提供的语音数据获取方法中语音数据的参考音与环境音的对齐拼接示意图。
请结合参见图13和图14,在一些可选的实施方式中,所述预先测定的时延包括:预先测定的通路时延Δt1;步骤S1103,包括:
根据所述通路时延Δt1将读取到的所述待拼接参考音MUSIC_ref与所述待拼接环境音MUSIC+SOURCE对齐。
请参见图13,采集的参考音在第三缓冲区206每次产生硬件中断(例如中断周期是3ms)时从第三缓冲区206搬运至第一缓冲区208中,采集的环境音在第四缓冲区205每次产生硬件中断(例如中断周期是5ms)时从第四缓冲区205搬运至第二缓冲区209中。第一处理器207在检查到第一缓冲区208和第二缓冲区209中数据量相等且未被覆写时,将第一处理器207在检查到第一缓冲区208中的待拼接参考音MUSIC_ref和第二缓冲区209中待拼接环境音MUSIC+SOURCE读取出来对齐并进行拼接。
请参见图14,示例性地,读取到的待拼接参考音MUSIC_ref包含数据帧0×10至数据帧0×16、待拼接环境音MUSIC+SOURCE包含数据帧0×99至数据帧0×93。参考音采集硬件和环境音采集硬件是在t1时刻同步开启的,在t2时刻MIC203采集到输出音频MUSIC的回声MUSIC。因此,需要根据通路时延Δt1将待拼接参考音MUSIC_ref的第一帧数据帧0×10与待拼接环境音MUSIC+SOURCE的第三帧数据帧0×97对齐。
在一些可选的实施方式中,所述预先测定的时延还包括:预先测定的开启时延Δt3;步骤S1103,包括:
根据所述通路时延Δt1和所述开启时延Δt3,将读取到的所述待拼接参考音与所述待拼接环境音对齐。
此处考虑开启时延Δt3的原因在前文中已经说明,在此不再赘述。其在将待拼接参考音MUSIC_ref和待拼接环境音MUSIC+SOURCE对齐时,需要综合通路时延Δt1和开启时延Δt3,例如参考音采集硬件的开启时间晚于环境音采集硬件时,根据通路时延Δt1和开启时延Δt3之和将读取到的待拼接参考音与待拼接环境音对齐。
在一些可选的实施方式中,步骤S1103,包括以下子步骤a和子步骤b:
步骤a:将所述待拼接参考音中与所述待拼接环境音中相互对齐的参考音数据帧和环境音数据帧拼接为一帧,得到多帧拼接语音数据帧。
请参见图14,示例性地,参考音数据帧0×10与环境音数据帧0×97对齐,将两者拼接位一帧,得到拼接语音数据帧0×97+0×10;参考音数据帧0×11与环境音数据帧0×96对齐,将两者拼接位一帧,得到拼接语音数据帧0×96+0×11。同理,将其他相互对齐的参考音数据帧和环境音数据帧拼接为一帧,得到多帧拼接语音数据帧。
步骤b:并将所述多帧拼接语音数据帧按照所述参考音数据帧或所述环境音数据帧的帧序进行拼接,得到目标语音数据。
请参见图14,将拼接语音数据帧0×97+0×10与拼接语音数据帧0×96+0×11拼接在一起,将拼接语音数据帧0×96+0×11再与下一帧拼接语音数据帧拼接在一起,得到目标语音数据MUSIC_ref+MUSIC+SOURCE。
有关S1101-S1104的其它说明请参见前文的说明,在此不再赘述。
第一处理器207将目标语音数据MUSIC_ref+MUSIC+SOURCE发送给CPU204。
具体请参见前文说明,在此不再赘述。
本申请实施例提供的语音数据获取方法,执行主体可以为语音数据获取装置。本申请实施例中以语音数据获取装置执行语音数据获取的方法为例,说明本申请实施例提供的语音数据获取装置。
如图15所示,示出了本申请实施例提供的一种语音数据的获取装置的结构示意图。请参见图15,所述语音数据的获取装置120,包括:
第一检查模块121,用于检查第一缓冲区、第二缓冲区、第三缓冲区和第四缓冲区的存储状态;其中,所述第一缓冲区中的数据是从所述第三缓冲区中获取的,所述第二缓冲区中的数据是从所述第四缓冲区中获取的,所述第三缓冲区用于存储从音频输出通路上采集的参考音,所述第四缓冲区用于存储从音频输入通路上采集的环境音;
第一读取模块122,用于在检查到所述第一缓冲区与所述第二缓冲区中的数据量相等且所述第一缓冲区、所述第二缓冲区、所述第三缓冲区和所述第四缓冲区的容量均未溢出的情况下,读取所述第一缓冲区中的待拼接参考音和所述第二缓冲区中的待拼接环境音;
对齐拼接模块123,用于根据预先测定的时延将读取到的所述待拼接参考音与所述待拼接环境音对齐,并在对齐后将所述待拼接参考音与所述待拼接环境音拼接,得到目标语音数据。
在一些可选的实施方式中,所述预先测定的时延包括:预先测定的通路时延;所述通路时延是用于描述针对一音频数据从所述音频输出通路输出变成目标声音且所述目标声音被所述音频输入通路采集到的过程中从所述音频输出通路上采集到所述音频数据的采集时间与从所述音频输入通路上采集到所述音频数据的采集时间之间的时差;所述对齐拼接模块123,包括:
第一对齐子模块,用于根据所述通路时延将读取到的所述待拼接参考音与所述待拼接环境音对齐。
在一些可选的实施方式中,所述预先测定的时延还包括:预先测定的开启时延;所述开启时延是用于描述开启参考音采集硬件的开启时间与开启环境音采集硬件的开启时间之间的时差;所述对齐拼接模块123,包括:
第二对齐子模块,用于根据所述通路时延和所述开启时延,将读取到的所述待拼接参考音与所述待拼接环境音对齐。
在一些可选的实施方式中,所述语音数据获取装置120,还包括:
第一获取模块,用于获取特征音频数据;
第一采集模块,用于通过所述音频输出通路输出所述特征音频数据,并通知中央处理器同步开启参考音采集硬件和环境音采集硬件,以采集所述音频输出通路上的音频数据和所述音频输入通路从环境中采集到声音后输入的音频数据;
第一确定模块,用于根据所述参考音采集硬件采集到的音频数据和所述环境音采集硬件采集到的音频数据,确定通路时延。
在一些可选的实施方式中,所述特征音频数据包括前序特征音频数据和后序特征音频数据;所述第一确定模块,包括:
第一确定子模块,用于在先输出所述前序特征音频数据的过程中,根据所述参考音采集硬件采集到的音频数据和所述环境音采集硬件采集到的音频数据,确定所述音频输出通路上的前序特征音频数据和所述音频输入通路上的前序特征音频数据之间的比例关系;
第一识别子模块,用于在后输出所述后序特征音频数据的过程中,根据所述比例在关系,从所述参考音采集硬件采集到的音频数据中和所述环境音采集硬件采集到的音频数据中分别一一识别出各自采集到的后序特征音频数据,并记录所述参考音采集硬件采集到后序特征音频数据的第一起止时间点和所述环境音采集硬件采集到后序特征音频数据的第二起止时间点;
第二确定子模块,用于根据所述第一起止时间点和所述第二起止时间点之间的时差,确定通路时延。
在一些可选的实施方式中,所述语音数据获取装置120,还包括:
第一执行模块,用于多次重复执行所述获取特征音频数据步骤至所述根据所述参考音采集硬件采集到的音频数据和所述环境音采集硬件采集到的音频数据,确定通路时延的步骤,得到多个通路时延;
第二确定模块,用于从所述多个通路时延中确定出相对稳定的值。
在一些可选的实施方式中,所述语音数据获取装置,还包括:
第一清空模块,用于在检查到所述第一缓冲区、所述第二缓冲区、所述第三缓冲区和所述第四缓冲区中至少之一的容量为已溢出的情况下,清空所述第一缓冲区和所述第二缓冲区,并通知中央处理器清空所述第三缓冲区和所述第四缓冲区。
在一些可选的实施方式中,所述第一检查模块,包括:
第一检查子模块,用于周期性地检查第一缓冲区中和第二缓冲区中的数据量;
第二检查子模块,用于在检查到所述第一缓冲区中和所述第二缓冲区中的数据量相等的情况下,检查所述第一缓冲区、所述第二缓冲区、所述第三缓冲区和所述第四缓冲区的容量状态。
在一些可选的实施方式中,所述语音数据获取装置120,还包括:
第一搬运模块,用于在接收到中央处理器发送的第一数据搬运指令的情况下,根据所述第一数据搬运指令中携带的第一数据标识,读取所述第三缓冲区中存储的被所述第一数据标识所标识的参考音并存储至第一缓冲区,并根据所述第一数据搬运指令中携带的被所述第一数据标识所标识的数据的第一数据量更新指定存储空间中存储的已搬运参考音数据量;其中,所述第一数据搬运指令是所述中央处理器在检测到第一控制器所述第三缓冲区的第一控制器产生中断的情况下发送的;
第二搬运模块,用于在接收到中央处理器发送的第二数据搬运指令的情况下,根据所述第二数据搬运指令中携带的第二数据标识,读取所述第四缓冲区中存储的被所述第二数据标识所标识的环境音并存储至第二缓冲区,并根据所述第二数据搬运指令中携带的被所述第二数据标识所标识的数据的第二数据量更新所述指定存储空间中存储的已搬运环境音数据量;其中,所述第二数据搬运指令是所述中央处理器在检测到第二控制器所述第四缓冲区的第二控制器产生中断的情况下发送的。
在一些可选的实施方式中,所述语音数据获取装置,还包括:
第一更新模块,用于根据读取到的所述待拼接参考音和所述待拼接环境音各自对应的数据量,更新所述指定存储空间中存储的已拼接参考音数据量和已拼接环境音数据量;
所述第一检查模块,包括:
第一读取子模块,用于读取所述指定存储空间中存储的采集参考音数据量、采集环境音数据量、已搬运参考音数据量、已搬运环境音数据量、已拼接参考音数据量和已拼接环境音数据量;其中,所述采集参考音数据量是所述中央处理器在检测到所述第一控制器每次产生中断的情况下根据所述第一控制器统计的数据量进行更新得到的,所述采集环境音数据量是所述中央处理器在检测到所述第二控制器每次产生中断的情况下根据所述第二控制器统计的数据量进行更新得到的;
第三检查子模块,用于根据读取到的所述已搬运参考音数据量、所述已拼接参考音数据量、所述已搬运环境音数据量、所述已拼接环境音数据量、所述采集参考音数据量和所述采集环境音数据量,检查所述检查第一缓冲区、第二缓冲区、第三缓冲区和第四缓冲区的存储状态。
在一些可选的实施方式中,所述第一控制器的产生中断的第一周期和所述第二控制器产生中断的第二周期不同。
在一些可选的实施方式中,所述第一周期和所述第二周期均为大于2的素数个基本单位时长。
在一些可选的实施方式中,所述对齐拼接模块123,包括:
第三对齐子模块,用于将所述待拼接参考音中与所述待拼接环境音中相互对齐的参考音数据帧和环境音数据帧拼接为一帧,得到多帧拼接语音数据帧;
第一拼接子模块,用于将所述多帧拼接语音数据帧按照所述参考音数据帧或所述环境音数据帧的帧序进行拼接,得到目标语音数据。
在一些可选的实施方式中,所述语音数据获取装置,还包括:
第一发送模块,用于向中央处理器发送所述目标语音数据。
本申请实施例中的语音数据获取装置120可以是电子设备,也可以是电子设备中的部件,例如集成电路或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。示例性的,电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(Mobile Internet Device,MID)、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、机器人、可穿戴设备、超级移动个人计算机(ultra-mobilepersonal computer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等,还可以为服务器、网络附属存储器(Network Attached Storage,NAS)、个人计算机(personal computer,PC)、电视机(television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。
本申请实施例中的语音数据获取装置120可以为具有操作系统的装置。该操作系统可以为安卓(Android)操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。
本申请实施例提供的语音数据获取装置120能够实现图2至图14的方法实施例实现的各个过程,为避免重复,这里不再赘述。
在一些可选的实施方式中,如图16所示,本申请实施例还提供一种电子设备130,包括第一处理器131、CPU132和存储器133,存储器133上存储有可在所述第一处理器131和CPU132中至少之一上运行的程序或指令,存储器133中存储的程序或指令中存在被程序或指令被所述第一处理器执行时实现上述语音数据获取方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的电子设备包括上述所述的移动电子设备和非移动电子设备。
上述任一产品实施例均能通过其自身的处理器运行实现上述语音数据获取方法实施例的各个过程,均能达到相同的技术效果,为避免重复,不再一一赘述。
本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述语音数据获取方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述处理器为上述实施例中所述的电子设备或电子系统中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述语音数据获取方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述语音数据获取方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
在本申请实施例所提供的实施方式中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请实施例各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请实施例各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请实施例的实施方式,并非因此限制本申请实施例的专利范围,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,凡是利用本申请实施例说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均同理包括在本申请实施例的专利保护范围内。

Claims (17)

1.一种语音数据获取方法,其特征在于,所述方法包括:
检查第一缓冲区、第二缓冲区、第三缓冲区和第四缓冲区的存储状态;其中,所述第一缓冲区中的数据是从所述第三缓冲区中获取的,所述第二缓冲区中的数据是从所述第四缓冲区中获取的,所述第三缓冲区用于存储从音频输出通路上采集的参考音,所述第四缓冲区用于存储从音频输入通路上采集的环境音;
在检查到所述第一缓冲区与所述第二缓冲区中的数据量相等且所述第一缓冲区、所述第二缓冲区、所述第三缓冲区和所述第四缓冲区的容量均未溢出的情况下,读取所述第一缓冲区中的待拼接参考音和所述第二缓冲区中的待拼接环境音;
根据预先测定的时延将读取到的所述待拼接参考音与所述待拼接环境音对齐,并在对齐后将所述待拼接参考音与所述待拼接环境音拼接,得到目标语音数据。
2.根据权利要求1所述的方法,其特征在于,所述预先测定的时延包括:预先测定的通路时延;所述通路时延是用于描述针对一音频数据从所述音频输出通路输出变成目标声音且所述目标声音被所述音频输入通路采集到的过程中从所述音频输出通路上采集到所述音频数据的采集时间与从所述音频输入通路上采集到所述音频数据的采集时间之间的时差;所述根据预先测定的时延将读取到的所述待拼接参考音与所述待拼接环境音对齐,包括:
根据所述通路时延将读取到的所述待拼接参考音与所述待拼接环境音对齐。
3.根据权利要求2所述的方法,其特征在于,所述预先测定的时延还包括:预先测定的开启时延;所述开启时延是用于描述开启参考音采集硬件的开启时间与开启环境音采集硬件的开启时间之间的时差;所述根据预先测定的时延将读取到的所述待拼接参考音与所述待拼接环境音对齐,包括:
根据所述通路时延和所述开启时延,将读取到的所述待拼接参考音与所述待拼接环境音对齐。
4.根据权利要求2或3所述的方法,其特征在于,所述通路时延是在所述检查第一缓冲区、第二缓冲区、第三缓冲区和第四缓冲区的存储状态之前,通过以下步骤测定的:
获取特征音频数据;
通过所述音频输出通路输出所述特征音频数据,并通知中央处理器同步开启参考音采集硬件和环境音采集硬件,以采集所述音频输出通路上的音频数据和所述音频输入通路从环境中采集到声音后输入的音频数据;
根据所述参考音采集硬件采集到的音频数据和所述环境音采集硬件采集到的音频数据,确定通路时延。
5.根据权利要求4所述的方法,其特征在于,所述特征音频数据包括前序特征音频数据和后序特征音频数据;所述根据所述参考音采集硬件采集到的音频数据和所述环境音采集硬件采集到的音频数据,确定通路时延,包括:
在先输出所述前序特征音频数据的过程中,根据所述参考音采集硬件采集到的音频数据和所述环境音采集硬件采集到的音频数据,确定所述音频输出通路上的前序特征音频数据和所述音频输入通路上的前序特征音频数据之间的比例关系;
在后输出所述后序特征音频数据的过程中,根据所述比例在关系,从所述参考音采集硬件采集到的音频数据中和所述环境音采集硬件采集到的音频数据中分别一一识别出各自采集到的后序特征音频数据,并记录所述参考音采集硬件采集到后序特征音频数据的第一起止时间点和所述环境音采集硬件采集到后序特征音频数据的第二起止时间点;
根据所述第一起止时间点和所述第二起止时间点之间的时差,确定通路时延。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
多次重复执行所述获取特征音频数据步骤至所述根据所述参考音采集硬件采集到的音频数据和所述环境音采集硬件采集到的音频数据,确定通路时延的步骤,得到多个通路时延;
从所述多个通路时延中确定出相对稳定的值。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在检查到所述第一缓冲区、所述第二缓冲区、所述第三缓冲区和所述第四缓冲区中至少之一的容量为已溢出的情况下,清空所述第一缓冲区和所述第二缓冲区,并通知中央处理器清空所述第三缓冲区和所述第四缓冲区。
8.根据权利要求1或7所述的方法,其特征在于,所述检查第一缓冲区、第二缓冲区、第三缓冲区和第四缓冲区的存储状态,包括:
周期性地检查第一缓冲区中和第二缓冲区中的数据量;
在检查到所述第一缓冲区中和所述第二缓冲区中的数据量相等的情况下,检查所述第一缓冲区、所述第二缓冲区、所述第三缓冲区和所述第四缓冲区的容量状态。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收到中央处理器发送的第一数据搬运指令的情况下,根据所述第一数据搬运指令中携带的第一数据标识,读取所述第三缓冲区中存储的被所述第一数据标识所标识的参考音并存储至第一缓冲区,并根据所述第一数据搬运指令中携带的被所述第一数据标识所标识的数据的第一数据量更新指定存储空间中存储的已搬运参考音数据量;其中,所述第一数据搬运指令是所述中央处理器在检测到所述第三缓冲区的第一控制器产生中断的情况下发送的;
在接收到中央处理器发送的第二数据搬运指令的情况下,根据所述第二数据搬运指令中携带的第二数据标识,读取所述第四缓冲区中存储的被所述第二数据标识所标识的环境音并存储至第二缓冲区,并根据所述第二数据搬运指令中携带的被所述第二数据标识所标识的数据的第二数据量更新所述指定存储空间中存储的已搬运环境音数据量;其中,所述第二数据搬运指令是所述中央处理器在检测到所述第四缓冲区的第二控制器产生中断的情况下发送的。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
根据读取到的所述待拼接参考音和所述待拼接环境音各自对应的数据量,更新所述指定存储空间中存储的已拼接参考音数据量和已拼接环境音数据量;
所述检查第一缓冲区、第二缓冲区、第三缓冲区和第四缓冲区的存储状态,包括:
读取所述指定存储空间中存储的采集参考音数据量、采集环境音数据量、已搬运参考音数据量、已搬运环境音数据量、已拼接参考音数据量和已拼接环境音数据量;其中,所述采集参考音数据量是所述中央处理器在检测到所述第一控制器每次产生中断的情况下根据所述第一控制器统计的数据量进行更新得到的,所述采集环境音数据量是所述中央处理器在检测到所述第二控制器每次产生中断的情况下根据所述第二控制器统计的数据量进行更新得到的;
根据读取到的所述已搬运参考音数据量、所述已拼接参考音数据量、所述已搬运环境音数据量、所述已拼接环境音数据量、所述采集参考音数据量和所述采集环境音数据量,检查所述检查第一缓冲区、第二缓冲区、第三缓冲区和第四缓冲区的存储状态。
11.根据权利要求9所述的方法,其特征在于,所述第一控制器的产生中断的第一周期和所述第二控制器产生中断的第二周期不同。
12.根据权利要求11所述的方法,其特征在于,所述第一周期和所述第二周期均为大于2的素数个基本单位时长。
13.根据权利要求1所述的方法,其特征在于,在对齐后将所述待拼接参考音与所述待拼接环境音拼接,得到目标语音数据,包括:
将所述待拼接参考音中与所述待拼接环境音中相互对齐的参考音数据帧和环境音数据帧拼接为一帧,得到多帧拼接语音数据帧;
并将所述多帧拼接语音数据帧按照所述参考音数据帧或所述环境音数据帧的帧序进行拼接,得到目标语音数据。
14.根据权利要求1所述的方法,其特征在于,所述方法还包括:
向中央处理器发送所述目标语音数据。
15.一种语音数据获取装置,其特征在于,所述装置包括:
第一检查模块,用于检查第一缓冲区、第二缓冲区、第三缓冲区和第四缓冲区的存储状态;其中,所述第一缓冲区中的数据是从所述第三缓冲区中获取的,所述第二缓冲区中的数据是从所述第四缓冲区中获取的,所述第三缓冲区用于存储从音频输出通路上采集的参考音,所述第四缓冲区用于存储从音频输入通路上采集的环境音;
第一读取模块,用于在检查到所述第一缓冲区与所述第二缓冲区中的数据量相等且所述第一缓冲区、所述第二缓冲区、所述第三缓冲区和所述第四缓冲区的容量均未溢出的情况下,读取所述第一缓冲区中的待拼接参考音和所述第二缓冲区中的待拼接环境音;
对齐拼接模块,用于根据预先测定的时延将读取到的所述待拼接参考音与所述待拼接环境音对齐,并在对齐后将所述待拼接参考音与所述待拼接环境音拼接,得到目标语音数据。
16.一种电子设备,其特征在于,所述电子设备包括:中央处理器、第一处理器和存储器,所述存储器存储可在所述第一处理器和所述中央处理器中的至少之一上运行的程序或指令,所述程序或指令中存在程序或指令被所述第一处理器执行时实现如权利要求1至14中任一项所述的语音数据获取方法的步骤。
17.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1至14中任一项所述的语音数据获取方法的步骤。
CN202311436518.5A 2023-10-30 2023-10-30 一种语音数据获取方法、装置、设备和介质 Pending CN117636895A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311436518.5A CN117636895A (zh) 2023-10-30 2023-10-30 一种语音数据获取方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311436518.5A CN117636895A (zh) 2023-10-30 2023-10-30 一种语音数据获取方法、装置、设备和介质

Publications (1)

Publication Number Publication Date
CN117636895A true CN117636895A (zh) 2024-03-01

Family

ID=90031170

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311436518.5A Pending CN117636895A (zh) 2023-10-30 2023-10-30 一种语音数据获取方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN117636895A (zh)

Similar Documents

Publication Publication Date Title
JP6914236B2 (ja) 音声認識方法、装置、デバイス、コンピュータ可読記憶媒体及びプログラム
CN109377987B (zh) 智能语音设备间的交互方法、装置、设备及存储介质
JP6751433B2 (ja) アプリケーションプログラムをウェイクアップする処理方法、装置及び記憶媒体
CN102667745B (zh) 多核系统、多核系统的控制方法以及在非暂态可读介质中存储的程序
JP2019079052A (ja) 音声データ処理方法、装置、設備及びプログラム
US11587560B2 (en) Voice interaction method, device, apparatus and server
CN109192208B (zh) 一种电器设备的控制方法、系统、装置、设备及介质
CN111381954B (zh) 一种音频数据录制方法、系统及终端设备
JP2019128939A (ja) ジェスチャーによる音声ウェイクアップ方法、装置、設備及びコンピュータ可読媒体
CN107256707B (zh) 一种语音识别方法、系统及终端设备
WO2017005010A1 (zh) 音频处理方法及设备、计算机存储介质
US9043806B2 (en) Information processing device and task switching method
JP2014182815A (ja) 揮発性シャドウメモリを介した不揮発性メモリへのアクセス
GB2559460A (en) Speech recognition without interrupting the playback audio
US20070083685A1 (en) Data management for a USB device
US6427181B1 (en) Method of and apparatus for processing information, and providing medium
CN110928574A (zh) 微控制器、中断处理芯片、设备及中断处理方法
EP2313827A1 (en) Method and system for measuring task load
CN108470008B (zh) 串口数据读写方法、装置、计算机设备和存储介质
CN109830249A (zh) 数据处理方法、装置和存储介质
CN117636895A (zh) 一种语音数据获取方法、装置、设备和介质
CN113497995B (zh) 麦克风阵列控制方法、装置、电子设备及计算机存储介质
CA2295600A1 (en) Tone generation device and method
US11886290B2 (en) Information processing apparatus and information processing method for error correction and read modify write processing
CN105681651B (zh) 一种嵌入式高速实时场景图像生成装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination