发明内容
本发明提供了一种语音数据采集服务系统,能够降低采集装置的复杂性和维护难度,并提高采集装置的服务质量。
本发明还提供了一种语音数据采集服务方法,能够降低采集装置的复杂性和维护难度,并提高采集装置的服务质量。
本发明的技术方案是这样实现的:
一种语音数据采集服务系统,包括:
采集装置,用于采集语音采集数据,将所述语音采集数据发送至采集服务代理;
采集服务代理,用于接收来自一个以上采集装置的语音采集数据,将所述语音采集数据按照接收的先后顺序发送至数据采集服务器;
数据采集服务器,用于对来自采集服务代理的语音采集数据进行处理或存储。
上述系统可以进一步包括代理接口,所述代理接口分别与采集装置和采集服务代理连接;
所述采集装置将语音采集数据发送至代理接口,代理接口将接收到的语音采集数据转发至采集服务代理。
上述系统中,代理接口向采集装置提供采集服务代理的地址或端口信息、语音数据的采集比例或者采集到的语音类型信息;
采集装置根据代理接口提供的所述信息采集语音采集数据并发送至代理接口。
上述系统中,代理接口接收到语音采集数据后,按照预先设定的封装协议将所述语音采集数据封装为采集消息,将所述采集消息转发至采集服务代理;
所述语音采集数据包括语音数据和语音元数据;
所述采集消息包括采集数据类型字段、数据长度字段及序列化的语音数据和语音元数据。
上述系统中,所述采集服务代理建立与代理接口的连接,当监听到所述代理接口转发的采集消息时,接收所述采集消息,并将所述采集消息保存在消息队列中;
当消息队列中存在采集消息时,按照进入队列的先后顺序将队列中的采集消息依次发送至数据采集服务器,并将已发送的采集消息从消息队列中删除。
当所述消息队列中保存的采集消息的数量达到预先设定的队列长度时,如果采集服务代理再次收到代理接口转发的采集消息,则丢弃该采集消息。
上述系统中,数据采集服务器可以包括分发模块和针对不同采集数据类型的多个处理模块;
分发模块接收来自采集服务代理的采集消息,根据所述采集消息中的采集数据类型字段将所述采集消息分发至对应的处理模块;
处理模块按照预先设定的封装协议将所述采集消息解封装为语音采集数据,对所述语音采集数据进行处理,将所述语音采集数据中的语音数据和语音元数据分别进行存储,并通过文件路径将语音数据与相关的语音元数据关联。
一种语音数据采集服务方法,包括:
采集装置采集语音采集数据,将所述语音采集数据发送至采集服务代理;
采集服务代理接收来自一个以上采集装置的语音采集数据,将所述语音采集数据按照接收的先后顺序发送至数据采集服务器;
数据采集服务器对来自采集服务代理的语音采集数据进行处理或存储。
上述方法中,采集装置将语音采集数据发送至采集服务代理的方式可以为:采集装置将语音采集数据发送至代理接口,代理接口将接收到的语音采集数据转发至采集服务代理。
采集装置采集语音采集数据之前可以进一步包括:所述代理接口向采集装置提供采集服务代理的地址或端口信息、语音数据的采集比例或者采集到的语音类型信息;
所述采集装置根据代理接口提供的所述信息采集语音采集数据并发送至代理接口。
上述方法中,代理接口将接收到的语音采集数据转发至采集服务代理的方式可以为:按照预先设定的封装协议将所述语音采集数据封装为采集消息,将所述采集消息转发至采集服务代理;
所述语音采集数据包括语音数据和语音元数据;
所述采集消息包括采集数据类型字段、数据长度字段及序列化的语音数据和语音元数据。
上述方法中,采集服务代理接收来自一个以上采集装置的语音采集数据,将语音采集数据按照接收的先后顺序发送至数据采集服务器的方式可以为:采集服务代理建立与代理接口的连接,当监听到所述代理接口转发的采集消息时,接收所述采集消息,并将所述采集消息保存在消息队列中;
当消息队列中存在采集消息时,按照进入队列的先后顺序将队列中的采集消息依次发送至数据采集服务器,并将已发送的采集消息从消息队列中删除。
当所述消息队列中保存的采集消息的数量达到预先设定的队列长度时,如果采集服务代理再次收到代理接口转发的采集消息,则丢弃该采集消息。
上述方法中数据采集服务器对来自采集服务代理的语音采集数据进行处理或存储的方式可以为:
所述数据采集服务器中的分发模块接收来自采集服务代理的采集消息,根据所述采集消息中的采集数据类型字段将所述采集消息分发至对应的处理模块;
处理模块按照预先设定的封装协议将所述采集消息解封装为语音采集数据,对所述语音采集数据进行处理,将所述语音采集数据中的语音数据和语音元数据分别进行存储,并通过文件路径将语音数据与相关的语音元数据关联。
可见,本发明提出的语音数据采集服务系统和方法中,在语音采集服务器系统中设置了采集服务代理,形成三层的服务架构,将语音数据的采集工作从采集装置中剥离出来,由采集服务代理实现,从而降低了采集装置的复杂性和维护难度,并提高了采集装置的服务质量。
具体实施方式
本发明提出一种语音数据采集服务系统,如图1为该系统的结构示意图,该系统包括:
采集装置101,用于采集语音采集数据,将所述语音采集数据发送至采集服务代理102;
采集服务代理102,用于接收来自一个以上采集装置101的语音采集数据,将所述语音采集数据按照接收的先后顺序发送至数据采集服务器103;
数据采集服务器103,用于对来自采集服务代理102的语音采集数据进行处理或存储。
上述系统可以进一步包括代理接口104,代理接口104设置于采集装置101和采集服务代理102之间,分别与二者连接。采集装置101通过调用代理接口104将语音采集数据发送至和采集服务代理102。具体地,采集装置101将语音采集数据发送至代理接口104,代理接口104将接收到的语音采集数据转发至采集服务代理102。
上述系统中,代理接口104可以向采集装置101提供采集服务代理102的地址或端口信息、语音数据的采集比例或者采集到的语音类型信息;这样,采集装置101就可以根据代理接口104提供的上述信息采集语音采集数据并发送至代理接口104,并通过代理接口104转发至采集服务代理102。
上述系统中,可以由代理接口104完成语音采集数据的封装。具体地,代理接口104接收到语音采集数据后,按照预先设定的封装协议将所述语音采集数据封装为采集消息,将所述采集消息转发至采集服务代理102;
上述语音采集数据可以包括语音数据和语音元数据;
上述采集消息可以包括采集数据类型字段、数据长度字段及序列化的语音数据和语音元数据。
上述系统中,采集服务代理102在实现转发时,建立与代理接口104的连接,当监听到代理接口104转发的采集消息时,接收该采集消息,并将该采集消息保存在消息队列中;
当消息队列中存在采集消息时,按照进入队列的先后顺序将队列中的采集消息依次发送至数据采集服务器103,并将已发送的采集消息从消息队列中删除;
当所述消息队列中保存的采集消息的数量达到预先设定的队列长度时,如果采集服务代理102再次收到代理接口104转发的采集消息,则丢弃该采集消息。
上述系统中,数据采集服务器103可以包括分发模块和针对不同采集数据类型的多个处理模块;
分发模块接收来自采集服务代理102的采集消息,根据所述采集消息中的采集数据类型字段将所述采集消息分发至对应的处理模块;
处理模块按照预先设定的封装协议将所述采集消息解封装为语音采集数据,对所述语音采集数据进行处理,将所述语音采集数据中的语音数据和语音元数据分别进行存储,并通过文件路径将语音数据与相关的语音元数据关联。
以下结合附图,举具体的实施例详细介绍。
实施例一:
本实施例介绍语音数据采集服务系统的整体架构,如图2为本发明实施例一中基于采集服务代理(Agent)的语音数据采集服务系统结构示意图,该系统包括三层框架:第一层为采集层,包括采集装置,具体可以为语音采集端或语音处理单元。第二层为代理层,包括Agent。采集装置与Agent之间存在代理接口,由于可以同时为采集装置提供多种接口,故在本实施例中将采集装置与Agent之间的接口称为代理接口库(AgentLib)。第三层为存储管理层,包括数据采集服务器,数据采集服务器分别与Mysql数据库和NFS文件系统存在连接,将处理之后的语音元数据和语音数据分别存储在Mysql数据库和NFS文件系统中。以下对各个层次分别介绍。
采集层:
采集层由语音采集端或语音处理单元组成,其主要职责是采集语音采集数据(包括语音数据和语音元数据),并通过调用AgentLib将采集到的语音采集数据发送给Agent。借助于AgentLib,采集层可以方便地将语音采集数据发送给Agent,这简化了语音采集端和语音处理单元的实现。
代理层:
代理层由Agent组成,它的主要职责是将多个语音采集端或者语音处理单元发送过来的语音采集数据转发给数据采集服务进行相应的处理。Agent除了转发外,还负责控制采集层的采集速度。当采集过快了,通过丢掉部分语音采集数据来减少对采集端的性能影响。
存储管理层:
存储管理层由数据采集服务器组成,数据采集服务器根据语音采集数据的类型,对其进行相应的处理和存储。将语音元数据存储在Mysql数据库中,将语音数据作为文件存储在NFS文件系统中,并通过文件路径将二者关联起来。
数据采集服务器中包括针对几种数据类型的默认处理模块,当默认处理模块不能满足采集要求时,还可以包括其他定制处理模块,实现对其他类型语音采集数据的处理。
实施例二:
本实施例介绍AgentLib的具体功能。
AgentLib是语音采集端或语音处理单元与Agent之间的接口库,AgentLib向语音采集端或语音处理单元提供两种接口:第一种是数据发送接口,通过调用此接口,语音采集端或语音处理单元可以将语音采集数据发送给Agent。第二种是配制接口,通过配制接口可以实现对采集行为的控制。配制接口中常用的配制项有Agent的端口或地址信息,语音数据的采集比例,采集到的语音类型信息等。
为了减少对语音处理单元的影响,Agent可以和语音处理单元部署在同一台服务器中;这样,AgentLib就可通过域socket快速地将采集数据发送给Agent。
语音元数据通常是结构化的,通过开源的protobuf可以方便地完成对语音采集数据的序列化和反序列化。
AgentLib与Agent之间可以遵循固定的通信协议来实现语音采集数据的发送。AgentLib采用该协议将语音采集数据封装为采集消息,并将采集消息发送至Agent。
上述通信协议可以具体如下:
采集消息包括:采集数据类型字段(四个字节整型)+数据长度字段(四个字节整型)+protobuf序列化的语音元数据和语音数据
上述采集消息的封装由AgentLib来自动完成,这样可以简化接口的调用。
另外,当采集需求比较简单时,AgentLib可以集成到语音采集端或语音处理单元中。
实施例三:
本实施例介绍Agent的具体功能。
Agent可以采用非阻塞的server socket来实现与Agentlib的连接,可同时监听多个连接过来的Agentlib连接,完成对多个AgentLib发送过来的采集数据进行转发。
如图3为本发明实施例三中Agent的消息传递方式示意图。
Agent的监听socket监听来自AgentLib的连接socket,并把监听到的连接socket加入到自己的连接socket列表中,监听采集消息的到来。
当有新采集消息到来时,Agent将收到的采集消息插入到消息队列中。
当消息队列非空时,连接到数据采集服务器的socket从消息队列中提取采集消息,并发送给数据采集服务器处理。
为了减少对语音处理单元性能的影响,Agent采用定长的消息队列,当采集消息过多时自动丢弃采集消息,从而可以避免语音处理单元的等待。
实施例四:
本实施例介绍数据采集服务器。如图4为本发明实施例四中数据采集服务器的结构示意图。数据采集服务器可以包括分发模块和多个处理模块,每个处理模块对应不同类型的采集消息。文件操作模块和数据库操作模块可以作为共享模块,供不同的处理模块调用。
数据采集服务器采用插件的框架来实现,通过实现新的插件并将插件加入到配制文件可方便地对采集服务的功能进行拓展。
分发模块在采集服务启动时完成对配制文件的解析并加载配制中定义的插件,当接收到新的采集消息时,根据消息中的采集数据类型字段将采集消息分发至对应的处理模块,即调用采集数据类型所对应的处理模块进行处理。
数据采集服务器可以预先实现几种常见场景的采集任务对应的处理模块,满足常规的语音采集需求;当有特殊的采集需求时,语音处理单元与类型处理模块可以灵活地定义新的protobuf协议,通过实现新的类型处理模块来拓展原有数据采集服务器的功能。另外,如果仅需要支持少数几种类型,数据采集服务器也可以仅包括一个处理模块,该处理模块对多种类型的采集消息进行处理。
为了便于查找和管理,语音元数据可以存储在Mysql数据库中。为了突破单台存储机器的存储限制,语音数据可以作为文件存储在NFS中。
本发明还提出一种语音数据采集服务方法,如图5为该方法流程图,包括以下步骤:
步骤501:采集装置采集语音采集数据,将所述语音采集数据发送至采集服务代理;
步骤502:采集服务代理接收来自一个以上采集装置的语音采集数据,将所述语音采集数据按照接收的先后顺序发送至数据采集服务器;
步骤503:数据采集服务器对来自采集服务代理的语音采集数据进行处理或存储。
上述步骤501中,采集装置将语音采集数据发送至采集服务代理的方式可以为:采集装置将语音采集数据发送至代理接口,代理接口将接收到的语音采集数据转发至采集服务代理。
上述步骤501中,采集装置采集语音采集数据之前可以进一步包括:所述代理接口向采集装置提供采集服务代理的地址或端口信息、语音数据的采集比例或者采集到的语音类型信息;
这样,采集装置可以根据代理接口提供的所述信息采集语音采集数据并发送至代理接口。
上述方法中,代理接口将接收到的语音采集数据转发至采集服务代理的方式可以为:按照预先设定的封装协议将所述语音采集数据封装为采集消息,将所述采集消息转发至采集服务代理;
所述语音采集数据包括语音数据和语音元数据;
所述采集消息包括采集数据类型字段、数据长度字段及序列化的语音数据和语音元数据。
上述步骤502的具体方式可以为:
采集服务代理建立与代理接口的连接,当监听到所述代理接口转发的采集消息时,接收所述采集消息,并将所述采集消息保存在消息队列中;
当消息队列中存在采集消息时,按照进入队列的先后顺序将队列中的采集消息依次发送至数据采集服务器,并将已发送的采集消息从消息队列中删除。
进一步地,当所述消息队列中保存的采集消息的数量达到预先设定的队列长度时,如果采集服务代理再次收到代理接口转发的采集消息,则丢弃该采集消息。
上述步骤503中,数据采集服务器对来自采集服务代理的语音采集数据进行处理或存储的方式可以为:
数据采集服务器中的分发模块接收来自采集服务代理的采集消息,根据所述采集消息中的采集数据类型字段将所述采集消息分发至对应的处理模块;
处理模块按照预先设定的封装协议将所述采集消息解封装为语音采集数据,对所述语音采集数据进行处理,将所述语音采集数据中的语音数据和语音元数据分别进行存储,并通过文件路径将语音数据与相关的语音元数据关联。
综上所述,本发明提出的语音数据采集服务系统和方法,通过在语音采集服务器系统中设置Agent,形成三层的服务架构,将语音数据的采集工作从采集装置中剥离出来由Agent实现,从而降低了采集装置的复杂性和维护难度,并提高了采集装置的服务质量。Agent可以通过控制消息队列的长度,实现有效地控制语音采集的速度。将Agent部署在与被数据采集服务器相同的服务器上,可以采用域socket进行通信,从而缩短被采集系统的消息发送时间,减少对被采集系统的性能影响。将语音数据与语音元数据分开存储,便于查询和管理。数据采集服务器采用插件的框架,可以方便对采集服务的功能进行定制和拓展。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。