一种语音数据的存储方法和装置
技术领域
本发明涉及计算机处理技术领域,特别是涉及一种语音数据的存储方法和一种语音数据的存储装置。
背景技术
目前,移动互联网的快速发展带动了如手机、平板电脑、穿戴式设备等移动设备的广泛普及,而作为移动设备上人机交互最方便自然的方式之一,语音输入法正逐渐被广大用户所接受。
由于语音识别的技术较为复杂,通常语音识别服务部署在服务器,移动设备将语音数据发送到服务器之后再进行识别。
很多情况下需要根据线上的识别结果对问题进行分析和定位,需要一定的实时性,因此,语音识别服务通常将语音数据直接写入数据库。
因为网络存在比较多的不确定性,如果在存储异常时需要将语音数据重传,容错等机制会使得语音识别服务变得复杂,而且耦合度高,不利于语音识别服务的维护和扩展。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种语音数据的存储方法和相应的一种语音数据的存储装置。
依据本发明的一个方面,提供了一种语音数据的存储方法,包括:
当接收到语音数据时,将所述语音数据转换为日志文件;
通过日志收集系统收集所述日志文件、转发至流处理系统;
由流处理系统将所述日志文件写入存储系统。
可选地,所述日志收集系统包括部署在语音识别服务中的客户端、第一消息队列、本地服务,以及,部署在语音识别服务之外的第二消息队列和中心服务;
所述通过日志收集系统收集所述日志文件、转发至流处理系统的步骤包括:
由所述客户端收集所述日志文件,将所述日志文件写入第一消息队列中;
将所述第一消息队列中的日志文件传输至所述本地服务;
由所述本地服务将所述日志文件发送至所述第二消息队列;
将所述第二消息队列中的日志文件传输至所述中心服务;
由所述中心服务将所述日志文件发送至流处理系统。
可选地,所述由所述本地服务将所述日志文件发送至所述第二消息队列的步骤包括:
当网络异常时,由所述本地服务将所述日志文件写入缓存;
当网络恢复正常时,将缓存的日志文件发送至所述第二消息队列。
可选地,所述由所述中心服务将所述日志文件发送至流处理系统的步骤包括:
当网络异常时,由所述中心服务将所述日志文件写入缓存;
当网络恢复正常时,将缓存的日志文件发送至流处理系统。
可选地,所述流处理系统包括流式服务、第三消息队列、数据源组件、数据处理组件;
所述由流处理系统将所述日志文件写入存储系统的步骤包括:
由所述流式服务接收日志文件,将所述日志文件传输至第三消息队列;
将所述第三消息队列中的日志文件发送至数据源组件;
由所述数据源组件将所述日志文件传输至所述数据处理组件;
由所述数据处理组件将所述日志文件中的语音数据切分成一个或多个字段,将切分后的日志文件写入存储系统。
可选地,所述由流处理系统将所述日志文件写入存储系统的步骤还包括:
由所述数据处理组件向所述流式服务反馈应答消息;
当所述应答消息包括存储超时或存储失败时,由所述流式服务通知所述数据源组件,重新将存储超时或存储失败的日志文件至所述数据处理组件。
可选地,所述日志文件中具有语音数据的数据标识;
所述由所述数据处理组件将所述日志文件中的语音数据切分成一个或多个字段,将切分后的日志文件写入存储系统的步骤包括:
由所述数据处理组件将所述日志文件中的语音数据切分成第一字段和第二字段,所述第一字段为所述语音数据的数据内容,所述第二字段为日志文件中除所述语音数据的数据内容之外的属性信息;
以所述数据标识为键、以所述第一字段、所述第二字段为值写入存储系统。
可选地,还包括:
由语音识别服务对所述语音数据进行语音识别,获得文本信息;
返回所述文本信息。
根据本发明的另一方面,提供了一种语音数据的存储装置,包括:
语音数据转换模块,适于当接收到语音数据时,将所述语音数据转换为日志文件;
日志文件收集模块,适于通过日志收集系统收集所述日志文件、转发至流处理系统;
日志文件存储模块,适于由流处理系统将所述日志文件写入存储系统。
可选地,所述日志收集系统包括部署在语音识别服务中的客户端、第一消息队列、本地服务,以及,部署在语音识别服务之外的第二消息队列和中心服务;
所述日志文件收集模块还适于:
由所述客户端收集所述日志文件,将所述日志文件写入第一消息队列中;
将所述第一消息队列中的日志文件传输至所述本地服务;
由所述本地服务将所述日志文件发送至所述第二消息队列;
将所述第二消息队列中的日志文件传输至所述中心服务;
由所述中心服务将所述日志文件发送至流处理系统。
可选地,所述日志文件收集模块还适于:
当网络异常时,由所述本地服务将所述日志文件写入缓存;
当网络恢复正常时,将缓存的日志文件发送至所述第二消息队列。
可选地,所述日志文件收集模块还适于:
当网络异常时,由所述中心服务将所述日志文件写入缓存;
当网络恢复正常时,将缓存的日志文件发送至流处理系统。
可选地,所述流处理系统包括流式服务、第三消息队列、数据源组件、数据处理组件;
所述日志文件存储模块还适于:
由所述流式服务接收日志文件,将所述日志文件传输至第三消息队列;
将所述第三消息队列中的日志文件发送至数据源组件;
由所述数据源组件将所述日志文件传输至所述数据处理组件;
由所述数据处理组件将所述日志文件中的语音数据切分成一个或多个字段,将切分后的日志文件写入存储系统。
可选地,所述日志文件存储模块还适于:
由所述数据处理组件向所述流式服务反馈应答消息;
当所述应答消息包括存储超时或存储失败时,由所述流式服务通知所述数据源组件,重新将存储超时或存储失败的日志文件至所述数据处理组件。
可选地,所述日志文件中具有语音数据的数据标识;
所述日志文件存储模块还适于:
由所述数据处理组件将所述日志文件中的语音数据切分成第一字段和第二字段,所述第一字段为所述语音数据的数据内容,所述第二字段为日志文件中除所述语音数据的数据内容之外的属性信息;
以所述数据标识为键、以所述第一字段、所述第二字段为值写入存储系统。
可选地,还包括:
语音识别识别模块,适于由语音识别服务对所述语音数据进行语音识别,获得文本信息;
文本信息返回模块,适于返回所述文本信息。
在本发明实施例通过日志收集系统收集由语音数据转换的日志文件、通过流处理系统将日志文件实时写入存储系统,实现将语音数据的实时收集,并独立于语音数据的语音识别,减少对线上语音识别服务的影响,避免将容错等机制融入语音识别服务中,降低语音识别服务的复杂度,降低耦合度,便于语音识别服务的维护和扩展。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种语音数据的存储方法实施例1的步骤流程图;
图2示出了根据本发明一个实施例的一种日志收集系统的结构示意图;
图3示出了根据本发明一个实施例的一种流处理系统的结构示意图;
图4示出了根据本发明一个实施例的一种语音数据的存储方法实施例2的步骤流程图;
图5示出了根据本发明一个实施例的一种语音数据的存储装置实施例1的结构框图;以及
图6示出了根据本发明一个实施例的一种语音数据的存储装置实施例2的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
参照图1,示出了根据本发明一个实施例的一种语音数据的存储方法实施例1的步骤流程图,具体可以包括如下步骤:
步骤101,当接收到语音数据时,将所述语音数据转换为日志文件;
需要说明的是,本发明实施例可以应用在语音服务平台中,其实质为服务器集群,如分布式系统。
因为语音流的存取处理涉及海量数据,并且需要满足分布式收集、支持容错、同时查询快速方便,因此,在本发明实施例中,通过日志收集系统收集由语音数据转换的日志文件、通过流处理系统将日志文件实时写入存储系统。
该语音服务平台可以为各种移动设备提供语音识别服务,该移动设备可以包括手机、平板电脑、个人数字助理、穿戴设备(如眼镜、手表等)等等,一般配置有麦克风等声卡设备,用于采集用户说话时的语音数据。
此外,该移动设备的操作系统可以包括Android(安卓)、IOS、Windows Phone、Windows等等,通常可以支持各种应用的运行,如浏览器、搜索引擎客户端、输入法应用等等,这些应用可以调用麦克风等声卡设备,读取语音数据,并上传至语音服务平台,进行语音识别。
其中,移动设备可以通过WIFI(Wireless Fidelity,短程无线传输技术)、蓝牙、无线网络通讯(例如通用分组无线服务技术GPRS、第三代移动通信技术3G、第四代移动通信技术4G等等)等无线网络与语音服务平台建立无线连接,也可以通过网线、USB(UniversalSerial Bus,通用串行总线)等有线网络与语音服务平台建立有线连接,并发送语音数据,等等,本发明实施例对此不加以限制。
若语音服务平台接收到语音数据,则可以为该语音数据生成唯一的数据标识—UUID。
由于日志收集系统提供的输入接口是文件,为了兼容日志收集系统的输入,可以将语音数据进行base64编码等方式转换为文本,连同UUID写本地的日志文件。
步骤102,通过日志收集系统收集所述日志文件、转发至流处理系统;
一个大型的分布式系统(如语音服务平台)生成的日志文件的数量是巨大的,所以,一般配置一个有效的工具对其进行管理。
在本发明实施例中,该有效的工具为日志收集系统,其可以用于从各种日志源上收集日志文件,通过流处理系统,将日志文件存储到一个中央存储系统(如NFS(NetworkFile System,网络文件系统)、HBase等)上,以便于进行集中统计分析处理。
在本发明的一种可选实施例中,该日志收集系统可以为Scribe。
总的来说,Scribe由两部分组成:Central Server和Local Server。在分布式系统中,每个结点都会有一个Local Server运行在上面,收集此结点的日志文件,并将其发送给Central Server。
需要说明的是,这里的Central和Local是相对的,是针对一个组内的。
如图2所示,日志收集系统Scribe可以包括部署在语音识别服务中的客户端、第一消息队列、本地服务Local Server,以及,部署在语音识别服务之外的第二消息队列和中心服务Center Server。
在收集、传输日志文件时,可以由客户端收集日志文件,将日志文件写入第一消息队列中。
将第一消息队列中的日志文件传输至本地服务Local Server,由本地服务LocalServer将日志文件发送至第二消息队列。
进而,可以将第二消息队列中的日志文件传输至中心服务Center Server,由中心服务Center Server将日志文件发送至流处理系统。
其中,第一消息队列和第二消息队列的传输机制可以保证日志文件在发送过程中不会丢失,同时,本地服务Local Server和中心服务Center Server都具有缓存机制,在网络不可用时先将日志文件缓存,等待网络可用时再统一发送,这样保证日志文件在Server层面不会丢失。
具体而言,当网络异常时,由本地服务Local Server将日志文件写入缓存,当网络恢复正常时,将缓存的日志文件发送至第二消息队列。
此外,当网络异常时,由中心服务Center Server将日志文件写入缓存,当网络恢复正常时,将缓存的日志文件发送至流处理系统。
当然,除了Scribe之外,还可以设置其他日志收集系统,如Kafka、Flume、TimeTunnel、Chukwa等等,本发明实施例对此不加以限制。
步骤103,由流处理系统将所述日志文件写入存储系统。
在语音服务平台中,很多情况下需要根据线上的语音数据的识别结果对问题进行分析和定位,需要一定的实时性,因此,设计为流式的存储。
在本发明实施例中,流式的存储应用在流处理系统,其可以在流数据不断变化的运动过程中实时地对日志文件进行格式化,并存储至存储系统。
在本发明的一种可选实施例中,流处理系统可以为Storm。
Storm是一个分布式的、容错的实时计算系统,可用于处理消息和更新数据库(流处理),在数据流上进行持续查询,并以流的形式返回结果到客户端(持续计算),并行化一个类似实时查询的热点查询(分布式的RPC)。
如图3所示,流处理系统Storm包括流式服务drpc server、第三消息队列、数据源组件spout、数据处理组件bolt;
在存储日志文件时,由流式服务drpc server接收日志收集系统(如Scribe)发送的日志文件,并将日志文件传输至第三消息队列。
进而,可以将第三消息队列中的日志文件发送至数据源组件spout;
由数据源组件spout将日志文件传输至数据处理组件bolt;
由数据处理组件bolt根据“\t”将日志文件中的语音数据切分成一个或多个字段,将切分后的日志文件写入存储系统。
其中,第三消息队列的传输机制可以保证日志文件在发送过程中不会丢失,同时,流式服务drpc server负责控制超时,对于超时请求或写失败的情况,流式服务drpcserver会控制数据处理组件spout重新处理一遍请求。
具体而言,在日志文件写入存储系统之后,由数据处理组件bolt向流式服务drpcserver反馈应答消息;
当该应答消息包括存储超时或存储失败时,由流式服务drpc server通知数据源组件spout,重新将存储超时或存储失败的日志文件至数据处理组件bolt,再次将日志文件中的语音数据切分成一个或多个字段,将切分后的日志文件写入存储系统。
在本发明实施例中,日志文件中具有语音数据的数据标识UUID,在存储日志文件时,可以由数据处理组件bolt将日志文件中的语音数据切分成第一字段和第二字段。
其中,第一字段为语音数据的数据内容,第二字段为日志文件中除语音数据的数据内容之外的属性信息。
进而,以数据标识UUID为键key、以第一字段、第二字段作为值value写入存储系统。
当然,除了Storm之外,还可以设置其他流处理系统,如S4、Puma等等,本发明实施例对此不加以限制。
在本发明的一种可选实施例中,存储系统可以为分布式存储系统,如HBase。
HBase是一个非关系(NoSQL)的可伸缩性分布式数据库,它是面向列的,并适合于存储超大型松散数据。
HBase适合于实时,随机对大数据进行读写操作的业务环境。
在本发明实施例通过日志收集系统收集由语音数据转换的日志文件、通过流处理系统将日志文件实时写入存储系统,实现将语音数据的实时收集,并独立于语音数据的语音识别,减少对线上语音识别服务的影响,避免将容错等机制融入语音识别服务中,降低语音识别服务的复杂度,降低耦合度,便于语音识别服务的维护和扩展。
参照图4,示出了根据本发明一个实施例的一种语音数据的存储方法实施例2的步骤流程图,具体可以包括如下步骤:
步骤401,当接收到语音数据时,将所述语音数据转换为日志文件;
步骤402,通过日志收集系统收集所述日志文件、转发至流处理系统;
步骤403,由流处理系统将所述日志文件写入存储系统;
步骤404,由语音识别服务对所述语音数据进行语音识别,获得文本信息;
步骤405,返回所述文本信息。
在本发明实施例中,若语音服务平台接收到语音数据,则可以异步对语音数据进行实时的存储及语音识别。
在实际应用中,在语音服务平台提供的语音识别服务通过语音识别技术(Automatic Speech Recognition,ASR),将用户的语音中的词汇内容(即语音数据)转换为计算机可读的输入(即文本信息)。
目前,大词汇量语音识别系统多采用统计模式识别技术,一种统计模式识别方法的语音识别系统由以下几个基本模块所构成:
1、信号处理及特征提取模块;该模块的主要任务是从语音数据中提取特征,供声学模型处理。同时,它一般也包括了一些信号处理技术,以尽可能降低环境噪声、信道、说话人等因素对特征造成的影响。
2、声学模型;语音识别系统多采用基于一阶隐马尔科夫模型进行建模。
3、发音词典;发音词典包含语音识别系统所能处理的词汇集及其发音。发音词典实际提供了声学模型与语言模型的映射。
4、语言模型;语言模型对语音识别系统所针对的语言进行建模。理论上,包括正则语言,上下文无关文法在内的各种语言模型都可以作为语言模型,但目前各种系统普遍采用的还是基于统计的N元文法及其变体。
5、解码器;解码器是语音识别系统的核心之一,其任务是对输入的信号,根据声学、语言模型及词典,寻找能够以最大概率输出该信号的词串。从数学角度可以更加清楚的了解上述模块之间的关系。
在语音识别服务中,对于每个识别的文本信息可以具有一个评分,该评分越高,表示越有可能是语音数据所表达的内容。
当识别文本信息之后,可以按照评分对文本信息进行排序,并将排序之后的文本信息返回移动设备进行展示。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图5,示出了根据本发明一个实施例的一种语音数据的存储装置实施例1的结构框图,具体可以包括如下模块:
语音数据转换模块501,适于当接收到语音数据时,将所述语音数据转换为日志文件;
日志文件收集模块502,适于通过日志收集系统收集所述日志文件、转发至流处理系统;
日志文件存储模块503,适于由流处理系统将所述日志文件写入存储系统。
在本发明的一种可选实施例中,所述日志收集系统可以包括部署在语音识别服务中的客户端、第一消息队列、本地服务,以及,部署在语音识别服务之外的第二消息队列和中心服务;
所述日志文件收集模块502还可以适于:
由所述客户端收集所述日志文件,将所述日志文件写入第一消息队列中;
将所述第一消息队列中的日志文件传输至所述本地服务;
由所述本地服务将所述日志文件发送至所述第二消息队列;
将所述第二消息队列中的日志文件传输至所述中心服务;
由所述中心服务将所述日志文件发送至流处理系统。
在本发明的一种可选实施例中,所述日志文件收集模块502还可以适于:
当网络异常时,由所述本地服务将所述日志文件写入缓存;
当网络恢复正常时,将缓存的日志文件发送至所述第二消息队列。
在本发明的一种可选实施例中,所述日志文件收集模块502还可以适于:
当网络异常时,由所述中心服务将所述日志文件写入缓存;
当网络恢复正常时,将缓存的日志文件发送至流处理系统。
在本发明的一种可选实施例中,所述流处理系统可以包括流式服务、第三消息队列、数据源组件、数据处理组件;
所述日志文件存储模块503还可以适于:
由所述流式服务接收日志文件,将所述日志文件传输至第三消息队列;
将所述第三消息队列中的日志文件发送至数据源组件;
由所述数据源组件将所述日志文件传输至所述数据处理组件;
由所述数据处理组件将所述日志文件中的语音数据切分成一个或多个字段,将切分后的日志文件写入存储系统。
在本发明的一种可选实施例中,所述日志文件存储模块503还可以适于:
由所述数据处理组件向所述流式服务反馈应答消息;
当所述应答消息包括存储超时或存储失败时,由所述流式服务通知所述数据源组件,重新将存储超时或存储失败的日志文件至所述数据处理组件。
在本发明的一种可选实施例中,所述日志文件中可以具有语音数据的数据标识;
所述日志文件存储模块503还可以适于:
由所述数据处理组件将所述日志文件中的语音数据切分成第一字段和第二字段,所述第一字段为所述语音数据的数据内容,所述第二字段为日志文件中除所述语音数据的数据内容之外的属性信息;
以所述数据标识为键、以所述第一字段、所述第二字段为值写入存储系统。
参照图6,示出了根据本发明一个实施例的一种语音数据的存储装置实施例2的结构框图,具体可以包括如下模块:
语音数据转换模块601,适于当接收到语音数据时,将所述语音数据转换为日志文件;
日志文件收集模块602,适于通过日志收集系统收集所述日志文件、转发至流处理系统;
日志文件存储模块603,适于由流处理系统将所述日志文件写入存储系统。
语音识别识别模块604,适于由语音识别服务对所述语音数据进行语音识别,获得文本信息;
文本信息返回模块605,适于返回所述文本信息。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的语音数据的存储设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。