用于获取节目信息的处理方法和系统转让专利

申请号 : CN201510303031.9

文献号 : CN104935950B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李世龙宋辉谢延唐海员

申请人 : 百度在线网络技术(北京)有限公司

摘要 :

本发明提出一种用于获取节目信息的处理方法和系统,该用于获取节目信息的处理方法包括获取识别模型,所述识别模型是对接收的特征数据进行训练后得到的,所述特征数据是根据音频数据得到的,所述音频数据是从源数据流中获取的;接收要识别的特征数据,并根据所述识别模型对所述要识别的特征数据进行识别,得到识别结果,所述要识别的特征数据是根据要识别的音频数据得到的。该方法能够实现系统根据音频数据主动得到识别结果,降低对用户的依赖,提高效率和准确度。

权利要求 :

1.一种用于获取节目信息的处理方法,其特征在于,包括:

服务端通过设置于所述服务端的解码器获取识别模型,所述识别模型是所述解码器对接收的特征数据进行训练后得到的,所述特征数据是根据音频数据得到的,所述音频数据是从源数据流中获取的,其中,当所述解码器根据所在地理位置形成解码器群时,所述解码器群内的多个解码器位于同一个子网络下,所述解码器从自身节点,和/或,其他节点获取所述识别模型;

服务端接收用户设备发送的要识别的特征数据,并根据所述解码器通过所述识别模型对所述要识别的特征数据进行识别,得到识别结果,所述要识别的特征数据是根据要识别的音频数据得到的;

其中,当所述源数据流是电视信号对应的传输流时,所述特征数据是电视台侧设备对所述音频数据进行特征提取后得到的,所述音频数据是电视台侧设备接收电视台实时发送的电视信号对应的传输流,并从所述传输流中提取出的,其中,对所述音频数据进行特征提取得到所述特征数据的方法包括:对所述音频数据进行短时FFT,得到所述音频数据对应的频域数据;

根据预设的压缩算法,对所述频域数据进行转换,得到基础音阶特征数据,其中,所述预设的压缩算法是基于音符的频率归一化算法;

根据预设的统计算法,对所述基础音阶特征数据进行转换,得到比特特征数据;

所述方法还包括:

服务端根据所述识别结果进行搜索,获取所述识别结果对应的节目信息。

2.根据权利要求1所述的方法,其特征在于,当所述源数据流是电视信号对应的传输流时,所述方法还包括:电视台侧设备接收电视台实时发送的电视信号对应的传输流,并从所述传输流中提取出音频数据;

电视台侧设备对所述音频数据进行特征提取,获取所述特征数据。

3.根据权利要求1所述的方法,其特征在于,所述识别模型是从自身节点获取的,或者,从备份节点获取的,所述识别模型是采用如下方式获取的:获取预设帧数的特征数据,并将所述预设帧数的特征数据组成一个索引段;

记录每个索引段的信息,并将所有索引段的信息组成识别模型。

4.根据权利要求1所述的方法,其特征在于,还包括:

对要识别的音频数据进行录制,并对录制后的音频数据进行特征提取,获取所述要识别的特征数据。

5.根据权利要求1所述的方法,其特征在于,所述根据所述识别模型对所述要识别的特征数据进行识别,得到识别结果,包括:将所述要识别的特征数据划分为查询段,其中,所述查询段包括:原始查询段,或,时移查询段,当所述要识别的音频数据与训练时对应的音频数据不同步时,所述查询段为将所述原始查询段进行时移后得到的所述时移查询段;

依次判断所述查询段与所述识别模型中每个索引段中相同维度上的值是否均为预设值,如果是,则在初始匹配值的基础上加一,以计算出所述查询段与所述识别模型中每个索引段之间的匹配值,并根据所述匹配值确定出识别结果。

6.一种获取节目信息的系统,其特征在于,包括服务端的解码器,所述解码器包括:训练模块,用于获取识别模型,所述识别模型是对接收的特征数据进行训练后得到的,所述特征数据是根据音频数据得到的,所述音频数据是从源数据流中获取的,其中,当所述解码器根据所在地理位置形成解码器群时,所述解码器群内的多个解码器位于同一个子网络下,所述解码器从自身节点,和/或,其他节点获取所述识别模型;

识别模块,用于接收用户设备发送的要识别的特征数据,并根据所述识别模型对所述要识别的特征数据进行识别,得到识别结果,所述要识别的特征数据是根据要识别的音频数据得到的;

其中,当所述源数据流是电视信号对应的传输流时,所述特征数据是电视台侧设备对所述音频数据进行特征提取后得到的,所述音频数据是电视台侧设备接收电视台实时发送的电视信号对应的传输流,并从所述传输流中提取出的,其中,所述电视台侧设备对所述音频数据进行特征提取得到所述特征数据包括:对所述音频数据进行短时FFT,得到所述音频数据对应的频域数据;

根据预设的压缩算法,对所述频域数据进行转换,得到基础音阶特征数据,其中,所述预设的压缩算法是基于音符的频率归一化算法;

根据预设的统计算法,对所述基础音阶特征数据进行转换,得到比特特征数据;

所述系统还包括:

服务端的识别前端模块,用于根据所述识别结果进行搜索,获取所述识别结果对应的节目信息。

