CN117675888A - 会话的实现方法及装置、会话的实现系统 - Google Patents
会话的实现方法及装置、会话的实现系统 Download PDFInfo
- Publication number
- CN117675888A CN117675888A CN202311636026.0A CN202311636026A CN117675888A CN 117675888 A CN117675888 A CN 117675888A CN 202311636026 A CN202311636026 A CN 202311636026A CN 117675888 A CN117675888 A CN 117675888A
- Authority
- CN
- China
- Prior art keywords
- thread
- session
- voice
- connection
- voice recognition
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 74
- 230000004044 response Effects 0.000 claims abstract description 12
- 230000006870 function Effects 0.000 claims description 30
- 238000004590 computer program Methods 0.000 claims description 12
- 238000005516 engineering process Methods 0.000 abstract description 7
- 238000004891 communication Methods 0.000 description 30
- 230000000875 corresponding effect Effects 0.000 description 15
- 238000012545 processing Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 13
- 230000001276 controlling effect Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013518 transcription Methods 0.000 description 4
- 230000035897 transcription Effects 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/22—Procedures used during a speech recognition process, e.g. man-machine dialogue
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L15/00—Speech recognition
- G10L15/28—Constructional details of speech recognition systems
- G10L15/30—Distributed recognition, e.g. in client-server systems, for mobile phones or network applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种会话的实现方法及装置、会话的实现系统。其中,该方法包括:接收会话请求,其中,会话请求用于请求与语音识别服务器建立会话;响应于会话请求,分别创建第一线程和第二线程,其中,第一线程与第二线程并行执行,第一线程用于进行语音捕获,第二线程用于连接目标接口,目标接口为语音识别服务器的语音识别服务接口;基于第一线程和第二线程实现与语音识别服务器的会话。本申请解决了由于相关技术采用单一线程执行语音识别接口的连接和语音数据捕获转写的工作造成的存在内存越界的问题,导致系统运行不稳定,以及导致客户端感知的等待时间长的技术问题。
Description
技术领域
本申请涉及实时语音转写领域,具体而言,涉及一种会话的实现方法及装置、会话的实现系统。
背景技术
随着通信技术及人工智能的发展,语音识别等人工智能(ArtificialIntelligence,AI)技术在话术辅助等智能客服领域的广泛应用,使交换技术重新焕发出了新的生机;相关技术通过调用第三方的语音识别服务(引擎)接口进行语音识别;但是,由于每一种通信接口,从通信开始到通信建立,都会有一个握手过程,存在握手等待及反馈的时间,当会话数量多、服务器繁忙时通常会出现接口建立等待超时的现象,导致客户端感知到的等待时间长;如果调用识别接口不当,还会引发模块初始化事件处理时间过长或内存越界等问题,从而引发会话接通的等待或系统崩溃。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种会话的实现方法及装置、会话的实现系统,以至少解决由于相关技术采用单一线程执行语音识别接口的连接和语音数据捕获转写的工作造成的存在内存越界的问题,导致系统运行不稳定,以及导致客户端感知的等待时间长的技术问题。
根据本申请实施例的一个方面,提供了一种会话的实现方法,包括:接收会话请求,其中,会话请求用于请求与语音识别服务器建立会话;响应于会话请求,分别创建第一线程和第二线程,其中,第一线程与第二线程并行执行,第一线程用于进行语音捕获,第二线程用于连接目标接口,目标接口为语音识别服务器的语音识别服务接口;基于第一线程和第二线程实现与语音识别服务器的会话。
可选地,基于第一线程和第二线程实现与语音识别服务器的会话,包括:通过第一线程接收会话对应的通话通道中的语音流;通过第二线程检测目标接口的连接结果,并根据连接结果对状态标识赋值,其中,连接结果包括:连接成功和连接失败,状态标识用于指示目标接口的连接结果,状态标识包括:用于指示连接成功的第一状态标识和用于指示连接失败的第二状态标识;并控制第一线程执行与状态标识对应的会话实现方法。
可选地,通过第二线程检测目标接口的连接结果,并根据连接结果对状态标识赋值,包括:在第二线程检测到连接结果为连接成功的情况下,将第一状态标识的值赋值为有效值,将第二状态标识赋值为无效值,其中,连接成功用于指示第二线程在目标时长内检测到成功与目标接口建立连接,目标时长是由第二线程执行的条件等待函数确定的;在第二线程检测到连接结果为连接失败的情况下,将第一状态标识赋值为无效值,将第二状态标识赋值为有效值,其中,连接失败用于指示第二线程在目标时长内未检测到成功与目标接口建立连接。
可选地,控制第一线程执行与状态标识对应的会话实现方法,包括:在第一状态标识的值为指示连接成功的有效值的情况下,通过第一线程执行会话实现方法;在第二状态标识的值为指示连接失败的有效值的情况下,控制第一线程保存语音流;以及,输出用于指示语音识别失败的标识。
可选地,通过第一线程执行会话实现方法,包括:在接收到语音流的情况下,向第一线程发送语音捕获事件,其中,语音捕获事件用于指示第一线程向目标接口发送语音流;通过第一线程将语音流分类为多个长度相等的语音帧集合,并控制第一线程将语音帧集合发送到目标接口;在未接收到语音流的情况下,向第一线程发送会话结束事件,其中,会话结束事件用于指示第一线程结束会话。
可选地,会话的实现方法还包括:在第一线程接收到会话结束指令的情况下,确定第二线程的执行状态;在第二线程的执行状态为正在执行的情况下,向第二线程发送启动指令,其中,启动指令用于启动条件等待函数;在检测到条件等待函数执行完毕且第二线程的执行状态为执行完毕的情况下,结束会话。
可选地,会话的实现方法还包括:响应于会话请求,向第一线程发送目标回调事件,其中,目标回调事件用于指示第一线程执行初始化操作,初始化操作,包括:指定目标接口,创建连接请求句柄,其中,连接请求句柄用于与目标接口建立连接关系。
根据本申请实施例的另一方面,还提供了一种会话的实现系统,包括:软交换核心模块、语音捕获模块和语音识别服务器,其中,软交换核心模块,用于接收会话请求,并响应于会话请求,分别创建第一线程和第二线程,基于第一线程和第二线程实现与语音识别服务器的会话,其中,会话请求用于请求与语音识别服务器建立会话,第一线程用于调用语音捕获模块进行语音捕获,第二线程用于连接目标接口,目标接口为语音识别服务器的语音识别服务接口。
根据本申请实施例的另一方面,还提供了一种会话的实现装置,包括:接收模块,用于接收会话请求,其中,会话请求用于请求与语音识别服务器建立会话;创建模块,用于响应于会话请求,分别创建第一线程和第二线程,其中,第一线程与第二线程并行执行,第一线程用于进行语音捕获,第二线程用于连接目标接口,目标接口为语音识别服务器的语音识别服务接口;实现模块,用于基于第一线程和第二线程实现与语音识别服务器的会话。
根据本申请实施例的另一方面,还提供了一种非易失性存储介质,非易失性存储介质中存储有计算机程序,其中,在非易失性存储介质所在设备通过运行计算机程序执行上述的会话的实现方法。
根据本申请实施例的另一方面,还提供了一种电子设备,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为通过计算机程序执行上述的会话的实现方法。
在本申请实施例中,采用接收会话请求,其中,会话请求用于请求与语音识别服务器建立会话;响应于会话请求,分别创建第一线程和第二线程,其中,第一线程与第二线程并行执行,第一线程用于进行语音捕获,第二线程用于连接目标接口,目标接口为语音识别服务器的语音识别服务接口;基于第一线程和第二线程实现与语音识别服务器的会话的方式,通过将语音识别接口的连接和语音数据的捕获转写分离,利用两个线程分别执行语音识别接口的连接和语音数据的捕获转写;将语音识别接口的连接、等待和唤醒等耗时的工作全部转移到另一个独立的线程/进程中,达到了减少客户端感知到的等待时间的目的,同时,增设用于指示语音识别接口的连接结果的状态标识,根据状态标识判断是否结束会话,达到了避免发生内存越界的目的,从而实现了提升执行语音识别服务的系统的稳定性的技术效果,进而解决了由于相关技术采用单一线程执行语音识别接口的连接和语音数据捕获转写的工作造成的存在内存越界的问题,导致系统运行不稳定,以及导致客户端感知的等待时间长技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种用于实现会话的实现方法的计算机终端的硬件结构框图;
图2是根据本申请实施例的一种会话的实现方法的步骤流程图;
图3是根据本申请实施例的一种会话的实现系统的示意图;
图4是根据本申请实施例的一种会话系统的工作流程图;
图5是根据本申请实施例的一种会话的实现装置的结构图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
为了更好地理解本申请实施例,以下将本申请实施例中涉及的技术术语解释如下:
句柄:用于标识或操作对象的标识符,在操作系统中,句柄指代文件、窗口、资源或其他对象;通过句柄对其指代的对象进行操作和管理;在计算机编程中,句柄用于指代对象的指针或引用;在本实施例中,句柄用于指代在接收到句柄后要进行的操作。
核心转储(core dump):程序运行过程中发生异常,程序异常退出时,操作系统把程序当前的内存状况存储在一个内存的映像(core)中。
野指针:指向的地址未被定义,因此指向的地址为未知的指针。
在相关技术中,采用单一线程执行语音识别接口的连接和语音数据的转写以实现通信两端的会话,语音识别接口的建立和释放时间由连接时间(ConnectTime) =∑(init_time,start_time),释放时间(DisConnectTime )=∑ (stop_time)组成,其中,连接时间中包括:初始化时间(init_time)和接口创建到连接成功或连接超时的时间(start_time);语音识别服务系统在初始化时间(init_time)进行参数的设置、创建句柄,并为句柄绑定相关回调等,耗时较短。而接口创建到连接成功或连接超时的时间(start_time)耗时较长,是影响客户端感知的连接时间的主要因素; start_time由可以忽略不计的启动调用接口的时间(connect_start_time)、语音识别服务端连接成功地时间(connect_started_time)(如果出现连接超时的现象,将connect_started_time记为0)和语音识别服务端连接超时的时间(task_failed_time)组成,其中,语音识别服务端连接超时的时间(task_failed_time)是影响客户端感知的等待时间的主要因素。stop_time是通信结束并释放资源的时间,或者语音识别接口释放超时等待的时长,由语音识别接口执行断开连接的时间(disconnect_stop_time)、语音识别接口断开连接后停止的时长(disconnect_stoped_time)和断开失败的时间(task_failed_time)组成;如果语音识别接口执行断开的时机错误,会出现用户或坐席挂机挂不断的问题,还会产生内存越界等问题。为了解决上述问题,本申请实施例中提供了相关的解决方案,以下详细说明。
根据本申请实施例,提供了一种实现会话的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现会话的实现方法的计算机终端的硬件结构框图。如图1所示,计算机终端10可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为BUS总线的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的会话的实现方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的会话的实现方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算机终端10的用户界面进行交互。
本申请实施例提供了一种能够在上述运行环境下运行的会话的实现方法,图2是根据本申请实施例提供的会话的实现方法的步骤流程图,如图2所示,该方法包括如下步骤:
步骤S202,接收会话请求,其中,会话请求用于请求与语音识别服务器建立会话。
本申请实施例提供的方法用于在两个通信端之间建立会话,并基于其中一个为语音识别服务器端的通信端实现语音捕获和转写的目的,在步骤S202中,建立会话前,会接收到其中一个通信端发送的,用于请求与语音识别服务器端机建立会话的会话请求。
步骤S204,响应于会话请求,分别创建第一线程和第二线程,其中,第一线程与第二线程并行执行,第一线程用于进行语音捕获,第二线程用于连接目标接口,目标接口为语音识别服务器的语音识别服务接口。
在步骤S202中接收到会话请求后,步骤S204中分别创建两个线程(第一线程和第二线程)或者分别启动两个进程,通过每个线程/进程执行不同的流程,例如,通过其中一个(第一)线程在接收到会话请求的时刻,立即建立会话通道,并在会话通道中捕获语音数据;而对于其中另一个(第二)线程,则在接收到会话请求后,立即连接会话通道和语音识别服务器上用于提供语音识别服务的接口(即目标接口),通过连接语音识别服务接口(即目标接口)建立与语音识别服务器的连接。因此,经过步骤S204,两个通信端已经通过第一线程开始通信/通话,但是,是否能够成功将在会话通道中捕获到的语音数据成功撰写取决于第二线程是否成功连接语音识别服务接口(即目标接口)。
步骤S206,基于第一线程和第二线程实现与语音识别服务器的会话。
在步骤S206中,基于步骤S204中创建的(第一)线程在会话通道中捕获传输的语音数据,同时,通过(第二)线程执行语音识别服务接口(即目标接口)的连接工作,如果连接成功,则(第一)线程将捕获到的语音数据传输到语音识别服务接口(即目标接口),通过语音识别服务器完成语音数据的转写;通过两个线程(第一线程和第二线程)共同实现两个通信端之间的会话。
可选地,基于第一线程和第二线程实现与语音识别服务器的会话,包括:通过第一线程接收会话对应的通话通道中的语音流;通过第二线程检测目标接口的连接结果,并根据连接结果对状态标识赋值,其中,连接结果包括:连接成功和连接失败,状态标识用于指示目标接口的连接结果,状态标识包括:用于指示连接成功的第一状态标识和用于指示连接失败的第二状态标识;并控制第一线程执行与状态标识对应的会话实现方法。
在本实施例中,步骤S204中创建的两个线程在两个通信端的会话中分别执行不同的工作,其中一个线程(即第一线程)用于在两个通信端的会话通道中接收其中一个通信端发送的语音流,捕获语音数据;而另一个线程(即第二线程)则连接会话通道与语音识别服务接口(即目标接口),并实时检测连接结果,根据连接结果为预先设置的、与连接结果对应的状态标识赋值,其中,预先设置的状态标识为两种连接结果对应的两种状态标识:连接成功标识ch_connect_succ_flag(即第一状态标识)和连接失败标识ch_connect_fail_flag(即第二状态标识);根据会话通道与语音识别服务接口(即目标接口)的连接结果分别为两种状态标识(即第一状态标识和第二状态标识)赋值,并控制执行语音数据捕获转写的线程(即第一线程)执行与赋值后的状态标识对应的方法,以完成两个通信端的会话。
根据本申请一个可选的实施例,通过第二线程检测目标接口的连接结果,并根据连接结果对状态标识赋值,包括:在第二线程检测到连接结果为连接成功的情况下,将第一状态标识的值赋值为有效值,将第二状态标识赋值为无效值,其中,连接成功用于指示第二线程在目标时长内检测到成功与目标接口建立连接,目标时长是由第二线程执行的条件等待函数确定的;在第二线程检测到连接结果为连接失败的情况下,将第一状态标识赋值为无效值,将第二状态标识赋值为有效值,其中,连接失败用于指示第二线程在目标时长内未检测到成功与目标接口建立连接。
如上述实施例提及的,根据语音识别服务接口(即目标接口)的连接结果为状态标识赋值,其中,语音识别服务接口(即目标接口)的连接和连接结果的检测均由第二线程执行。第二线程在接收到会话请求后,唤醒时间条件等待函数(pthread_cond_timedwait),在时间条件等待函数(pthread_cond_timedwait)定义的等待时长(即目标时长)内连接会话通道和语音识别服务接口(即目标接口),并实时检测连接结果;如果接收到第二线程发送的在时间条件等待函数(pthread_cond_timedwait)定义的等待时长(即目标时长)内检测到会话通道与语音识别服务接口(即目标接口)成功连接的消息,将连接成功标识ch_connect_succ_flag(即第一状态标识)的值赋值为有效值,例如,赋值为“true”,同时将连接失败标识ch_connect_fail_flag(即第二状态标识)的值赋值为无效值,例如,赋值为“false”;如果接收到第二线程发送的在时间条件等待函数(pthread_cond_timedwait)定义的等待时长(即目标时长)内未检测到会话通道与语音识别服务接口(即目标接口)成功连接的消息,确认会话连接超时,将连接成功标识ch_connect_succ_flag(即第一状态标识)的值赋值为无效值,例如,赋值为“false”,同时将连接失败标识ch_connect_fail_flag(即第二状态标识)的值赋值为有效值,例如,赋值为“true”。
根据本申请另一个可选的实施例,控制第一线程执行与状态标识对应的会话实现方法,包括:在第一状态标识的值为指示连接成功的有效值的情况下,通过第一线程执行会话实现方法;在第二状态标识的值为指示连接失败的有效值的情况下,控制第一线程保存语音流;以及,输出用于指示语音识别失败的标识。
在本实施例中,由于第一线程在接收到会话请求的时刻已经建立了会话通道,即通信两端在第二线程连接会话通道和语音识别服务接口(即目标接口)时,通信两端已经在通话过程中,第一线程已经开始在会话通道中捕获语音数据;因此,在接收到状态标识后,直接控制第一线程对语音识别服务接口(即目标接口)连接过程中捕获的语音数据进行相应的处理。如果检测到连接成功标识ch_connect_succ_flag(即第一状态标识)的值为有效值,则向第一线程发送语音数据处理事件,以控制第一线程将捕获的语音数据通过语音识别服务接口(即目标接口)发送到语音识别服务器,实现语音数据的转写。如果检测到连接失败标识ch_connect_fail_flag(即第二状态标识)的值为有效值,则控制第一线程将捕获的语音数据先保存下来,不进行任何处理,同时第一线程会发送超时标志,用于告知语音识别服务接口(即目标接口)连接超时。
可选地,通过第一线程执行会话实现方法,包括:在接收到语音流的情况下,向第一线程发送语音捕获事件,其中,语音捕获事件用于指示第一线程向目标接口发送语音流;通过第一线程将语音流分类为多个长度相等的语音帧集合,并控制第一线程将语音帧集合发送到目标接口;在未接收到语音流的情况下,向第一线程发送会话结束事件,其中,会话结束事件用于指示第一线程结束会话。
在本实施例中,在检测到连接成功标识ch_connect_succ_flag(即第一状态标识)的值为有效值的情况下,向第一线程发送语音捕获事件,以控制第一线程将在语音识别服务接口(即目标接口)连接过程中捕获的语音数据,和后续捕获的语音数据传输到均分为长度相等的多个语音帧集合,并按照预设的发送周期,每个周期向语音识别服务接口(即目标接口)发送一个语音帧集合,以通过语音识别服务器完成该语音帧集合的转写;其中,语音帧集合长度相等是指语音帧集合中包含的语音帧的数量相等。如果检测到第一线程在语音识别服务接口(即目标接口)的连接过程中没有捕获到语音数据,则向第一线程发送closesession(会话结束事件),用于触发第一线程执行会话结束的程序。
根据本申请一些可选的实施例,会话的实现方法还包括:在第一线程接收到会话结束指令的情况下,确定第二线程的执行状态;在第二线程的执行状态为正在执行的情况下,向第二线程发送启动指令,其中,启动指令用于启动条件等待函数;在检测到条件等待函数执行完毕且第二线程的执行状态为执行完毕的情况下,结束会话。
在一些实施例中,为避免发生内存越界,在控制第一线程执行会话结束程序之前,即已经向第一线程发送会话结束事件后,向第二线程发送唤醒信号(即启动指令),以控制第二线程执行时间条件等待函数(pthread_cond_timedwait)检查第二线程是否以及更终止执行;并在检测到在第二线程执行完条件等待函数(pthread_cond_timedwait)后,且确定第二线程释放了连接句柄后,结束会话;如果只检测到第二线程执行条件等待函数(pthread_cond_timedwait)执完毕,而没有释放连接句柄,则断开两个通信端的连接,在释放资源后结束会话。本实施例中执行的操作时为了避免内存越界的发生,因为,第一线程执行的会话结束程序可能是在通话刚建立完成时,主/被叫任一端立即挂机触发的,此时,状态线程(即第二线程)还在继续执行;如果此时结束会话,整个会话的实现系统中将出现野指针,或者出现内存越界问题,引起内存泄漏甚至核心转储(core dump)等问题,最终可能引发整个系统崩溃。
根据本申请一个可选的实施例,会话的实现方法还包括:响应于会话请求,向第一线程发送目标回调事件,其中,目标回调事件用于指示第一线程执行初始化操作,初始化操作,包括:指定目标接口,创建连接请求句柄,其中,连接请求句柄用于与目标接口建立连接关系。
需要说明的是,本申请实施例中的各个线程、以及执行本申请实施例提供的会话的实现方法的系统均是由触发从而开始执行对应的程序的。例如,在本实施例中,初始化参数是发生在接收到第一个回调事件init(即目标回调事件)之后的,即第一个回调事件init(即目标回调事件)触发了初始化参数的流程;在接收到init后执行语音识别服务的初始化,具体的,指定本次与会话通道连接的语音识别服务接口(即目标接口);将用于指示会话通道与语音识别接口(即目标接口)连接状态为成功的(第一)状态标识设置为ch_connect_succ_flag;将用于指示会话通道与语音识别接口(即目标接口)连接状态为失败的(第二)状态标识设置为ch_connect_fail_flag;以及用于触发会话通道与语音识别接口(即目标接口)和建立连接的连接请求句柄,和其它句柄,并为创建的各个句柄绑定对应的回调事件;使第一/第二线程或其他系统在接收到句柄时执行其对应的回调事件。
通过上述步骤,可以实现将语音识别服务连接过程中的等待、唤醒等耗时且阻塞模块主线程的工作全部移到状态线程中,增设相关的状态标志,由状态线程完成状态标志的判断及修改,将大幅度减少语音识别服务初始化过程中接口连接的等待时间,从而防止会话建立时的等待,又防止了模块关闭时的野指针或内存越界的发生,保障系统运行的稳定,从而提升客户感知。
图3是根据本申请实施例提供的一种会话的实现系统的示意图,如图3所示,会话的实现系统包括:软交换核心模块30、语音捕获模块32和语音识别服务器34,其中,软交换核心模块30,用于接收会话请求,并响应于会话请求,分别创建第一线程和第二线程,基于第一线程和第二线程实现与语音识别服务器34的会话,其中,会话请求用于请求与语音识别服务器34建立会话,第一线程用于调用语音捕获模块32进行语音捕获,第二线程用于连接目标接口,目标接口为语音识别服务器34的语音识别服务接口。
图4是会话的实现系统的工作流程图,系统开始工作,通过软交换核心模块30接收会话请求,并响应于会话请求,在语音识别服务器34和发送会话的请求的通信端建立通话通道;如图4所示,在建立新的通话通道前,软交换核心模块30在接收到开启语音识别服务的命令(ASR start)时,对语音识别服务接口(即目标接口)的连接过程进行分离处理,具体的,创建第一线程和第二线程分别执行语音数据的捕获转写程序和语音识别服务接口(即目标接口)的连接程序,并在创建了线程后立即返回,以确保在线程创建完毕后,用于在会话中传输语音数据的通道也立即建立成功;因此,即使语音识别服务接口(即目标接口)还没有成功连接也只是不能实现语音数据转写,但两个通信端已经建立了通话通道,开始通话。其中,第一线程被创建后,接收的第一个回调事件为初始化回调事件(init),第一线程接收初始化回调事件(init)的触发,对整个语音识别服务中用到的参数进行初始化;例如,在进行参数初始化时,将用于指示会话通道与语音识别接口(即目标接口)连接状态为成功的(第一)状态标识设置为ch_connect_succ_flag;将用于指示会话通道与语音识别接口(即目标接口)连接状态为失败的(第二)状态标识设置为ch_connect_fail_flag;以及,设置请求连接句柄,通过请求连接句柄控制第二线程连接语音识别服务器34的语音识别服务接口(即目标接口)。如图4所示,上述创建的状态线程(即第二线程)执行语音识别服务接口(即目标接口)的连接程序,具体的,第二线程被创建后,启动时间条件等待函数(pthread_cond_timedwait);在pthread_cond_timedwait设定的等待时长(即目标时长),如内连接语音识别服务接口,并实时检测连接结果。例如,条件等待函数设定的等待时长为10秒,则在启动条件等待函数(pthread_cond_timedwait)后的10秒内连接目标接口并检测连接结果;如果在10秒内检测到连接成功,则唤醒条件等待函数(pthread_cond_timedwait),使条件等待函数(pthread_cond_timedwait)停止计时,并同时将ch_connect_succ_flag(第一状态标识)赋值为有效值,将ch_connect_fail_flag(第二状态标识)赋值为无效值,指示第一线程可以将捕获的语音数据发送到语音识别服务器34;如果直到等待时间到达10秒仍未检测到连接成功,条件等待函数(pthread_cond_timedwait)超时,此时,将ch_connect_succ_flag(第一状态标识)赋值为无效值,将ch_connect_fail_flag(第二状态标识)赋值为有效值,指示第一线程将建立好的会话通道断开,释放通道的资源(如与通道连接的两个通信端);最后释放状态线程(即第二线程)上的资源,并在确定状态线程(即第二线程)上的资源释放完毕后,注销状态线程(即第二线程)。如图4所示,上述第一线程执行通话通道中语音数据的捕获和转写;其中,第一线程为事件触发机制,即第一线程执行的每个程序均是由事件触发的,因此,第一线程一直处于事件等待状态;如果第一线程接收到的事件为指示结束本上次会话的会话结束事件,第一线程首先判断状态线程是否结束运行,如果第二线程仍在运行,向第二线程发送启动指令,控制第二线程执行时间条件等待函数(pthread_cond_timedwait),等待第二线程执行时间条件等待函数(pthread_cond_timedwait)完毕后释放连接资源,结束会话;如果第二线程已经结束运行,则直接释放连接资源,结束会话。如果第一线程接收到的时间为语音捕获事件,则捕获通话通道中的语音数据,根据第二线程发送的状态标识确认是否可以将捕获到的语音数据发送至语音识别服务器;如果ch_connect_succ_flag(第一状态标识)的值为有效值,通过语音识别服务接口(即目标接口)将捕获到的语音数据发送到语音识别服务器,实现语音数据的转写;如果ch_connect_fail_flag(第二状态标识)的值为无效值,先保存捕获到的语音数据,并进入事件等待状态,等待接收下一个事件的触发。
图5是本申请实施例提供的一种会话的实现装置的结构图,如图5所示,会话的实现装置包括:接收模块50,用于接收会话请求,其中,会话请求用于请求与语音识别服务器建立会话;创建模块52,用于响应于会话请求,分别创建第一线程和第二线程,其中,第一线程与第二线程并行执行,第一线程用于进行语音捕获,第二线程用于连接目标接口,目标接口为语音识别服务器的语音识别服务接口;实现模块54,用于基于第一线程和第二线程实现与语音识别服务器的会话。
会话的实现装置开始工作时,通过接收模块50,接收来自通信端、请求与语音是被服务器端建立会话连接的会话请求;响应于会话请求,调用创建模块52创建用于进行语音数据的捕获转写的第一线程和用于连接会话通道和语音识别服务接口(即目标接口)的第二线程;最后,通过实现模块54根据会话通道与语音识别服务接口(即目标接口)的连接状态,控制第一线程执行对应的动作,以完成两个通信端的会话。
需要说明的是,图5所示实施例的优选实施方式可以参见图2所示实施例的相关描述,此处不再赘述。
本申请实施例还提供了一种非易失性存储介质,非易失性存储介质中存储有计算机程序,在非易失性存储介质所在设备通过运行计算机程序执行以上的会话的实现方法。
上述非易失性存储介质用于存储执行以下功能的程序:接收会话请求,其中,会话请求用于请求与语音识别服务器建立会话;响应于会话请求,分别创建第一线程和第二线程,其中,第一线程与第二线程并行执行,第一线程用于进行语音捕获,第二线程用于连接目标接口,目标接口为语音识别服务器的语音识别服务接口;基于第一线程和第二线程实现与语音识别服务器的会话。
本申请实施例还提供了一种电子设备,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为通过计算机程序执行以上的会话的实现方法。
上述电子设备中的处理器用于运行执行以下功能的程序:接收会话请求,其中,会话请求用于请求与语音识别服务器建立会话;响应于会话请求,分别创建第一线程和第二线程,其中,第一线程与第二线程并行执行,第一线程用于进行语音捕获,第二线程用于连接目标接口,目标接口为语音识别服务器的语音识别服务接口;基于第一线程和第二线程实现与语音识别服务器的会话。
需要说明的是,上述会话的实现装置中的各个模块可以是程序模块(例如是实现某种特定功能的程序指令集合),也可以是硬件模块,对于后者,其可以表现为以下形式,但不限于此:上述各个模块的表现形式均为一个处理器,或者,上述各个模块的功能通过一个处理器实现。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (11)
1.一种会话的实现方法,其特征在于,包括:
接收会话请求,其中,所述会话请求用于请求与语音识别服务器建立会话;
响应于所述会话请求,分别创建第一线程和第二线程,其中,所述第一线程与所述第二线程并行执行,所述第一线程用于进行语音捕获,所述第二线程用于连接目标接口,所述目标接口为所述语音识别服务器的语音识别服务接口;
基于所述第一线程和所述第二线程实现与所述语音识别服务器的会话。
2.根据权利要求1所述的方法,其特征在于,基于所述第一线程和所述第二线程实现与所述语音识别服务器的会话,包括:
通过所述第一线程接收所述会话对应的通话通道中的语音流;
通过所述第二线程检测所述目标接口的连接结果,并根据所述连接结果对状态标识赋值,其中,所述连接结果包括:连接成功和连接失败,所述状态标识用于指示所述目标接口的连接结果,所述状态标识包括:用于指示所述连接成功的第一状态标识和用于指示所述连接失败的第二状态标识;
并控制所述第一线程执行与所述状态标识对应的会话实现方法。
3.根据权利要求2所述的方法,其特征在于,通过所述第二线程检测目标接口的连接结果,并根据所述连接结果对状态标识赋值,包括:
在所述第二线程检测到所述连接结果为所述连接成功的情况下,将所述第一状态标识的值赋值为有效值,将所述第二状态标识赋值为无效值,其中,所述连接成功用于指示所述第二线程在目标时长内检测到成功与所述目标接口建立连接,所述目标时长是由所述第二线程执行的条件等待函数确定的;
在所述第二线程检测到所述连接结果为所述连接失败的情况下,将所述第一状态标识赋值为所述无效值,将所述第二状态标识赋值为所述有效值,其中,所述连接失败用于指示所述第二线程在目标时长内未检测到成功与所述目标接口建立连接。
4.根据权利要求2所述的方法,其特征在于,控制所述第一线程执行与所述状态标识对应的会话实现方法,包括:
在所述第一状态标识的值为指示所述连接成功的有效值的情况下,通过所述第一线程执行所述会话实现方法;
在所述第二状态标识的值为指示所述连接失败的有效值的情况下,控制所述第一线程保存所述语音流;以及,
输出用于指示语音识别失败的标识。
5.根据权利要求4所述的方法,其特征在于,通过所述第一线程执行所述会话实现方法,包括:
在接收到所述语音流的情况下,向所述第一线程发送语音捕获事件,其中,所述语音捕获事件用于指示所述第一线程向所述目标接口发送所述语音流;
通过所述第一线程将所述语音流分类为多个长度相等的语音帧集合,并控制所述第一线程将所述语音帧集合发送到所述目标接口;
在未接收到所述语音流的情况下,向所述第一线程发送会话结束事件,其中,所述会话结束事件用于指示所述第一线程结束会话。
6.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述第一线程接收到会话结束指令的情况下,确定所述第二线程的执行状态;
在所述第二线程的执行状态为正在执行的情况下,向所述第二线程发送启动指令,其中,所述启动指令用于启动条件等待函数;
在检测到所述条件等待函数执行完毕且所述第二线程的执行状态为执行完毕的情况下,结束所述会话。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于所述会话请求,向所述第一线程发送目标回调事件,其中,所述目标回调事件用于指示所述第一线程执行初始化操作,所述初始化操作,包括:指定所述目标接口,创建连接请求句柄,其中,所述连接请求句柄用于与所述目标接口建立连接关系。
8.一种会话的实现系统,其特征在于,包括:软交换核心模块、语音捕获模块和语音识别服务器,其中,
所述软交换核心模块,用于接收会话请求,并响应于所述会话请求,分别创建第一线程和第二线程,基于所述第一线程和所述第二线程实现与所述语音识别服务器的会话,其中,所述会话请求用于请求与所述语音识别服务器建立会话,所述第一线程用于调用所述语音捕获模块进行语音捕获,所述第二线程用于连接目标接口,所述目标接口为所述语音识别服务器的语音识别服务接口。
9.一种会话的实现装置,其特征在于,包括:
接收模块,用于接收会话请求,其中,所述会话请求用于请求与语音识别服务器建立会话;
创建模块,用于响应于所述会话请求,分别创建第一线程和第二线程,其中,所述第一线程与所述第二线程并行执行,所述第一线程用于进行语音捕获,所述第二线程用于连接目标接口,所述目标接口为所述语音识别服务器的语音识别服务接口;
实现模块,用于基于所述第一线程和所述第二线程实现与所述语音识别服务器的会话。
10.一种非易失性存储介质,其特征在于,所述非易失性存储介质中存储有计算机程序,其中,在所述非易失性存储介质所在设备通过运行所述计算机程序执行权利要求1至7中任意一项所述的会话的实现方法。
11.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行权利要求1至7中任意一项所述的会话的实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311636026.0A CN117675888A (zh) | 2023-11-30 | 2023-11-30 | 会话的实现方法及装置、会话的实现系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311636026.0A CN117675888A (zh) | 2023-11-30 | 2023-11-30 | 会话的实现方法及装置、会话的实现系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117675888A true CN117675888A (zh) | 2024-03-08 |
Family
ID=90063437
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311636026.0A Pending CN117675888A (zh) | 2023-11-30 | 2023-11-30 | 会话的实现方法及装置、会话的实现系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117675888A (zh) |
-
2023
- 2023-11-30 CN CN202311636026.0A patent/CN117675888A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201944236A (zh) | 任務處理方法、裝置及系統 | |
CN107919994B (zh) | 实现网络服务双机热备的方法及服务器 | |
CN111246152B (zh) | 视频会议自动恢复方法及装置、存储介质、电子装置 | |
WO2019024679A1 (zh) | 网络功能的升级方法及升级管理实体 | |
EP4096259A1 (en) | Sim card sharing method and device, communication device and storage medium | |
CN108243222A (zh) | 服务器网络架构方法及装置 | |
CN101826967B (zh) | 数据卡及拨号上网方法 | |
CN113055225A (zh) | 网络故障分析数据的获取方法、终端及服务器 | |
CN109116832A (zh) | 车辆诊断数据无线通讯方法 | |
CN108259213A (zh) | Netconf会话状态检测方法和装置 | |
CN117439838B (zh) | 一种面向边缘计算网关主从机自适应快速组网方法 | |
JP4481639B2 (ja) | 構成を調整して実行するプロトコル | |
CN117675888A (zh) | 会话的实现方法及装置、会话的实现系统 | |
CN117336346A (zh) | 一种ippbx与pms对接状态转换方法、终端设备及介质 | |
CN113709142B (zh) | 一种热点配网方法、装置、智能终端及存储介质 | |
CN113037807B (zh) | 远程控制方法、装置、服务器及介质 | |
CN112925713B (zh) | 业务测试方法、装置、系统、存储介质和计算机设备 | |
WO2019237628A1 (zh) | 一种rcu掉线判断方法、系统、设备及计算机存储介质 | |
CN109981365A (zh) | 数据监听方法、装置、用户设备及存储介质 | |
CN114530939B (zh) | 一种两线集中供电的远程监控装置及方法 | |
CN107291383A (zh) | 一种嵌入式设备的数据交互方法及服务器 | |
CN109561081B (zh) | 移动终端视频会议方法、装置及存储介质、服务器 | |
CN115580612A (zh) | 一种高效网吧云化方法 | |
CN117098014A (zh) | 一种光线路终端与管理设备的控制连接方法及装置 | |
JP3678601B2 (ja) | 端末エミュレータ通信制御方法 |
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 |