语音处理方法与装置的制造方法_3

文档序号:9922698阅读:来源:国知局
束标识用于指示当前语音数据包为所属的语音连接对应的最后一个语音数据包。
[0073]本步骤中当前语音识别线程判断语音数据包中是否包含有结束标识,目的是判断语音连接所要请求的语音数据包是否全部处理完毕,若完毕,则可将语音连接对应的语音识别实例释放,供其他语音连接使用。
[0074]所述设定操作可以由本领域技术人员根据实际需求进行设定,本实施例对此不作具体限制。例如:设置成直接获取其他待处理的语音数据包。
[0075]—个语音连接所请求处理的语音数据被分成多个语音数据包,在最后一个数据包中携带有结束标识。例如:共将当前语音连接所请求处理的语音数据分成五个语音数据包,在前五个语音数据包中分别携带有用于指示当前语音数据包并非第一个语音数据包的标识(如将第一至第五个语音数据包中携带的标识分别设置为1、2、3、4、5),而第六个语音数据包由于是最后一个语音数据包,因此,在该语音数据包中携带有用于指示当前语音数据包为最后一个语音数据包的结束标识(如将该结束标识设置成-6)。
[0076]上面仅是列举了一种通过将语音数据包的标号进行正、负标注来确定语音数据包是都为最后一个包的方式。在具体实现过程中,本领域技术人员可以采用任意适当的设定方式来设定结束标识,例如:仅在最后一个语音数据包中携带设定标识,当数据包中携带有设定标识时,即可确定该包为其所属语音连接所请求的最后一个语音数据包。再例如:还可以将非最后一个语音数据包中均携带标识1,而在最后一个语音数据包中携带标识0,将标识O定义为结束标识。
[0077]步骤S212:若语音数据包中包含有结束标识,语音识别线程则将语音数据包对应的语音识别实例的释放,并将释放后的语音识别实例的状态更新为空闲。
[0078]将语音识别实例的状态更新为空闲,便可供其他的语音连接进行绑定。
[0079]步骤S214:语音识别线程在对获取的语音数据包处理完成后、判断是否还存在待处理的其它语音数据包;若存在,则返回执行步骤S204,若不存在,则执行设定操作。
[0080]本领域技术人员能够明了,服务器通常情况下会同时处理多个语音连接请求,而每个语音连接请求对应多个语音数据包,因此,在具体实现过程中,服务器中待处理的语音数据包存储空间中同时会存在多个待处理的语音数据包。本发明实施例中,当前语音识别线程处理完当前语音连接所请求的语音数据包后,主动获取其他待处理的语音数据包进行语音处理,直至全部待处理的语音数据包处理完毕。
[0081]其中,设定操作可以由本领域技术人员根据实际需求进行设置。例如:设置成当判断出不存在待处理的语音数据包时,停止并释放语音识别线程。
[0082]图5示出了采用本实施例中所示的语音处理方法与现有的第一种语音处理方法(为服务器的每个物理核创建一个语音识别线程,并且将语音识别线程和语音识别实例绑定,每个语音识别线程仅处理一个语音连接对应的语音请求)在处理语音请求时的性能对比图。
[0083]该对比图,是通过把同样一批数据压入分别两个语音处理系统中进行压力测试后的测试数据进行统计所生成的,测试的在这两个进行测试的语音处理系统中服务器均包含12个物理核。
[0084]其中,横坐标表示:最大识别并发数,即服务器同时处理的语音连接的数量;纵坐标表示语音识别实时率,即语音线程处理I秒钟的语音对应的语音数据包的时间,通过语音识别实时率能够体现服务器的处理语音请求的性能。
[0085]在图5中,圆点串接的线指示采用本实施例中的语音处理方法处理语音请求时的性能曲线;方块串接的线指示采用现有的第一种线程绑定的语音处理方法处理语音请求时的性能曲线。从图5中可知,随着最大识别并发数增加,两个语音识别系统的语音识别实时率均在增加。当最大识别并发数大于24时,本发明的优势开始体现,此时虽然本发明的实时率也在升高,但升高趋势不明显。可见,本发明实施例提供的语音处理方法能够提升语音处理系统的吞吐量。
[0086]在具体实现过程中,通常会面临对服务中存储的语音识别的语音模型进行更新的问题,当需要对服务器中用于进行语音识别的语音模型进行更新时,则需要对服务器进行外部中断。现有的技术方案在处理该中断时,则直接将服务器连接的各语音连接中断,影响用户的使用体验。本发明实施例中的语音处理方法,当服务器主线程接收到对服务器的外部中断请求后,会维持已经建立语音连接并继续处理这些已经建立的语音连接所请求处理的语音数据包,直至语音连接所请求处理的全部语音数据包处理完毕后,再中断该语音连接。而对于未建立的语音连接,则不再接受其连接请求。
[0087]具体实现如下:
[0088]当服务器主线程接收到对服务器的外部中断请求时,生成中断标识;根据中断标识,针对服务器中已建立的语音连接,继续对语音连接对应的语音数据包进行语音识别处理,待语音连接对应的全部语音数据包进行语音识别处理后,中断语音连接;针对未与服务器建立连接的语音连接,直接取消与服务器建立连接的请求,不再建立于服务器之间的语音连接。
[0089]本发明实施例提供的这种处理外部中断请求方案,对已经建立语音连接的用户继续提供服务,直至语音连接所请求的全部语音数据包处理完毕,对于用户而言语音识别请求不会受到影响,更不会突然中断,因此,能够提升用户的使用体验。
[0090]通过本发明实施例提供的语音处理方法,当前语音识别线程并非仅为一个语音连接提供语音处理服务,在当前语音连接对应的语音数据包处理完成后即当前语音识别线程空闲时,当前语音识别线程主动判断是否还存在待处理的其它请求的语音数据包,若存在,则直接获取一个待处理的其他请求的语音数据包进行处理。本发明实施例提供的语音处理方法,一方面,当语音识别线程空闲时主动获取其他待处理的语音数据包进行语音处理,因此,语音识别线程并不存在现有技术中所存在的语音识别线程等待语音连接对应的下一个语音数据包而造成资源浪费的问题。另一方面,本发明实施例中的语音识别线程空闲时是通过主动获取其他待处理的语音数据包,来改变其对应的物理核的空闲状态,以使物理核的资源能够被充分利用。整个过程中都不存在语音识别线程之间的切换,语音识别线程对应的物理核的全部资源都利用于处理语音数据包,因此,能够有效避免现有的处理方法中存在的语音识别线程之间的轮转而消耗物理核资源的问题。再一方面,语音线程之间的轮转是由处理器按照自身设定的时钟周期进行的,即在处理同一个语音数据包时,可能暂时中断一段时间,来处理另外的一个语音识别线程对应的语音数据包,因此,语音识别线程之间的轮转将导致单个语音请求处理速度的下降。而本发明实施例中,并不存在语音线程之间的轮转,因此,能够避免语音识别线程轮转而导致的单个语音请求处理速度下降的问题。
[0091]下面参照图6以一具体实例对本发明实施例的语音处理方法进行说明。
[0092]图6示出了执行实施例二中所述的语音处理方法的语音处理系统启动和中断的流程示意图。
[0093]如图6所示,语音处理系统即服务器启动时预先执行以下操作:
[0094]S1:加载识别资源。
[0095]其中,服务器在语音识别处理时使用相应地的识别资源,因此,在服务器启动时,需要预先加载识别资源。识别资源存储在硬盘中,加载的目的是将存储在硬盘中的识别资源加载至服务器内存中,以避免频繁访问硬盘。
[0096]S2:初始化识别实例。
[0097]初始化识别实例即建立设定个数的语音识别实例,并将语音识别实例即识别实例存储在语音识别实例表中。在未连接语音连接前,语音识别实例表中可能仅存储有初始化的各语音识别实例,但是,当服务器连接了语音连接后,语音识别实例表中将存储有语音请求对应的全局唯一标识与语音识别实例的对应关系。
[0098]S3:初始化任务队列。
[0099]本具体实例中以服务器包含M个物理核、初始化的任务队列包含等待处理的数据包队列、正在处理的数据包列表、处理完毕的数据包列表和识别实例表,并且初始化后的各任务队列中可存储目标的个数均为N,可并发处理的语音连接个数为K (通常K = N)个为例,对后续的流程进行说明。
[0100]S4:创建并启动工作线程。
[0101]其中,工作线程即语音识别线程。
[0102]本具体实例中由于服务器包含M个物理核,因此,在创建语音识别线程时,服务器主线程为每个物理核创建一个语音识别线程,即共创建M个语音识别线程。由于语音识别线程的个数等于服务器逻辑内核即服务器包含的物理核的个数,因此,语音识别线程间不会轮流或随意争抢处理器资源。
[0103]在执行完上述操作后,识别服务器即可执行S5与客户端建立语音连接。本具体实例中,为了使识别服务器的资源能够充分利用,在S4中所创建的各语音识别线程均会处理语音连接对应的语音数据包,即执行S6。
[0104]S6:处理语音识别请求。
[0105]下面参照图3对处理一个语音识别请求中的一个语音数据包的处理进行说明。
[0106]从图3中可知,一个语音识别请求对应一个语音连接。在具体实现过程中,每个语音请求被赋予一个全局唯一标识即UID,也就是说一个语音连接对应一个UID,每个语音连接接收来自一个语音请求的数据包。一个UID对应
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1