7.根据权利要求6所述的系统,其特征在于,当所述源数据流是电视信号对应的传输流时,所述系统还包括电视台侧设备,所述电视台侧设备包括:音频数据提取模块,用于接收电视台实时发送的电视信号对应的传输流,并从所述传输流中提取出音频数据;

特征数据提取模块,用于对所述音频数据进行特征提取,获取所述特征数据。

8.根据权利要求6所述的系统,其特征在于,所述训练模块具体用于:获取预设帧数的特征数据,并将所述预设帧数的特征数据组成一个索引段;

记录每个索引段的信息,并将所有索引段的信息组成识别模型。

9.根据权利要求6所述的系统,其特征在于,还包括:

应用模块,用于对要识别的音频数据进行录制,并对录制后的音频数据进行特征提取,获取所述要识别的特征数据。

10.根据权利要求6所述的系统,其特征在于,所述识别模块具体用于:将所述要识别的特征数据划分为查询段,其中,所述查询段包括:原始查询段,或,时移查询段,当所述要识别的音频数据与训练时对应的音频数据不同步时,所述查询段为将所述原始查询段进行时移后得到的所述时移查询段;

依次判断所述查询段与所述识别模型中每个索引段中相同维度上的值是否均为预设值,如果是,则在初始匹配值的基础上加一,以计算出所述查询段与所述识别模型中每个索引段之间的匹配值,并根据所述匹配值确定出识别结果。

说明书 :

用于获取节目信息的处理方法和系统

技术领域

[0001] 本发明涉及数据处理技术领域,尤其涉及一种用于获取节目信息的处理方法和系统。

背景技术

[0002] 用户如果需要获取电视台节目信息时,可以通过搜索引擎搜索电视节目信息,或者到相关电视台官网浏览电视节目信息等。
[0003] 但是,这些方式都需要用户首先判断出要搜索的电视台,再查询相应的节目信息,主要依赖用户的判断和输入。

发明内容

[0004] 本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
[0005] 为此,本发明的一个目的在于提出一种用于获取节目信息的处理方法,该方法可以实现系统根据音频数据主动得到识别结果,降低对用户的依赖,提高效率和准确度。
[0006] 本发明的另一个目的在于提出一种用于获取节目信息的处理系统。
[0007] 为达到上述目的,本发明第一方面实施例提出的用于获取节目信息的处理方法,包括:获取识别模型,所述识别模型是对接收的特征数据进行训练后得到的,所述特征数据是根据音频数据得到的,所述音频数据是从源数据流中获取的;接收要识别的特征数据,并根据所述识别模型对所述要识别的特征数据进行识别,得到识别结果,所述要识别的特征数据是根据要识别的音频数据得到的。
[0008] 本发明第一方面实施例提出的用于获取节目信息的处理方法,通过获取识别模型,并根据识别模型获取识别结果,可以实现系统根据音频数据主动得到识别结果,降低对用户的依赖,提高效率和准确度。
[0009] 为达到上述目的,本发明第二方面实施例提出的用于获取节目信息的处理系统,包括解码器,所述解码器包括:训练模块,用于获取识别模型,所述识别模型是对接收的特征数据进行训练后得到的,所述特征数据是根据音频数据得到的,所述音频数据是从源数据流中获取的;识别模块,用于接收要识别的特征数据,并根据所述识别模型对所述要识别的特征数据进行识别,得到识别结果,所述要识别的特征数据是根据要识别的音频数据得到的。
[0010] 本发明第二方面实施例提出的用于获取节目信息的处理系统,通过获取识别模型,并根据识别模型获取识别结果,可以实现系统根据音频数据主动得到识别结果,降低对用户的依赖,提高效率和准确度。
[0011] 本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

[0012] 本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
[0013] 图1是本发明一实施例提出的用于获取节目信息的处理方法的流程示意图;
[0014] 图2是本发明实施例中获取节目信息的系统结构示意图;
[0015] 图3是本发明另一实施例提出的用于获取节目信息的处理方法的流程示意图;
[0016] 图4是本发明实施例中特征提取的流程示意图;
[0017] 图5是本发明实施例中频域图的示意图;
[0018] 图6是本发明实施例中chroma域的示意图;
[0019] 图7是本发明实施例中比特图的示意图;
[0020] 图8是本发明实施例中训练流程的示意图;
[0021] 图9是本发明实施例中识别流程的示意图;
[0022] 图10是本发明另一实施例提出的用于获取节目信息的处理系统的结构示意图;
[0023] 图11是本发明另一实施例提出的用于获取节目信息的处理系统的结构示意图。

具体实施方式

