唤醒模型的评估方法、装置、计算机设备和存储介质与流程
本申请涉及语音唤醒的技术领域,特别涉及一种唤醒模型的评估方法、装置、计算机设备和存储介质。
背景技术:
目前唤醒模型的评估主要是通使用对测试集进行测试来检验唤醒模型的唤醒性能。采用测试集检测唤醒性能的代价是要减少一部分训练数据,例如通常从训练集中移除30%的训练数据作为测试集。这意味着相比于使用全量训练数据训练模型来说,模型会存在更大的偏差。
在标准的评估流程中,评估完模型效果后,会采用全量数据重新训练来得到最终的模型。因此,在这种流程下,测试集的评估结果是偏保守的,因为模型的实际误差要比评估的误差低一些。
目前评估唤醒模型的一个要点是在得到最终模型前不能以任何方式分析或使用测试集。常见错误是在使用测试集进行模型效果评估后重新调整模型然后再次训练评估。如果重复使用一份测试集,这份测试集就被污染了。由于测试集参与了模型调整,便不能再给出模型误差的一个无偏估计了。
因此,目前的评估方法中存在容易污染测试集的缺陷。
技术实现要素:
本申请的主要目的为提供一种唤醒模型的评估方法、装置、计算机设备和存储介质,旨在克服目前评估唤醒模型时会对测试集造成污染的缺陷。
为实现上述目的,本申请提供了一种唤醒模型的评估方法,包括以下步骤:
将预设的测试文件输入至唤醒模型中;其中,所述测试文件为音频文件;
基于所述唤醒模型识别所述测试文件中的每个预测唤醒词,并获取每个所述预测唤醒词在测试文件中的位置;
根据参考文件中记录的测试文件中唤醒词的位置,以及每个所述预测唤醒词在测试文件中的位置,确定每个所述预测唤醒词是否为正唤醒,并进行标记;
将每个所述预测唤醒词的所述标记以及在测试文件中的位置存储于结果文件中;
基于所述参考文件以及结果文件,计算所述唤醒模型的评估参数;其中,所述评估参数至少包括唤醒率。
进一步地,所述根据参考文件中记录的测试文件中唤醒词的位置,以及每个所述预测唤醒词在测试文件中的位置,确定每个所述预测唤醒词是否为正唤醒,并进行标记的步骤,包括:
将每个所述预测唤醒词在测试文件中的位置与所述参考文件中记录的测试文件中每个唤醒词的位置进行对比,判断是否具有重叠;
若重叠,则判断重叠部分是否大于阈值;
若大于,则将所述预测唤醒词标记为正唤醒;
若不大于,则将所述预测唤醒词标记为误唤醒。
进一步地,每个所述唤醒词的时间长度相同,所述阈值为每个所述唤醒词时间长度的1/2。
进一步地,所述唤醒率包括正唤醒率和/或误唤醒率;
所述基于所述参考文件以及结果文件,计算所述唤醒模型的评估参数的步骤,包括:
统计所述参考文件中记录的唤醒词出现的总次数,以及根据所述结果文件对预测唤醒词的标记统计正唤醒的次数和/或误唤醒的次数;
根据所述正唤醒的次数以及所述总次数计算正唤醒率;
和/或,根据所述误唤醒的次数以及所述总次数计算误唤醒率。
进一步地,所述根据参考文件中记录的测试文件中唤醒词的位置,以及每个所述预测唤醒词在测试文件中的位置,确定每个所述预测唤醒词是否为正唤醒,并进行标记的步骤之后,还包括:
获取所述测试文件中出现每个所述预测唤醒词的位置所对应的音频数据;
将所述测试文件的名称与每个所述预测唤醒词在测试文件中的位置、以及所述预测唤醒词的标记进行组合得到字符串,将所述音频数据保存至预设的唤醒音频片段中,并将所述字符串作为对应的音频数据的文件名。
进一步地,所述获取每个所述预测唤醒词在测试文件中的位置的步骤,包括:
所述唤醒模型识别到所述测试文件中的每个预测唤醒词,获取所述测试文件当前已读取的数据字节数;
将当前已读取的数据字节数减去预设字节数,得到预测唤醒词的起始字节数;
将所述测试文件中起始字节数与当前已读取的数据字节数之间的区间作为所述预测唤醒词在测试文件中的位置。
进一步地,所述将预设的测试文件输入至唤醒模型中的步骤之前,包括:
将一预设的音频文件作为所述测试文件,并在参考文件在记录所述测试文件中出现唤醒词的位置;
将所述测试文件以及所述参考文件命名为相同的名称,并保存为不同的文件格式。
本申请还提供了一种唤醒模型的评估装置,包括:
输入单元,用于将预设的测试文件输入至唤醒模型中;其中,所述测试文件为音频文件;
获取单元,用于基于所述唤醒模型识别所述测试文件中的每个预测唤醒词,并获取每个所述预测唤醒词在测试文件中的位置;
标记单元,用于根据参考文件中记录的测试文件中唤醒词的位置,以及每个所述预测唤醒词在测试文件中的位置,确定每个所述预测唤醒词是否为正唤醒,并进行标记;
存储单元,用于将每个所述预测唤醒词的所述标记以及在测试文件中的位置存储于结果文件中;
计算单元,用于基于所述参考文件以及结果文件,计算所述唤醒模型的评估参数;其中,所述评估参数至少包括唤醒率。
本申请还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
本申请提供的唤醒模型的评估方法、装置、计算机设备和存储介质,通过将预设的测试文件输入至唤醒模型中;其中,所述测试文件为音频文件;基于所述唤醒模型识别所述测试文件中的每个预测唤醒词,并获取每个所述预测唤醒词在测试文件中的位置;进而根据参考文件中记录的测试文件中唤醒词的位置,以及每个所述预测唤醒词在测试文件中的位置,确定每个所述预测唤醒词是否为正唤醒,并进行标记;将每个所述预测唤醒词的所述标记以及在测试文件中的位置存储于结果文件中;基于所述参考文件以及结果文件,计算所述唤醒模型的评估参数;本申请中无需使用测试集,不会污染测试集,同时对测试文件没有要求,适用性更广泛。
附图说明
图1是本申请一实施例中唤醒模型的评估方法步骤示意图;
图2是本申请一实施例中唤醒模型的评估装置结构框图;
图3为本申请一实施例的计算机设备的结构示意框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,本申请一实施例中提供了一种唤醒模型的评估方法,包括以下步骤:
步骤s1,将预设的测试文件输入至唤醒模型中;其中,所述测试文件为音频文件;
步骤s2,基于所述唤醒模型识别所述测试文件中的每个预测唤醒词,并获取每个所述预测唤醒词在测试文件中的位置;
步骤s3,根据参考文件中记录的测试文件中唤醒词的位置,以及每个所述预测唤醒词在测试文件中的位置,确定每个所述预测唤醒词是否为正唤醒,并进行标记;
步骤s4,将每个所述预测唤醒词的所述标记以及在测试文件中的位置存储于结果文件中;
步骤s5,基于所述参考文件以及结果文件,计算所述唤醒模型的评估参数;其中,所述评估参数至少包括唤醒率。
在本实施例中,上述方法应用于唤醒模型的评估,且无需采用训练模型时的测试集,不会污染测试集。
为了便于理解,对本申请中的名词作出以下定义:
唤醒词:定制的词语,字数一般限定在3-5个字之间。
唤醒模型:数学模型经训练后生成的模型文件,可对输入音频数据进行预测,给出该段音频数据中是否包含唤醒词的结果。
唤醒:即模型对语音数据进行处理后,根据预测结果,认为该段语音数据中包含唤醒词。其中,唤醒包含正唤醒与误唤醒,正唤醒指该段语音数据中包含唤醒词并且模型给出唤醒结果;误唤醒指该段语音数据中不包含唤醒词但是模型依然给出唤醒结果。可以理解的是,一个唤醒模型的唤醒效果越好,那么其正唤醒率高的同时,误唤醒率应越低。
测试集:测试样本数据集,目前用来检验唤醒模型的唤醒性能。
如上述步骤s1所述的,上述测试文件是指保存有一段音频数据的音频文件,测试文件中可包含唤醒词,也可不包含唤醒词。上述测试文件一般为pcm或者wav文件,格式为16k,mono,16bit。参考文件为json格式。
如上述步骤s2所述的,上述唤醒模型对输入的上述测试文件进行运算,识别出其中包括的唤醒词,记为预测唤醒词,同时需要获取到每个所述预测唤醒词在测试文件中的位置,其记录的是上述预测唤醒词出现在测试文件中的起始位置和结束位置。上述起始位置以及结束位置均以测试文件中的字节数进行表达。
如上述步骤s3所述的,上述参考文件是对测试文件的指标描述,用以记录测试文件中出现唤醒词的位置,记录唤醒词出现在测试文件中的起始位置和结束位置。因此,根据参考文件中记录的测试文件中唤醒词的位置,与每个所述预测唤醒词在测试文件中的位置进行对比,则可以确定上述预测唤醒词是否为正唤醒。进而对上述预测唤醒词进行标记,通过该标记,便可以确定该预测唤醒词是正唤醒还是误唤醒。
举例而言,上述测试文件为test.pcm,上述参考文件为test.json,test.pcm文件是一个16k,mono,16bit的音频文件,里面包含了多个唤醒词,每个唤醒词1秒钟;test.json文件的tag_segment列表中记录了test.pcm文件中唤醒词出现的位置。
例如,以下是参考文件的格式:
{
"result":{
"tag_segment":[
[
83000,
115000,
],
…
[
1686200,
1702200,
]
]
}
}
如上所述,[83000,115000]区间内即是test.pcm文件中出现唤醒词的位置,该区间为(115000-83000)=32000,刚好1秒钟的数据量。如果测试文件中一个唤醒词也不包含,那么参考文件中的tag_segment列表为空。
如上述步骤s4所述的,上述结果文件类似于上述参考文件,其中记录了每个所述预测唤醒词的所述标记以及在测试文件中的位置,即记录了唤醒模型对测试文件的测试结果。上述测试文件与参考文件的文件名相同,文件格式不同,上述参考文件的文件名命名规则为在上述测试文件/参考文件的文件名基础上添加后缀“_result”,其通常为json文件,与参考文件格式相同。
上述结果文件中不仅记录了每个所述预测唤醒词在测试文件中的位置,同时还需要记录每个所述预测唤醒词的标记,上述标记通常用“1”表示正唤醒,用“0”表示误唤醒。例如,保存至上述结果文件中的一个预测唤醒词可表达为:[83040,115040,1],其表示的是该预测唤醒词从测试文件的83040字节处开始,到115040处结束,并且该预测唤醒词是一个正唤醒。又如,[1686240,1718240,0],表示唤醒模型检测到一个预测唤醒词,出现的位置是测试文件中从1686240字节处开始,到1718240字节处结束,并且该预测唤醒词是一个误唤醒。
如上述步骤s5所述的,基于所述参考文件以及结果文件,便可以计算所述唤醒模型的评估参数,上述评估参数包括唤醒率,唤醒率包括正唤醒率与误唤醒率,上述评估参数还可以包括参考文件中记录的唤醒词出现的总次数(wakeuptimestandard),唤醒模型正唤醒的次数(wakeuptimetrue),唤醒模型误唤醒的次数(wakeuptimefalse),唤醒率(wakeupratestring、wakeuprate)。可以理解的是,上述评估参数也可以记录在上述结果文件中。
在一具体实施例中,以下是结果文件的格式:
{
"result":{
"tag_segment":[
[
83040,
115040,
1,
],
…
[
1686240,
1718240,
0,
]
]
},
"wakeuprate":0.6880222841225627,
"wakeupratestring":"68.8%",
"wakeuptimefalse":1,
"wakeuptimestandard":359,
"wakeuptimetrue":247
}
基于上述结果文件,可以量化出唤醒模型对一个测试文件的各项唤醒指标(即上述评估参数)。在本实施例中,由于对测试文件没有任何要求,测试文件中甚至可以没有唤醒词,即参考文件中tag_segment列表可以为空,此时结果文件中检测到的所有唤醒词均为误唤醒。本实施例中的方法适用性广泛,并且可以与实际场景紧密结合,上述测试文件可以实时录制,也可以专门加入噪声,对于定制化的唤醒模型效果有了更直观和准确的评估。上述唤醒模型改进或者调参后,可以继续使用上述测试文件和参考文件进行测试,得到新的结果文件,通过对比新、旧结果文件,可以量化调整后的唤醒模型的唤醒效果,有助于提高唤醒模型的唤醒性能。
在另一实施例中,上述测试文件和参考文件可以有多组,在进行唤醒模型的测试前,每组具有两个文件,即测试文件test.pcm,参考文件test.json;对唤醒模型测试之后,生成对应的结果文件test_result.json,即测试后每组具有三个文件分别为:test.pcm,test.json,test_result.json。
在一实施例中,所述根据参考文件中记录的测试文件中唤醒词的位置,以及每个所述预测唤醒词在测试文件中的位置,确定每个所述预测唤醒词是否为正唤醒,并进行标记的步骤s3,包括:
将每个所述预测唤醒词在测试文件中的位置与所述参考文件中记录的测试文件中每个唤醒词的位置进行对比,判断是否具有重叠;
若重叠,则判断重叠部分是否大于阈值;
若大于,则将所述预测唤醒词标记为正唤醒;
若不大于,则将所述预测唤醒词标记为误唤醒。
在本实施例中,每个所述唤醒词的时间长度相同,所述阈值为每个所述唤醒词时间长度的1/2。
[a,b]表示参考文件中标记的测试文件中一个唤醒词所在位置,[c,d]表示检测到上述预测唤醒词所在位置。
如果[a,b]和[c,d]具有重叠部分,且重叠部分超过一半,即(a<c&&c<(a+b)/2)&&((c+d)/2<b&&b<d)&&(c<a&&a<(c+d)/2&&(a+b)/2<d&&d<b),则认为检测到的预测唤醒词[c,d]是参考文件中标记位置[a,b]处的唤醒词。
如果[a,b]和[c,d]没有重叠或者重叠部分过少,未达到一半,则认为检测到的预测唤醒词[c,d]不是上述参考文件中标记位置[a,b]处的唤醒词。
对检测到的预测唤醒词位置[c,d],需要对参考文件中所有标记位置进行对比,直到找到一个重叠部分超过一半的标记为止,记为正唤醒。如果[c,d]与参考文件中所有标记位置都未重叠或重叠部分未达到一半,则记为误唤醒。
在一实施例中,所述唤醒率包括正唤醒率和/或误唤醒率;
所述基于所述参考文件以及结果文件,计算所述唤醒模型的评估参数的步骤s5,包括:
统计所述参考文件中记录的唤醒词出现的总次数,以及根据所述结果文件对预测唤醒词的标记统计正唤醒的次数和/或误唤醒的次数;
根据所述正唤醒的次数以及所述总次数计算正唤醒率;
和/或,根据所述误唤醒的次数以及所述总次数计算误唤醒率。
在本实施例中,统计参考文件中记录的唤醒词出现的总次数,即参考文件中tag_segment列表的大小,统计出的总次数记录在上述结果文件中,表示为wakeuptimestandard。
wakeuptimetrue表示唤醒词信息列表中正唤醒的总次数。
wakeuptimefalse表示唤醒词信息列表中误唤醒的总次数。
wakeupratestring和wakeuprate表示正唤醒率,分别以百分数和小数表示,其中,wakeupratestring=(wakeuptimetrue/wakeuptimestandard)*100%,wakeuprate=wakeuptimetrue/wakeuptimestandard。
同理,误唤醒率=(wakeuptimefalse/wakeuptimestandard)*100%。
在一实施例中,所述根据参考文件中记录的测试文件中唤醒词的位置,以及每个所述预测唤醒词在测试文件中的位置,确定每个所述预测唤醒词是否为正唤醒,并进行标记的步骤s3之后,还包括:
获取所述测试文件中出现每个所述预测唤醒词的位置所对应的音频数据;
将所述测试文件的名称与每个所述预测唤醒词在测试文件中的位置、以及所述预测唤醒词的标记进行组合得到字符串,将所述音频数据保存至预设的唤醒音频片段中,并将所述字符串作为对应的音频数据的文件名。
在本实施例中,可以根据上述唤醒模型的识别结果,将每一个唤醒片段进行保存。具体地,获取所述测试文件中出现每个所述预测唤醒词的位置所对应的音频数据,即根据检测到预测唤醒词所在位置,获取对应位置的音频数据,并将该音频数据进行保存。在本实施例中,为了标记该音频数据,还需要对其进行命名。命名方式为“文件名+区间+唤醒标记.pcm”,其中文件名与测试文件的文件名相同。例如,test_83040_115040_1.pcm表示保存的是测试文件test.pcm中[83040,115040]字节区间的音频数据,且该唤醒词是一个正唤醒;test_1686240_1718240_0.pcm表示保存的是测试文件test.pcm中[1686240,1718240]字节区间的音频数据,且该唤醒词是一个误唤醒。
在一实施例中,所述获取每个所述预测唤醒词在测试文件中的位置的步骤s2,包括:
所述唤醒模型识别到所述测试文件中的每个预测唤醒词,获取所述测试文件当前已读取的数据字节数;
将当前已读取的数据字节数减去预设字节数,得到预测唤醒词的起始字节数;
将所述测试文件中起始字节数与当前已读取的数据字节数之间的区间作为所述预测唤醒词在测试文件中的位置。
在本实施例中,唤醒模型识别到所述测试文件中的每个预测唤醒词时,通常为测试文件中唤醒词的结束位置,因此为了获取上述预测唤醒词的位置区间,只需要在识别到预测唤醒词时,向前获取一个唤醒词的时间长度;上述预设字节数为一个唤醒词的时间长度所占用的字节数,具体地,例如,一个唤醒词的长度为1s,其占用的字节数为32000,则上述预设字节数为32000。当识别到预测唤醒词时,获取当前已读取的数据字节数readlen,该预测唤醒词在测试文件中的位置则表达为[readlen-32000,readlen]。对应地,对该唤醒词进行标记后则可以表示为:[readlen-32000,readlen,1]。
在一实施例中,所述将预设的测试文件输入至唤醒模型中的步骤s1之前,包括:
将一预设的音频文件作为所述测试文件,并在参考文件在记录所述测试文件中出现唤醒词的位置;
将所述测试文件以及所述参考文件命名为相同的名称,并保存为不同的文件格式。
在本实施例中,对测试文件没有任何要求,上述测试文件可以实时录制,也可以专门加入噪声,测试文件中甚至可以没有唤醒词;当测试文件中没有唤醒词时,上述参考文件中tag_segment列表为空。
上述测试文件以及上述参考文件命名为相同的名称,并保存为不同的文件格式。例如:上述测试文件一般为pcm或者wav文件,格式为16k,mono,16bit;具体地,测试文件为test.pcm,参考文件为test.json。
参照图2,本申请一实施例中还提供了一种唤醒模型的评估装置,包括:
输入单元10,用于将预设的测试文件输入至唤醒模型中;其中,所述测试文件为音频文件;
获取单元20,用于基于所述唤醒模型识别所述测试文件中的每个预测唤醒词,并获取每个所述预测唤醒词在测试文件中的位置;
标记单元30,用于根据参考文件中记录的测试文件中唤醒词的位置,以及每个所述预测唤醒词在测试文件中的位置,确定每个所述预测唤醒词是否为正唤醒,并进行标记;
存储单元40,用于将每个所述预测唤醒词的所述标记以及在测试文件中的位置存储于结果文件中;
计算单元50,用于基于所述参考文件以及结果文件,计算所述唤醒模型的评估参数;其中,所述评估参数至少包括唤醒率。
在本实施例中,上述唤醒模型的评估装置中各个单元的具体实现,请参照上述方法实施例中所述,在此不再进行赘述。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储测试文件、结果文件等。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种唤醒模型的评估方法。
本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种唤醒模型的评估方法。可以理解的是,本实施例中的计算机可读存储介质可以是易失性可读存储介质,也可以为非易失性可读存储介质。
综上所述,为本申请实施例中提供的唤醒模型的评估方法、装置、计算机设备和存储介质,通过将预设的测试文件输入至唤醒模型中;其中,所述测试文件为音频文件;基于所述唤醒模型识别所述测试文件中的每个预测唤醒词,并获取每个所述预测唤醒词在测试文件中的位置;进而根据参考文件中记录的测试文件中唤醒词的位置,以及每个所述预测唤醒词在测试文件中的位置,确定每个所述预测唤醒词是否为正唤醒,并进行标记;将每个所述预测唤醒词的所述标记以及在测试文件中的位置存储于结果文件中;基于所述参考文件以及结果文件,计算所述唤醒模型的评估参数;本申请中无需使用测试集,不会污染测试集,同时对测试文件没有要求,适用性更广泛。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram通过多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双速据率sdram(ssrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本申请的专利保护范围内。
起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。
此文章来源于网络,如有侵权,请联系删除