[0024] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的模块或具有相同或类似功能的模块。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
[0025] 图1是本发明一实施例提出的用于获取节目信息的处理方法的流程示意图,该方法包括:
[0026] S11:获取识别模型,所述识别模型是对接收的特征数据进行训练后得到的,所述特征数据是根据音频数据得到的,所述音频数据是从源数据流中获取的。
[0027] 本发明实施例中,以识别电视台为例,相应的,节目信息是指电视台的节目信息,节目信息例如节目单等。可以理解的是,本发明实施例的方法也可以应用到其他基于音频的识别领域,例如也可以用于识别仅存在音频数据的电台,进而获取电台的节目单等。
[0028] 本发明实施例中,用于电视台识别的装置位于服务端,该装置可以称为解码器(decoder)。解码器可以基于识别模型,识别要识别的音频数据来自的电视台。
[0029] 一个实施例中,为了提高可靠性,解码器可以采用备份方式,相应的,多个解码器可以组成解码器集群。进一步的,可以在不同的地理区域上设置不同的解码器集群。例如,参见图2,对应北京地区设置一个解码器集群21,对应杭州地区设置另一个解码器集群22,每个解码器集群内包括多个解码器,多个是指至少两个。为了保证实时性,降低延时,同一个解码器集群内的多个解码器位于同一个子网下,例如位于同一个子网下的同一个物理机房内。
[0030] 由于可以采用备份方式,因此,所述获取识别模型,包括:
[0031] 从自身节点获取识别模型,所述识别模型是自身节点对接收的特征数据进行训练后得到的;或者,
[0032] 从备份节点获取识别模块,所述识别模型是备份节点对接收的特征数据进行训练后得到的。
[0033] 可以理解的是,备份节点可以是专门用于获取并存储识别模型的节点,该备份节点可以不用于识别,或者,备份节点可以与普通节点相同,可以用于获取识别模型以及用于识别。以一个解码器可以作为其他解码器的备份节点为例,当需要从备份节点获取识别模型时,不同解码器可以相互通信,获取其他解码器是否可用或者负载情况等,以确定用于提供识别模型的备份节点。
[0034] 识别模型是解码器对接收的特征数据进行训练后得到的。
[0035] 以电视台的识别为例,参见图3,另一实施例中,该方法还可以包括:
[0036] S31:接收电视台实时发送的电视信号对应的传输流,并从所述传输流中提取出音频数据;
[0037] S32:对所述音频数据进行特征提取,获取所述特征数据。
[0038] 参见图2,在每个电视台的机房内,可以设置音频数据提取模块23和特征数据提取模块24。
[0039] 音频数据提取模块23接收电视台实时发送的电视信号对应的传输流(Transport Stream,TS),并从所述传输流中提取出音频数据。音频数据例如为高级音频编码(Advanced Audio Coding,AAC或者ACC)数据。其中,TS中的视频数据和音频数据可以具有不同的标识信息,从而根据标识信息提取出音频数据。
[0040] 电视台与音频数据提取模块之间可以采用用户数据报协议(User Datagram Protocol,UDP)进行通信。例如,电视台对外开放一个UDP端口,电视台通过该UDP端口将TS实时输入到音频数据提取模块。
[0041] 特征数据提取模块24对所述音频数据进行特征提取,获取所述特征数据。
[0042] 本实施例中,音频数据提取模块和特征数据提取模块可以位于同一个物理设备内。
[0043] 由于音频数据的数据量较大,为了降低数据量可以对音频数据进行特征提取,得到数据量较小的特征数据。当然,可以理解的是,如果不考虑数据量等问题,用于识别模型训练的特征数据也可以是音频数据本身。
[0044] 一个实施例中,参见图4,所述对所述音频数据进行特征提取,获取所述特征数据,包括:
[0045] S41:对所述音频数据进行短时快速傅氏变换(Fast Fourier Transformation,FFT),得到所述音频数据对应的频域数据。
[0046] 可以理解的是,在进行特征提取之前,可以将从TS中提取的ACC音频数据进行转换,转换为其他形式的音频数据,以方便处理。本实施例中,假设在提取出ACC音频数据后,先将ACC音频数据转换为脉冲编码调制(Pulse Code Modulation,PCM)音频数据。
[0047] 例如,以每帧(通常是0.032秒)为单位,对ACC音频数据进行采样和量化后,得到一帧的PCM音频数据。PCM音频数据的采样率和量化位数是可设置的,例如,采样率是16KHz,量化位数是16b。在将ACC音频数据转换为PCM音频数据后,可以将PCM音频数据存储在队列中,等待特征提取。因此,进行特征提取的音频数据可以具体是指以每帧为单位的PCM音频数据。
[0048] 在进行特征提取时,可以先对音频数据进行短时FFT,短时FFT是指在音频数据上乘以时间窗,将音频数据分为多个时间段的音频数据,并对每个时间段的音频数据进行FFT。其中,时间窗可以根据实际情况设置,使得每个时间段的音频数据是短时平稳信号。
[0049] 经过频域转换,可以得到如图5所示的频域图,其中,横轴表示时间,纵轴表示频率。
[0050] S42:根据预设的压缩算法,对所述频域数据进行转换,得到基础音色(chroma)特征数据。
[0051] 电视信号中音频信号的种类繁多,包括语音、歌曲、各种配乐、声效等,这些音频信号都属于短时平稳信号,而且是按照既定的频率来呈现的,在不同的频率之间有着既定的关系。因此,在频谱图中,不同的音高(pitch)不是随机的,而是具有很大的相关性。这也说明频谱图中存在很多冗余信息,可以对频谱进行压缩,减少存贮空间。
[0052] 本实施例中,预设的压缩算法是基于音符(midi note)的频率归一化算法,以实现对频谱的压缩。
[0053] 在midi note中,每个音阶(octave)有12个半音(semitone),相邻的octave的比值是2。把FFT频谱压缩到一个octave中,产生12维的chroma特征数据。例如:把A4(440Hz),A5(880Hz),A6(1760Hz),A7(3520Hz)的对应的FFT频段谱加在一起产生一个midi note段的谱。这样的操作在一定程度上提高了抗噪声干扰能力,因为噪声或其他的滤波处理,可能会影响某一个octave段的频谱,即它会影响所有的在这个段内的midi note频谱,但其他没受影响的octave段还会提供信息。
[0054] 采用基于midi note的频率归一化算法对频域数据进行处理后,可以得到如图6所示的chroma域图,其中,横轴表示时间,纵轴表示chroma特征数据。
[0055] S43:根据预设的统计算法,对所述chroma特征数据进行转换,得到比特特征数据。
[0056] 其中,预设的统计算法例如为长时谱能量统计算法。
[0057] 具体的,在图5和图6中不同时间点对应的频域数据或者chroma特征数据是不同的,且不限于0或1,如果不同值用不同的颜色表示,则图5和图6都是彩色的(考虑到申请文件不能用彩色图,图5和图6都用灰度图表示了)。而经过长时谱能量统计,可以将不同的值转换为0或1,因此,如图7所示,比特图是黑白图,其中,图7的横轴表示时间,纵轴表示比特特征数据,数据值是0时该数据用黑色表示,数据值是1时该数据用白色表示。
[0058] 如果对照图7和图5,就会发现1存在的地方通常对应着频谱中重要的频率点和时频谱中重要的事件,将这些重要的“事件”,用比特“1”来描述,其他“事件”用“0”描述,从而形成比特图特征。重要的频率点或者重要的事件例如是存在突变的点。
[0059] 通过S41~S43,可以由一帧的PCM音频数据转换为一个比特帧,图7示出的是一个比特帧对应的比特图,一个比特帧由12维的特征数据组成。
[0060] 在电视台的机房内由特征数据提取模块得到特征数据(具体是上述的比特特征数据)后,可以将该特征数据发送给解码器进行训练。
[0061] 如图2所示,在电视台机房的出口处还可以设置数据中转模块25,数据中转模块25将特征数据提取模块24获取的特征数据转发给解码器。数据中转模块和特征数据提取模块可以通过传输控制协议(Transmission Control Protocol,TCP)通信。数据中转模块与解码器之间也可以通过TCP通信。另外,特征数据提取模块与数据中转模块,以及,数据中转模块与解码器之间可以建立TCP长连接,以实时地将特征数据发送给解码器。另外,在数据中转模块向解码器传输特征数据时,可以以预设时间长度和/或预设大小为单位进行传输,例如,以每秒音频数据对应的特征数据,且该特征数据的大小不超过1KB为单位进行数据传输。
[0062] 在将特征数据发送给解码器后,解码器可以根据特征数据进行训练,得到识别模型。
[0063] 如图8所示,根据特征数据进行训练得到识别模型的流程可以包括:
[0064] S81:获取预设帧数的特征数据,并将所述预设帧数的特征数据组成一个索引段。
[0065] 在得到如图7对应的每个比特帧后,由于1大约只占5%左右,因此,12维的特征数据的区分度不够,为了提高区分度,需要更多的比特。因此,可以将W个比特帧级联起来作为一个基本的索引段,例如W=200帧。通常每帧是0.032秒,考虑到帧重叠的情况,每个索引段大约是3.6秒。
[0066] 以200帧为例,则每个索引段包括的特征数据是2400维,每个维度上的特征数据是0或者1。
[0067] S82:记录每个索引段的信息,并将所有索引段的信息组成识别模型。
[0068] 例如,可以记录每个2400维的索引段的数据,从而组成识别模型。
[0069] 但为了降低数据存储量,可以采用文本索引中倒排索引(inverted document index)的方式,记录特征数据是1的同一维度上的所有索引段的标识。例如,将2400维的每一维当作一个字,记录同样维度位置上为1的所有索引段的标识。
[0070] 例如,特征数据是由不同电视台的音频数据实时生成的,因此,可以实时获取多个分别对应不同电视台的2400维的索引段,假设第一索引段的第1维上的数据是1,第三索引段的第1维上的数据也是1,则第1维对应的索引段包括:第一索引段和第三索引段,因此,在记录时对应第1维可以记录第一索引段的标识和第三索引段的标识。索引段的标识例如为用于唯一标识索引段的编号等。并且,识别模型中的每个索引段可以对应一个电视台。
[0071] 类似的,当其他维上的特征数据也是1时,也可以采用上述的方式,记录该特征数据是1的同一维度上的所有索引段的标识,从而将维度与索引段的标识之间的对应关系组成识别模型。
[0072] 例如,识别模型包括:第1维对应:1,3,6,..,第5维对应:2,3,4,…,其中,1,2,3,…是索引段的标识。
[0073] S12:接收要识别的特征数据,并根据所述识别模型对所述要识别的特征数据进行识别,得到识别结果,所述要识别的特征数据是根据要识别的音频数据得到的。
[0074] 其中,要识别的音频数据可以是用户采用用户设备对当前播放的电视信号进行录制后得到的。
[0075] 例如,参见图2,在用户的手机上安装软件开发工具包(Software Development Kit,SDK)26,该SDK可以对要识别的音频数据进行录制,例如对当前播放的电视信号中音频信号进行录制,得到录制后的音频数据。
[0076] 另外,SDK还可以对录制后的音频数据进行特征提取,得到要识别的特征数据。其中,SDK进行特征提取的方式与上述特征数据提取模块进行特征数据提取的方式相同,在此不再赘述。
[0077] SDK提取出要识别的特征数据后,可以发送给服务端的识别前端模块27,识别前端模块27再将要识别的特征数据发送给解码器中,解码器根据获取的识别模型对要识别的特征数据进行识别,得到识别结果。可以理解的是,SDK与识别前端模块进行通信时,还可以经过其他模块(如lighttpd)进行中转。
[0078] 解码器在识别时,参见图9,所述根据所述识别模型对所述要识别的特征数据进行识别,得到识别结果,包括:
[0079] S91:将所述要识别的特征数据划分为查询段。
[0080] 类似上述训练过程中的相关描述,要识别的特征数据的最小单位也可以是帧,但在处理时以预设帧数为单位进行处理,例如,将要识别的特征数据以200帧为单位划分为一个查询段。
[0081] S92:计算所述查询段与所述识别模型中每个索引段之间的匹配值,并根据所述匹配值确定出识别结果。
[0082] 例如,查询段也是一个2400维的数据,识别模型中包括多个2400维的数据(索引段),通过预设算法,可以分别计算出查询段与每个索引段之间的匹配值,从而可以根据匹配值确定出识别结果。
[0083] 计算匹配值的算法例如是:对应每个索引段,依次查看每个维度上的数据,如果一个维度上的数据在该索引段以及该查询段上的都是1,则可以将初始的匹配值(初始的匹配值例如为0)增加1,通过比较所有的维度,得到最终的匹配值。例如,查询段是一个2400维的数据,每个维度上的数据是0或1,假设查询段从第1维开始的数据分别是:0,1,0,0,1…(一共2400个),而识别模型中一个索引段从第1维开始的数据分别是:0,1,1,0,0…(一共2400个),则经过比对这5个维度,该索引段与查询段的匹配值是1(数据是1的同一个维度的数量是1),假设另一个索引段从第1维开始的数据分别是:0,1,0,0,1…(一共2400个),则经过比对这5个维度,该索引段与查询段的匹配值是2(数据是1的同一个维度的数量是2)。依此类推,通过比较2400维,可以得到最终的匹配值。
[0084] 可以理解的是,上述描述了直接比较查询段和索引段的数据的方式,由于索引段在记录时可以采用倒排索引的方式记录,因此在记录匹配值时,还可以是从查询段内先找出数据是1的维度,之后再从识别模型中找到该维度对应的索引段,每个维度与查询段对应上,则相应的索引段的匹配值增加1,通过比较所有维度,得到每个索引段的最终匹配值。
[0085] 在得到每个索引段的最终匹配值后,可以先从这些匹配值中找出最大的,再将该最大的匹配值与预设阈值比较,如果大于预设阈值,则识别结果就是该最大匹配值的索引段对应的电视台。
[0086] 进一步的,由于录制时的音频数据与训练时对应的音频数据可能不同步,为了提高匹配成功率,则可以对查询段进行时移,对应每个原始的查询段,可以得到多个时移后的查询段,并且将每个时移后的查询段以及原始的查询段采用上述匹配方式与每个索引段进行匹配,从而得到识别结果。
[0087] 为了方便描述,将2400维的数据简化为5维,假设识别模型中的一个索引段是01010,原始的查询段是10101,如果将原始的查询段与该索引段进行匹配,得到的结果是不匹配,而如果对原始的查询段进行时移,假设时移后的查询段是01010,则由于时移后的查询段与该索引段一致,匹配成功,则识别结果就是该索引段对应的电视台。
[0088] 具体的,在时移时,对于一个200帧的查询段,可以对原始的查询段前后移动最多100帧,从而产生200个新的查询段,最终得到包括原始的查询段在内的201个查询段。
[0089] 通过对查询段进行时移,而不是更改索引段,可以使得实现富有弹性,可扩展。
[0090] 另一实施例中,在得到识别结果后,参见图3,该方法还可以包括:
[0091] S33:根据所述识别结果进行搜索,获取所述识别结果对应的节目信息。
[0092] 例如,参见图2,解码器获取识别结果后,将识别结果发送给识别前端模块,识别前端模块可以依据搜索引擎的资源,根据识别结果获取相应的节目信息。例如,识别结果是CCTV-1,则可以获取CCTV-1的节目信息,节目信息包括但不限于节目单。
[0093] 本实施例对应的产品可以嵌入到搜索引擎产品内,从而方便获取节目信息。
[0094] 本实施例中,通过获取识别模型,并根据识别模型获取识别结果,可以实现系统根据音频数据主动得到识别结果,降低对用户的依赖,提高效率和准确度。另外,本实施例通过实时的数据传输以及处理,可以提高识别的速度和准确度。
[0095] 图10是本发明另一实施例提出的用于获取节目信息的处理系统的结构示意图,该系统100包括解码器101,解码器101包括:
[0096] 训练模块1011,用于获取识别模型,所述识别模型是对接收的特征数据进行训练后得到的,所述特征数据是根据音频数据得到的,所述音频数据是从源数据流中获取的;
[0097] 本发明实施例中,以识别电视台为例,相应的,节目信息是指电视台的节目信息,节目信息例如节目单等。可以理解的是,本发明实施例的方法也可以应用到其他基于音频的识别领域,例如也可以用于识别仅存在音频数据的电台,进而获取电台的节目单等。
[0098] 解码器可以位于服务端,解码器可以基于识别模型,识别要识别的音频数据来自的电视台。
[0099] 一个实施例中,为了提高可靠性,解码器可以采用备份方式,相应的,多个解码器可以组成解码器集群。进一步的,可以在不同的地理区域上设置不同的解码器集群。例如,参见图2,对应北京地区设置一个解码器集群21,对应杭州地区设置另一个解码器集群22,每个解码器集群内包括多个解码器,多个是指至少两个。为了保证实时性,降低延时,同一个解码器集群内的多个解码器位于同一个子网下,例如位于同一个子网下的同一个物理机房内。
[0100] 由于可以采用备份方式,因此,所述获取识别模型,包括:
[0101] 从自身节点获取识别模型,所述识别模型是自身节点对接收的特征数据进行训练后得到的;或者,
[0102] 从备份节点获取识别模块,所述识别模型是备份节点对接收的特征数据进行训练后得到的。
[0103] 可以理解的是,备份节点可以是专门用于获取并存储识别模型的节点,该备份节点可以不用于识别,或者,备份节点可以与普通节点相同,可以用于获取识别模型以及用于识别。以一个解码器可以作为其他解码器的备份节点为例,当需要从备份节点获取识别模型时,不同解码器可以相互通信,获取其他解码器是否可用或者负载情况等,以确定用于提供识别模型的备份节点。
[0104] 识别模型是解码器对接收的特征数据进行训练后得到的。
[0105] 参见图11,当所述源数据流是电视信号对应的传输流时,所述系统100还包括:
[0106] 音频数据提取模块102,用于接收电视台实时发送的电视信号对应的传输流,并从所述传输流中提取出音频数据;
[0107] 特征数据提取模块103,用于对所述音频数据进行特征提取,获取所述特征数据。
[0108] 参见图2,在每个电视台的机房内,可以设置音频数据提取模块和特征数据提取模块。
[0109] 音频数据提取模块接收电视台实时发送的电视信号对应的传输流(Transport Stream,TS),并从所述传输流中提取出音频数据。音频数据例如为高级音频编码(Advanced Audio Coding,AAC或者ACC)数据。其中,TS中的视频数据和音频数据可以具有不同的标识信息,从而根据标识信息提取出音频数据。
[0110] 电视台与音频数据提取模块之间可以采用用户数据报协议(User Datagram Protocol,UDP)进行通信。例如,电视台对外开放一个UDP端口,电视台通过该UDP端口将TS实时输入到音频数据提取模块。
[0111] 特征数据提取模块对所述音频数据进行特征提取,获取所述特征数据。
[0112] 本实施例中,音频数据提取模块和特征数据提取模块可以位于同一个物理设备内。
[0113] 由于音频数据的数据量较大,为了降低数据量可以对音频数据进行特征提取,得到数据量较小的特征数据。当然,可以理解的是,如果不考虑数据量等问题,用于识别模型训练的特征数据也可以是音频数据本身。
[0114] 可选的,所述特征数据提取模块103具体用于:
[0115] 对所述音频数据进行短时FFT,得到所述音频数据对应的频域数据;
[0116] 根据预设的压缩算法,对所述频域数据进行转换,得到基础音色特征数据;
[0117] 根据预设的统计算法,对所述基础音色特征数据进行转换,得到比特特征数据。
[0118] 可以理解的是,在进行特征提取之前,可以将从TS中提取的ACC音频数据进行转换,转换为其他形式的音频数据,以方便处理。本实施例中,假设在提取出ACC音频数据后,先将ACC音频数据转换为脉冲编码调制(Pulse Code Modulation,PCM)音频数据。
[0119] 例如,以每帧(通常是0.032秒)为单位,对ACC音频数据进行采样和量化后,得到一帧的PCM音频数据。PCM音频数据的采样率和量化位数是可设置的,例如,采样率是16KHz,量化位数是16b。在将ACC音频数据转换为PCM音频数据后,可以将PCM音频数据存储在队列中,等待特征提取。因此,进行特征提取的音频数据可以具体是指以每帧为单位的PCM音频数据。
[0120] 在进行特征提取时,可以先对音频数据进行短时FFT,短时FFT是指在音频数据上乘以时间窗,将音频数据分为多个时间段的音频数据,并对每个时间段的音频数据进行FFT。其中,时间窗可以根据实际情况设置,使得每个时间段的音频数据是短时平稳信号。
[0121] 经过频域转换,可以得到如图5所示的频域图,其中,横轴表示时间,纵轴表示频率。
[0122] 电视信号中音频信号的种类繁多,包括语音、歌曲、各种配乐、声效等,这些音频信号都属于短时平稳信号,而且是按照既定的频率来呈现的,在不同的频率之间有着既定的关系。因此,在频谱图中,不同的音高(pitch)不是随机的,而是具有很大的相关性。这也说明频谱图中存在很多冗余信息,可以对频谱进行压缩,减少存贮空间。
[0123] 本实施例中,预设的压缩算法是基于音符(midi note)的频率归一化算法,以实现对频谱的压缩。
[0124] 在midi note中,每个音阶(octave)有12个半音(semitone),相邻的octave的比值是2。把FFT频谱压缩到一个octave中,产生12维的chroma特征数据。例如:把A4(440Hz),A5(880Hz),A6(1760Hz),A7(3520Hz)的对应的FFT频段谱加在一起产生一个midi note段的谱。这样的操作在一定程度上提高了抗噪声干扰能力,因为噪声或其他的滤波处理,可能会影响某一个octave段的频谱,即它会影响所有的在这个段内的midi note频谱,但其他没受影响的octave段还会提供信息。
[0125] 采用基于midi note的频率归一化算法对频域数据进行处理后,可以得到如图6所示的chroma域图,其中,横轴表示时间,纵轴表示chroma特征数据。
[0126] 其中,预设的统计算法例如为长时谱能量统计算法。
[0127] 具体的,在图5和图6中不同时间点对应的频域数据或者chroma特征数据是不同的,且不限于0或1,如果不同值用不同的颜色表示,则图5和图6都是彩色的(考虑到申请文件不能用彩色图,图5和图6都用灰度图表示了)。而经过长时谱能量统计,可以将不同的值转换为0或1,因此,如图7所示,比特图是黑白图,其中,图7的横轴表示时间,纵轴表示比特特征数据,数据值是0时该数据用黑色表示,数据值是1时该数据用白色表示。
[0128] 如果对照图7和图5,就会发现1存在的地方通常对应着频谱中重要的频率点和时频谱中重要的事件,将这些重要的“事件”,用比特“1”来描述,其他“事件”用“0”描述,从而形成比特图特征。重要的频率点或者重要的事件例如是存在突变的点。
[0129] 通过特征数据提取模块的处理,可以由一帧的PCM音频数据转换为一个比特帧,图7示出的是一个比特帧对应的比特图,一个比特帧由12维的特征数据组成。
[0130] 在电视台的机房内由特征数据提取模块得到特征数据(具体是上述的比特特征数据)后,可以将该特征数据发送给解码器进行训练。
[0131] 如图2所示,在电视台机房的出口处还可以设置数据中转模块,数据中转模块将特征数据提取模块获取的特征数据转发给解码器。数据中转模块和特征数据提取模块可以通过传输控制协议(Transmission Control Protocol,TCP)通信。数据中转模块与解码器之间也可以通过TCP通信。另外,特征数据提取模块与数据中转模块,以及,数据中转模块与解码器之间可以建立TCP长连接,以实时地将特征数据发送给解码器。另外,在数据中转模块向解码器传输特征数据时,可以以预设时间长度和/或预设大小为单位进行传输,例如,以每秒音频数据对应的特征数据,且该特征数据的大小不超过1KB为单位进行数据传输。
[0132] 在将特征数据发送给解码器后,解码器可以根据特征数据进行训练,得到识别模型。
[0133] 可选的,所述训练模块1011具体用于:
[0134] 获取预设帧数的特征数据,并将所述预设帧数的特征数据组成一个索引段;
[0135] 记录每个索引段的信息,并将所有索引段的信息组成识别模型。
[0136] 在得到如图7对应的每个比特帧后,由于1大约只占5%左右,因此,12维的特征数据的区分度不够,为了提高区分度,需要更多的比特。因此,可以将W个比特帧级联起来作为一个基本的索引段,例如W=200帧。通常每帧是0.032秒,考虑到帧重叠的情况,每个索引段大约是3.6秒。
[0137] 以200帧为例,则每个索引段包括的特征数据是2400维,每个维度上的特征数据是0或者1。
[0138] 例如,可以记录每个2400维的索引段的数据,从而组成识别模型。
[0139] 但为了降低数据存储量,可以采用文本索引中倒排索引(inverted document index)的方式,记录特征数据是1的同一维度上的所有索引段的标识。例如,将2400维的每一维当作一个字,记录同样维度位置上为1的所有索引段的标识。
[0140] 例如,特征数据是由不同电视台的音频数据实时生成的,因此,可以实时获取多个分别对应不同电视台的2400维的索引段,假设第一索引段的第1维上的数据是1,第三索引段的第1维上的数据也是1,则第1维对应的索引段包括:第一索引段和第三索引段,因此,在记录时对应第1维可以记录第一索引段的标识和第三索引段的标识。索引段的标识例如为用于唯一标识索引段的编号等。并且,识别模型中的每个索引段可以对应一个电视台。
[0141] 类似的,当其他维上的特征数据也是1时,也可以采用上述的方式,记录该特征数据是1的同一维度上的所有索引段的标识,从而将维度与索引段的标识之间的对应关系组成识别模型。
[0142] 例如,识别模型包括:第1维对应:1,3,6,..,第5维对应:2,3,4,…,其中,1,2,3,…是索引段的标识。
[0143] 识别模块1012,用于接收要识别的特征数据,并根据所述识别模型对所述要识别的特征数据进行识别,得到识别结果,所述要识别的特征数据是根据要识别的音频数据得到的。
[0144] 其中,要识别的音频数据可以是用户采用用户设备对当前播放的电视信号进行录制后得到的。
[0145] 另一实施例中,参见图11,该系统100还包括:
[0146] 应用模块104,用于对要识别的音频数据进行录制,并对录制后的音频数据进行特征提取,获取所述要识别的特征数据。
[0147] 例如,参见图2,在用户的手机上安装软件开发工具包(Software Development Kit,SDK),该SDK对应本实施例的应用模块,该SDK可以对要识别的音频数据进行录制,例如对当前播放的电视信号中音频信号进行录制,得到录制后的音频数据。
[0148] 另外,SDK还可以对录制后的音频数据进行特征提取,得到要识别的特征数据。其中,SDK进行特征提取的方式与上述特征数据提取模块进行特征数据提取的方式相同,在此不再赘述。
[0149] SDK提取出要识别的特征数据后,可以发送给服务端的识别前端模块,识别前端模块再将要识别的特征数据发送给解码器中,解码器根据获取的识别模型对要识别的特征数据进行识别,得到识别结果。可以理解的是,SDK与识别前端模块进行通信时,还可以经过其他模块(如lighttpd)进行中转。本实施例以应用模块通过识别前端模块将要识别的特征数据发送给解码器为例,可以理解的是,应用模块也可以直接或者通过其他模块将要识别的特征数据发送给解码器。
[0150] 可选的,所述识别模块1012具体用于:
[0151] 将所述要识别的特征数据划分为查询段,所述查询段包括:原始的查询段和时移后的查询段;
[0152] 计算所述查询段与所述识别模型中每个索引段之间的匹配值,并根据所述匹配值确定出识别结果。
[0153] 类似上述训练过程中的相关描述,要识别的特征数据的最小单位也可以是帧,但在处理时以预设帧数为单位进行处理,例如,将要识别的特征数据以200帧为单位划分为一个查询段。
[0154] 例如,查询段也是一个2400维的数据,识别模型中包括多个2400维的数据(索引段),通过预设算法,可以分别计算出查询段与每个索引段之间的匹配值,从而可以根据匹配值确定出识别结果。
[0155] 计算匹配值的算法例如是:对应每个索引段,依次查看每个维度上的数据,如果一个维度上的数据在该索引段以及该查询段上的都是1,则可以将初始的匹配值(初始的匹配值例如为0)增加1,通过比较所有的维度,得到最终的匹配值。例如,查询段是一个2400维的数据,每个维度上的数据是0或1,假设查询段从第1维开始的数据分别是:0,1,0,0,1…(一共2400个),而识别模型中一个索引段从第1维开始的数据分别是:0,1,1,0,0…(一共2400个),则经过比对这5个维度,该索引段与查询段的匹配值是1(数据是1的同一个维度的数量是1),假设另一个索引段从第1维开始的数据分别是:0,1,0,0,1…(一共2400个),则经过比对这5个维度,该索引段与查询段的匹配值是2(数据是1的同一个维度的数量是2)。依此类推,通过比较2400维,可以得到最终的匹配值。
[0156] 可以理解的是,上述描述了直接比较查询段和索引段的数据的方式,由于索引段在记录时可以采用倒排索引的方式记录,因此在记录匹配值时,还可以是从查询段内先找出数据是1的维度,之后再从识别模型中找到该维度对应的索引段,每个维度与查询段对应上,则相应的索引段的匹配值增加1,通过比较所有维度,得到每个索引段的最终匹配值。
[0157] 在得到每个索引段的最终匹配值后,可以先从这些匹配值中找出最大的,再将该最大的匹配值与预设阈值比较,如果大于预设阈值,则识别结果就是该最大匹配值的索引段对应的电视台。
[0158] 进一步的,由于录制时的音频数据与训练时对应的音频数据可能不同步,为了提高匹配成功率,则可以对查询段进行时移,对应每个原始的查询段,可以得到多个时移后的查询段,并且将每个时移后的查询段以及原始的查询段采用上述匹配方式与每个索引段进行匹配,从而得到识别结果。
[0159] 为了方便描述,将2400维的数据简化为5维,假设识别模型中的一个索引段是01010,原始的查询段是10101,如果将原始的查询段与该索引段进行匹配,得到的结果是不匹配,而如果对原始的查询段进行时移,假设时移后的查询段是01010,则由于时移后的查询段与该索引段一致,匹配成功,则识别结果就是该索引段对应的电视台。
[0160] 具体的,在时移时,对于一个200帧的查询段,可以对原始的查询段前后移动最多100帧,从而产生200个新的查询段,最终得到包括原始的查询段在内的201个查询段。
[0161] 通过对查询段进行时移,而不是更改索引段,可以使得实现富有弹性,可扩展。
[0162] 另一实施例中,参见图11,该系统100还包括:
[0163] 识别前端模块105,用于根据所述识别结果进行搜索,获取所述识别结果对应的节目信息。
[0164] 例如,参见图2,解码器获取识别结果后,将识别结果发送给识别前端模块,识别前端模块可以依据搜索引擎的资源,根据识别结果获取相应的节目信息。例如,识别结果是CCTV-1,则可以获取CCTV-1的节目信息,节目信息包括但不限于节目单。
[0165] 本实施例对应的产品可以嵌入到搜索引擎产品内,从而方便获取节目信息。
[0166] 本实施例中,通过获取识别模型,并根据识别模型获取识别结果,可以实现系统根据音频数据主动得到识别结果,降低对用户的依赖,提高效率和准确度。另外,本实施例通过实时的数据传输以及处理,可以提高识别的速度和准确度。
[0167] 需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是指至少两个。
[0168] 流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
[0169] 应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0170] 本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0171] 此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0172] 上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0173] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0174] 尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。