语音解码方法、装置及存储介质与流程

文档序号:18515259发布日期:2019-08-24 09:25阅读:512来源:国知局
语音解码方法、装置及存储介质与流程

本发明涉及语音识别技术领域,特别涉及一种语音解码方法、装置及存储介质。



背景技术:

语音识别技术也称为asr(automaticspeechrecognition,自动语音识别),其目标是将人类的语音中的词汇内容转换为计算机可读的输入,包括按键、二进制编码或者字符序列等,从而实现人机交互。语音识别技术在现代生活中具有广泛的应用场景,可应用于车载导航、智能家居、语音拨号、同声传译等场景中。解码器作为语音识别系统的核心,基于解码器的语音解码过程在整个语音识别过程中发挥着重要作用,直接影响着识别结果的准确性。

目前,基于解码器的语音解码过程为:获取高阶语言模型,并采用通用的openfst工具在高阶语言模型上生成解码网络,进而基于该解码网络进行语音解码。

然而,高阶语言模型的内存较大,基于高阶语言模型所生成的解码网络的内存又比高阶语言模型的内存大的多,这就需要配置大量的存储资源及计算资源,在存储资源及计算资源有限的场景下,很难实现解码,因此,亟需一种兼顾解码速度及解码精度的语音解码方法。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种语音解码方法、装置及存储介质。所述技术方案如下:

一方面,提供了一种语音解码方法,所述方法包括:

从第一令牌列表中获取最小解码分数对应的目标令牌,所述第一令牌列表包括对上一音频帧进行解码得到的多个第一令牌,所述第一令牌包括在不同解码网络中进行解码形成的状态对及其解码分数,所述状态对用于表征低阶语言模型对应的第一解码网络中的第一状态和差分语言模型对应的第二解码网络中的第二状态之间的对应关系;

根据所述目标令牌和当前音频帧的声学向量,确定对所述当前音频帧进行解码时的剪枝参数,所述剪枝参数用于对所述当前音频帧的解码过程进行约束;

根据所述第一令牌列表、所述剪枝参数及所述声学向量,对所述当前音频帧进行解码。

另一方面,提供了一种语音解码装置,所述装置包括:

获取模块,用于从第一令牌列表中获取最小解码分数对应的目标令牌,所述第一令牌列表包括对上一音频帧进行解码得到的多个第一令牌,所述第一令牌包括在不同解码网络中进行解码形成的状态对及其解码分数,所述状态对用于表征低阶语言模型对应的第一解码网络中的第一状态和差分语言模型对应的第二解码网络中的第二状态之间的对应关系;

确定模块,用于根据所述目标令牌和当前音频帧的声学向量,确定对所述当前音频帧进行解码时的剪枝参数,所述剪枝参数用于对所述当前音频帧的解码过程进行约束;

解码模块,用于根据所述第一令牌列表、所述剪枝参数及所述声学向量,对所述当前音频帧进行解码。

另一方面,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由所述处理器加载并执行以实现语音解码方法。

另一方面,提供了一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由处理器加载并执行以实现语音解码方法。

本发明实施例提供的技术方案带来的有益效果是:

无需生成高阶语言模型对应的解码网络,基于低阶语言模型和差分语言模型对应的解码网络进行解码,在确保解码精度的前提下,节省了计算资源和存储资源。且根据对上一音频帧的解码结果,对当前音频帧的解码进行解码,提高了解码速度。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种语音解码方法所涉及的实施环境;

图2是现有的语音解码方法的解码原理图;

图3是本发明实施例提供的一种语音解码方法的解码原理图;

图4是本发明实施例提供的一种语音解码方法的流程图;

图5是本发明实施例提供的一种语音解码过程的示意图;

图6是本发明实施例提供的一种语音解码装置结构示意图;

图7示出了本发明一个示例性实施例提供的终端的结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

首先,对本发明中涉及的符号进行说明。

<eps>:代表空符号;

ilabel:代表输入符号;

olable:代表输出符号;

<s>:代表起始符号;

state.a:表示令牌在低阶语言模型对应的第一解码网络中的状态;

state.b:表示令牌在差分语言模型对应的第二解码网络中的状态。

接着,对本发明中涉及的重要名词进行解释。

1、wfst(weightedfinaite-statetransducer,加权有限状态机)用于大规模的语音识别,其状态的变化可用输入符号和输出符号标记。

2、令牌(即token)是记录解码过程中某一时刻某个状态上的得分和信息的数据结构。从加权有限状态机的初始状态开始,令牌沿着具有方向的边进行转移,在转移过程中状态的变化可通过输入符号的变化体现。在从初始状态向终止状态的状态传递过程中,令牌中记录一系列的状态和边组成的路径。

3、hclg.fst为一种解码网络,由四个fst经过一系列算法组合而成。四个fst分别是h.fst、c.fst、l.fst和g.fst。

其中,g表示语言模型,其输入和输出的类型相同。语言模型是语言结构(包括词语、句子之间的规律,例如语法、词语的常用搭配等)的表示,其概率用于表示语言单元的序列在一段语音信号中出现的概率。

l表示发音词典,其输入的是monophone(音素),输出的是词。发音词典中包含单词集合及其发音等。

c表示上下文相关,其输入的是triphone(三音子),输出的是monophone。上下文相关用于表示从三音子到音素之间的对应关系。

h表示声学模型,为对声学、语言学、环境的变量、说话人性别、口音等的差异化表示。声学模型包括基于hmm(hiddenmarkovmodel,隐马尔可夫模型)的声学模型,例如,gmm-hmm(gaussianmixturemodel-hiddenmarkovmodel,高斯混合模型—隐马尔可夫模型)、dnn-hmm(deepneuralnetwork-hiddenmarkovmodel,深度神经网络-隐马尔可夫模型)等,还包括基于端到端的声学模型,例如,ctc-lstm(connectionisttemporalclassification—longshort-termmemory,连接时序分类-长短时记忆)等。声学模型的每个状态表示语音单元的语音特征在该状态的概率分布,并通过状态与状态之间的转移连接成一条有序的状态序列。

4、解码网络也称为搜索空间,使用wsft融合的各种知识源,包括语言模型、声学模型、上下文相关模型、发音词典模型中的至少一种,例如,包括l和g组成的单因素解码网络,记为lg;包括c、l、g组成的c-level解码网络,记为clg网络;采用隐马尔可夫模型表示的hclg网络。

5、出词点表示有汉字输出的位置。

6、实时率表示解码时间占音频时间的比例。

接着,对本发明涉及的语音识别系统进行介绍。

语音识别系统用于语音识别,主要包括预处理模块、特征提取模块、声学模型训练、语言模型训练模块及解码器等。

其中,预处理模块用于对输入的原始语音信号进行处理,滤除掉不重要的信息以及背景噪声,并对语音信号的进行端点检测(找出语音信号的始末)、语音分帧(近似认为在10-30ms内是语音信号是短时平稳的,将语音信号分割为一段一段进行分析)以及预加重(提升高频部分)等处理。

特征提取模块用于去除语音信号中对于语音识别无用的冗余信息,保留能够反映语音本质特征的信息,并采用并用一定的形式表示出来。特征提取模块,也即是提取反映语音信号特征的关键特征参数形成特征矢量序列,以便用于后续处理。

声学模型训练模块用于根据训练语音库的特征参数训练出声学模型参数。在识别时可以将待识别的语音的特征参数同声学模型进行匹配,得到识别结果。目前的主流语音识别系统多采用隐马尔可夫模型hmm进行声学模型建模。

语言模型训练模块用于对训练文本数据库进行语法、语义分析,经过基于统计模型训练得到语言模型。语言模型的训练方法主要有基于规则模型和基于统计模型两种方法。语言模型实际上是计算任一句子出现概率的概率模型。语言模型的建立过程能够有效的结合汉语语法和语义的知识,描述词之间的内在关系,基于所训练的语言模型进行识别时,能够提高识别率,减少搜索范围。

解码器能够在语音识别过程中,针对输入的语音信号,根据己经训练的声学模型、语言模型及发音字典所构建解码网络,采用搜索算法在解码网络中搜寻最佳路径。解码器所搜索的最佳路径能够以最大概率输出该语音信号的词串,从而可确定出语音信号中包括的词汇内容。

在本发明实施例中,解码器的硬件环境包括:2个14核cpu(e5-2680v4),256g内存,raid(磁盘阵列),2*300sas,6*800gssd(固态硬盘),2*40g网口(光口,多模),8*gpu,2.4ghz.每块gpu型号是teslam4024gb显卡。

接着,对本发明的应用实施场景进行介绍。

本发明实施例提供的语音解码方法可应用于需要使用语音识别功能的各种场景,例如,智能家居场景、语音输入场景、车载导航场景、同声传译场景等。在上述应用场景下,本发明实施例所涉及的实施环境可以包括终端101和服务器102。

其中,终端101可以为智能手机、笔记本电脑、平板电脑等设备,该终端101可预先从服务器102上获取用于进行语音识别的相关数据,并将所获取到的数据存储在存储器中,当通过麦克风等设备采集到语音信号后,终端101内的处理器调用存储器中所存储的数据,可采集到的语音信号进行语音解码;终端101还可安装有具有语音识别功能的应用,当通过麦克风等设备采集到语音信号后,基于该安装的应用将所采集的语音信号上传至服务器102,由服务器102进行语音解码,从而获得相应的语音服务。

服务器102中配置有语音识别系统,从而能够向终端101提供语音识别服务。

接着,对比本发明与现有的语音解码过程的区别。

图2为相关技术进行语音解码过程的示意图,参见图2,相关技术将低阶语言模型对应的第一解码网络记为wfsta,并将token在wfsta中的状态记为state.a,将高阶语言模型对应的第二解码网络记为wfstb,并将token在wfstb中的状态记为state.b。相关技术采用cohyps(伴生假设集合)记录state.a在wfstb中的不同的假设及这些假设对应的状态。通常高阶语言模型的状态数比低阶语言模型的状态数多出几个数量级,低阶语言模型同样一个状态可能会对应很多不同的高阶语言模型的状态,而相关技术对cohyps的数量进行设置,按照经验值将cohyps的数量设置为15个,这个统一的限制导致不完全等价的解码结果,从而造成精度上的损失。

为了解决相关技术中存在的问题,本发明实施例提供了一种语音解码方法,参见图3,本发明实施例采用状态对<state.a,state.b>来记录解码状态,而不对state.a对应的state.b的总数进行限制,从而能够得到与高阶语言模型到完全等价的解码结果,而不会有精度上的损失。

本发明实施例提供了一种语音解码方法,参见图4,本发明实施例提供的方法流程包括:

401、终端获取低阶语言模型对应的第一解码网络和差分语言模型对应的第二解码网络。

对于第一解码网络,终端可从服务器获取低阶语言模型,进而基于所获取的低阶语言模型,采用模型转换工具(例如openfst等)生成低阶语言模型对应的第一解码网络。

对于第二解码网络,终端可从服务器获取差分语言模型,进而基于所获取的差分语言模型采用模型转换工具(例如openfst等)生成差分语言模型对应的第二解码网络。

而终端在从服务器上获取低阶语言模型和高阶语言模型之前,服务器需要先获取高阶语言模型,进而基于高阶语言模型获取低阶语言模型及差分语言模型。

具体地,高阶语言模型的获取过程为:服务器获取大量基础音素,对每个基础音素进行语法分析,得到每个基础音素与其他基础音素之间的阶级关系,进而基于分析结果采用回退边连接每个基础音素及其低阶基础音素,该回退边上的输入符号和输出符号为空,该回退边上的权重值为每个基础音素对应的回退权重值(backoffweight),然后服务器以每个基础音素的低阶基础音素为起点,以每个基础音素为终点,采用一条边进行连接,该条边的输入符号和输出符号为每个基础音素,该条边上的权重值为每个基础音素对应的对数概率,然后服务器将各个基础音素、基础音素之间的边及回退边所构成的网络作为高阶语言模型。其中,基础音素为汉语言数据库中常用的字、词语或者句子等。基础音素可以表示为ngram,根据所包含的字符数量,基础语素包括1阶ngram、2阶ngram、3阶ngram等。为了便于区分不同的基础音素,每个基础语素具有状态标识(stateid),在获取高阶语言模型时,实际上是将表征每个基础音素的圆圈采用具有方向的边连接得到的,每条边上标注有输入符号、输出符号及权重值。

进一步地,在高阶语言模型的构建过程中,服务器可获取每个基础音素对应的边的数量,进而基于每个基础音素对应的边的数量,为高阶语言模型分配内存,从而避免因内存不足导致高阶语言模型构建失败。考虑到内存有限,服务器在构建高阶语言模型构建过程中,可在进行语法分析的基础音素数量达到预设数量时,例如1000万个,清空已写入内存上的基础音素,并将内存中的基础音素写入到磁盘中,直到分析完所有的基础音素。采用该种方法,可大大减小高阶语言模型所消耗的内存。

对于工业级别50g以上的高阶语言模型,在实际获取时,可采用如下方法:

1、获取大量ngram,这些ngram包括1阶ngram、2阶ngram..、n阶ngram等,对每个ngram进行第一遍parse(从语法上描述或分析),记录每个ngram对应的stateid(状态标识)和每个ngramstate对应的边的数量。

2、对每个ngram进行第二遍parse,并根据ngramstate对应的边的数量,预先分配出相应内存。

3、对于任一ngram,采用backoff(回退)边连接其低阶的ngramstate。该backoff边上的输入字符为空,输出字符也为空,该backoff边上的权重值为当前ngram对应的backoffweight(回退权重值)。通过回退边的连接,可确定当前ngramstate对应的低阶state(即历史state),然后采用一条边连接历史state对应的id到当前的ngramstate对应的id,该条边上的输入符号和输出符号均为当前ngram,该条边上的权重值为该ngram对应的对数概率。

当采用上述方法parse到1000万个ngram时,可将这些ngram的state写入到磁盘上面,同时清空内存中已经写入的state对应的信息,直到parse完成所有的ngram。采用该方法生成100g以上的ngram对应的高阶语言模型,内存消耗在200g左右,相对现有的高阶语言模型的构建方法,节省了大量内存。

基于所生成的高阶语言模型,服务器对高阶语言模型进行降阶处理,去除部分重要性较低的基础音素,得到低阶语言模型。

基于所生成的高阶语言模型和低阶语言模型,服务器通过对高阶语言模型和低阶语言模型进行差分计算,可得到差分语言模型。服务器进行差分计算时,所应用的公式如下:

logpdiff(w|h)=logp2(w|h)-logp1(w|h)(1)

αdiff(h)=α2(h)-α1(h)(2)

其中,pdiff(w|h)是差分语言模型的概率,p2(w|h)是高阶语言模型的概率p1(w|h)是低阶语言模型的概率,α是回退时的分数。

需要说明的是,差分语言模型能够采用上述公式(1)和公式(2)表示的前提是,低阶语言模型的ngram集合为高阶语言模型的ngram的子集,在满足该条件时,当高阶语言模型回退时,低阶语言模型必然回退,差分语言模型能够表示成公式(1)和(2)中回退的语言模型的形式。如果高阶语言模型的ngram集合不是低阶语言模型的超集,当高阶语言模型回退时,低阶语言模型不一定回退,此时差分语言模型将会无法表示成公式(1)和(2)中回退的语言模型的形式,从而在进行解码时候可能会产生一些潜在的错误计算。

402、终端根据第一解码网络和第二解码网络对上一音频帧进行解码,得到第一令牌列表。

在语音识别场景下,当通过麦克风等设备采集到语音信号后,终端按照预设时长将语音信号切分为多个音频帧,并对多个音频帧逐帧进行解码。在进行解码之前,终端首先对令牌列表中包括的令牌进行初始化,得到初始令牌,该初始令牌在第一解码网络中对应的第一状态state.a为初始状态,该初始令牌在第二解码网络中对应的第二状态state.b也为初始状态,即该初始令牌中的状态对<state.a,state.b>为<0,0>,该初始令牌对应的解码分数也为0。然后终端基于初始令牌,通过对多个音频帧进行解码,获取上一音频帧对应的第一令牌列表。其中,第一令牌列表包括对上一音频帧进行解码得到的多个第一令牌,该第一令牌包括在不同解码网络中进行解码形成的状态对及其解码分数,该状态对用于表征低阶语言模型对应的第一解码网络中的第一状态和差分语言模型对应的第二解码网络中的第二状态之间的对应关系。

当上一帧音频帧为第一音频帧时,终端将上一音频帧输入到第一解码网络中,并从初始令牌的state.a开始遍历所有的输入为空的边。对于任一输入为空的边,如果该边为不存在出词点的边,则初始令牌中state.b的状态维持不变;如果该边为存在出词点的边,则获取第一解码网络中的解码分数tot_cost及出词点的词,并以state.b当前状态为起始状态,查询第二解码网络中是否存在输入符号和出词点的词相同的边,如果查询到第二解码网络中不存在输入符号和出词点的词相同的边,则通过回退边进行回退,在回退状态下继续进行查询,直至查询到存在输入符号和输出符号相同的边;如果查询到存在输入符号和出词点的词相同的边,则将state.a跳转至出词点的边的下一状态,得到更新的state.a,将state.b跳转至输入符号和出词点的词相同的边的下一状态,得到更新的state.b,将更新的state.a和更新的state.b形成状态对,并对第二解码网络中形成的解码路径进行重评分,将重评分分数与第一解码网络中的解码分数之和作为新的tot_cost,进而将新的tot_cost和新的状态对<state.a,state.b>更新初始令牌,并将更新的令牌加入到更新的令牌列表中,该更新的令牌列表可以表示newtokenlist。

重复执行上述过程,直至遍历完所有输入为空的边。对于得到的newtokenlist中的令牌递归执行上述过程,直至没有新的令牌加入到newtokenlist,且同样的状态对没有解码分数更小的令牌形成。终端将newtokenlist中的令牌复制到第一令牌列表中,该第一令牌列表可以表示为curtokenlist,并清空将newtokenlist中的令牌。

当上一音频帧不是第一音频帧时,终端根据第一解码网络和第二解码网络对上一音频帧进行解码得到第一令牌列表的过程,与终端对当前音频帧进行解码得到第二令牌列表的过程相同,具体可参见下述过程,所不同的是,对上一音频帧进行解码时参考其上一音频帧,对当前音频帧进行解码时参考其上一音频帧。

403、终端从第一令牌列表中获取最小解码分数对应的目标令牌。

终端按照解码分数,从第一令牌列表中获取解码分数最小的最优令牌,该最优令牌即为目标令牌。

404、终端根据目标令牌和当前音频帧的声学向量,确定对当前音频帧进行解码时的剪枝参数。

其中,剪枝参数包括第一剪枝参数、第二剪枝参数及第三剪枝参数等,第一剪枝参数可用curcutoff表示,用于在基于第一令牌列表中的各个第一令牌进行解码之前,确定是否跳过任一第一令牌;第二剪枝参数可用am_cutoff表示,用于在基于第一令牌列表中的各个第一令牌在第一解码网络进行解码时,确定是否跳过任一第一令牌;第三剪枝参数可用nextcutoff表示,用于在基于第一令牌列表中的各个第一令牌在第二解码网络进行解码时,确定是否跳过任一第一令牌。

终端根据目标令牌和当前音频帧的声学向量,确定对当前音频帧进行语音解码时的剪枝参数时,步骤如下:

4041、终端获取目标令牌对应的解码分数,根据目标令牌对应的解码分数与预设数值,确定第一剪枝参数。

终端获取目标令牌对应的解码分数,并将目标令牌对应的解码分数与预设数值之和,确定为第一剪枝参数。其中,预设数值可由研发人员设置,该预设数值一般为10。预设数值可以表示为config.beam,第一剪枝参数可以表示为curcutoff=tot_cost+config.beam。

4042、终端将声学向量输入到第一解码网络中,并以目标令牌的第一状态为起始状态,在第一解码网络中遍历输入非空的边,根据每条输入非空的边形成的第一解码路径,对第二初始剪枝参数进行更新,得到第二剪枝参数。

其中,第二初始剪枝参数一般设置为无穷大。对第二初始剪枝参数的更新过程为:终端以目标令牌的第一状态state.a为起始状态,遍历输入非空的边,对于任一条输入非空的边形成的第一解码路径,终端获取该第一解码路径在声学模型下的第一声学分数,并根据目标令牌对应的解码分数、第一声学分数及预设数值所确定的分数,对第二初始剪枝参数进行更新,得到第二剪枝参数。终端获取目标令牌对应的解码分数、两倍的第一声学分数及预设数值相加得到的总分数,如果该总分数小于第二初始剪枝参数,则对第二初始剪枝参数进行更新;如果该总分数大于第二初始剪枝参数,则不对第二初始剪枝参数进行更新。当采用所有输入非空的边形成的第一解码路径不断对第二初始剪枝参数进行更新,最终可得到第二剪枝参数。

4043、终端以目标令牌的第二状态为起始状态,在第二解码网络中对每条输入非空的边形成的第一解码路径进行重评分,根据重评分结果,对第三初始剪枝参数进行更新,得到第三剪枝参数。

其中,第三初始剪枝参数一般设置为无穷大。对第三初始剪枝参数的更新过程为:

40431、对于任一条输入非空的边形成的第一解码路径,终端获取第一解码路径在声学模型下的第一声学分数。

40432、终端获取第一解码路径在第一解码网络中的第一路径分数。

终端将第一解码路径中各条边上的权重值相加,得到第一路径分数。

40433、终端获取第一解码路径在第二解码网络中的第一重评分分数。

本步骤包括以下几种情况:

第一种情况、当输入非空的边形成的第一解码路径上不存在出词点,终端无法获取到待查询的词,此时无需在第二解码网络进行重评分,该第一解码路径在第二解码网络中的第一重评分分数为0。

第二种情况、当输入非空的边形成的第一解码路径上存在出词点,终端获取出词点的词,并以目标令牌的第二状态为起始状态,在第二解码网络中查询是否存在输入符号与出词点的词相同的边,如果查询到第二解码网络中不存在输入符号与出词点的词相同的边,则通过回退边进行回退,在回退状态下继续进行查询,直至查询到输入符号和输出符号相同的边,并将从第二状态到最终状态之间的各条边上的权重值作为第一重评分分数;如果查询到第二解码网络中存在输入符号与出词点的词相同的边,则获取与出词点的词相同的边的权重值,该权重值即为第一重评分分数。

40434、终端根据目标令牌对应的解码分数、第一声学分数、第一路径分数、第一重评分分数及预设数值所确定的分数,对第三初始剪枝参数进行更新,得到第三剪枝参数。

终端获取目标令牌对应的解码分数、第一声学分数、第一路径分数、第一重评分分数及预设数值的总分数,如果该总分数小于第三初始剪枝参数,则将第三初始剪枝参数更新为该总分数,如果该总分数大于第三初始剪枝参数,则不对第三初始剪枝参数进行更新。当采用所有输入非空的边形成的第一解码路径不断对第三初始剪枝参数进行更新,最终可得到第三剪枝参数。

405、终端根据第一令牌列表、剪枝参数及声学向量,对当前音频帧进行解码。

终端根据第一令牌列表、剪枝参数及声学向量,对当前音频帧进行解码时,步骤如下:

4051、终端将声学向量输入到第一解码网络中,并遍历第一令牌列表中的每个第一令牌。

4052、对于任一第一令牌,终端根据第一令牌对应的解码分数和第一剪枝参数,确定是否跳过第一令牌。

终端获取该第一令牌对应的解码分数,并将第一令牌的解码分数与第一剪枝参数进行比较,如果该第一令牌的解码分数大于第一剪枝参数,则跳过该第一令牌;如果该第一令牌的解码分数小于第一剪枝参数,则确定执行该第一令牌。

4053、当确定执行第一令牌,终端以第一令牌的第一状态为起始状态,在第一解码网络中遍历输入非空的边,根据每条输入非空的边形成的第二解码路径和第二剪枝参数,确定是否跳过第一令牌。

当根据第一剪枝参数确定执行该第一令牌时,终端以第一令牌的第一状态为起始状态,在第一解码网络中遍历输入非空的边。对于任一条输入非空的边形成的第二解码路径,获取第二解码路径在声学模型下的第二声学分数,并将根据第一令牌对应的解码分数和第二声学分数所确定的分数与第二剪枝参数进行比较,如果根据第一令牌对应的解码分数和第二声学分数所确定的分数大于第二剪枝参数,则跳过第一令牌,否则,执行第一令牌。具体地,终端获取第一令牌对应的解码分数和两倍的第二声学分数的总分数,如果该总分数大于第二剪枝参数,则跳过该第一令牌,如果该总分数小于第二剪枝,则执行该第一令牌。

进一步地,当根据第二剪枝参数确定执行该第一令牌时,如果根据第一令牌对应的解码分数、第二声学分数及预设数值所确定的分数小于第二剪枝参数,则终端更新第二剪枝参数。具体地,终端获取第一令牌对应的解码分数、两倍的第二声学分数及预设数值的总分数,如果该总分数小于第二剪枝参数,则将第二剪枝参数更新为该总分数,如果该总分数大于第二剪枝参数,则不对该第二剪枝参数进行更新。当第二剪枝参数更新后,在确定是否跳过任一第一令牌时,将根据更新的第二剪枝参数进行确定。

4053、当确定执行第一令牌,终端以第一令牌的第二状态为起始状态,在第二解码网络中对每条输入非空的边形成的第二解码路径进行重评分,根据重评分结果和第三剪枝参数,确定是否跳过第一令牌。

当根据第二剪枝参数确定执行第一令牌时,终端以第一令牌的第二状态为起始状态,在第二解码网络中对每条输入非空的边形成的第二解码路径进行重评分。

第一种情况、对于任一条输入非空的边形成的第二解码路径,终端获取第二解码路径在声学模型下的第二声学分数,当输入非空的边形成的第二解码路径上不存在出词点时,终端获取第二解码路径在第一解码网络中的第二路径分数,如果根据第一令牌的解码分数、第二路径分数及第二声学分数所确定的分数大于第三剪枝参数,则跳过第一令牌,否则,执行第一令牌。具体地,终端获取第一令牌的解码分数、第二路径分数及第二声学分数的总分数,如果该总分数大于第三剪枝参数,则跳过第一令牌;如果该总分数小于第三剪枝参数,则执行第一令牌。

进一步地,当根据第三剪枝参数确定执行第一令牌时,终端获取第一令牌的解码分数、第二路径分数、第二声学分数及预设数值的总分数,如果该总分数小于第三剪枝参数,则将第三剪枝参数更新为该总分数;如果该总分数大于第三剪枝参数,则不对该第三剪枝参数进行更新。当第三剪枝参数更新后,在确定是否跳过任一第一令牌时,将根据更新的第二三枝参数进行确定。

第二种情况、对于任一条输入非空的边形成的第二解码路径,终端获取第二解码路径在声学模型下的第二声学分数,第二解码路径在第一解码网络中的第二路径分数,当输入非空的边形成的第二解码路径上存在出词点时,终端获取出词点的词,并以第一令牌的第二状态为起始状态,在第二解码网络中查询是否存在输入符号与出词点的词相同的边,如果查询到第二解码网络中不存在输入符号与出词点的词相同的边,则通过回退边进行回退,在回退状态下继续进行查询,直至查询到输入符号和输出符号相同的边,并将从第二状态到最终状态之间的各条边上的权重值作为第二重评分分数;如果查询到第二解码网络中存在输入符号与出词点的词相同的边,则获取与出词点的词相同的边的权重值,该权重值即为第二重评分分数。基于所获取到的第二重评分分数,终端获取第一令牌的解码分数、第二路径分数、第二声学分数及第二重评分分数所确定的分数,如果根据第一令牌的解码分数、第二路径分数、第二声学分数及第二重评分分数所确定的分数大于第三剪枝参数,则跳过第一令牌,否则,执行第一令牌。

进一步地,当根据第三剪枝参数确定执行第一令牌时,终端获取第一令牌的解码分数、第二路径分数、第二声学分数、第二重评分分数及预设数值确定的总分数,如果该总分数小于第三剪枝参数,则将第三剪枝参数更新后该总分数;如果该总分数大于第三剪枝参数,则不对该第三剪枝参数进行更新。当第三剪枝参数更新后,在确定是否跳过任一第一令牌时,将根据更新的第三剪枝参数进行确定。

4054、当确定执行第一令牌,终端通过对第一令牌进行状态跳转,获取第二令牌,第二令牌包括更新的状态对及其解码分数。

当根据第三剪枝参数确定执行第一令牌时,终端根据第一解码网络中的遍历结果,对第一令牌中的第一状态进行状态跳转,得到更新后的第一状态,并根据第二解码网络中的重评分结果,对第一令牌中的第二状态进行状态跳转,得到更新后的第二状态,进而将更新后第一状态和更新后的第二状态组成的第二令牌的状态对,并将根据第一令牌对应的解码分数、在第一解码网络中的路径分数、在第二解码网络中的重评分分数及在声学模型下的第二声学得分,确定第二令牌对应的解码分数。

具体地,第一令牌进行状态跳转时,包括以下几种情况:

当输入非空的边形成的第二解码路径上不存在出词点的边时,终端将第一令牌的第一状态跳转至输入非空的边的下一状态,而第一令牌的第二状态保持不变。

当输入非空的边形成的第二解码路径上存在出词点的边时,终端将第一令牌的第一状态跳转至出词点的边的下一状态,将第一令牌中的第二状态跳转至输入符号与输出符号相同的边的下一状态。

4055、终端将每个第一令牌对应的第二令牌组成第二令牌列表。

当得到第二令牌后,终端将第二令牌加入到第二令牌列表中,直至遍历完第一令牌列表中的每个第一令牌。该第二令牌列表为当前音频帧的curtokenlist。

4056、终端将第二令牌列表中解码分数最小的第二令牌,确定为对当前音频帧的解码结果。

基于所得到的第二令牌列表,终端从第二令牌列表中获取解码分数最小的第二令牌,并将该第二令牌确定为对当前音频帧的解码结果。

需要说明的是,上述以根据上一音频帧的第一令牌列表、第一解码网络及第二解码网络,对当前音频帧进行解码为例,对于其他的音频帧进行解码可参照解码方式,此处不再赘述。

在本发明的另一个实施例中,终端还可通过词典动态扩张解码路径,然后应用语言模型进行动态重评分和剪枝过程。采用该种方式可以不用生成结合词典和语言模型的tlg资源,对资源的需求量小,且仅需要生成相关语言模型的g.fst网络。

图5为应用不同语言模型对应的解码网络进行解码过程的示意图,参见图5,在tlg.fst(低阶语言模型)上解码时,解码路径0-1-2-4-6对应的解码结果为“今天天气”,解码分数为0+0.8+1.2=2.0;解码路径0-1-2-4-7对应的解码结果为“今天天启”,解码分数为0+0.8+1.0=1.8,对比上述两个结果,“今天天启”的解码分数比“今天天气”的解码分数要小,结果更优。然而,经过g.fst(差分语言模型)进行重评分,“天气”的重评分分数为0.1,解码路径0-1-2-4-6的总分数为2.1分;“天启”的重评分分数为0.4,解码路径0-1-2-4-7的总分数为1.8+0.4=2.2。经过重评分之后,“今天天气”的总分数2.1小于“今天天启”的总分数2.2,最终输出的解码结果为“今天天气”。

需要说明的是,上述以终端进行语音解码为例,在实际应用中,终端还可以将采集到的语音数据发送至服务器,从服务器获取语音解码结果,而不直接进行解码。

本发明实施例提供的方法,无需生成高阶语言模型对应的解码网络,基于低阶语言模型和差分语言模型对应的解码网络进行解码,在确保解码精度的前提下,节省了计算资源和存储资源。且根据对上一音频帧的解码结果,对当前音频帧的解码进行解码,提高了解码速度。

参见图6,本发明实施例提供了一种语音解码装置,该装置包括:

获取模块601,用于从第一令牌列表中获取最小解码分数对应的目标令牌,第一令牌列表包括对上一音频帧进行解码得到的多个第一令牌,第一令牌包括在不同解码网络中进行解码形成的状态对及其解码分数,状态对用于表征低阶语言模型对应的第一解码网络中的第一状态和差分语言模型对应的第二解码网络中的第二状态之间的对应关系;

确定模块602,用于根据目标令牌和当前音频帧的声学向量,确定对当前音频帧进行解码时的剪枝参数,剪枝参数用于对当前音频帧的解码过程进行约束;

解码模块603,用于根据第一令牌列表、剪枝参数及声学向量,对当前音频帧进行解码。

在本发明的另一个实施例中,确定模块602,用于获取目标令牌对应的解码分数,根据目标令牌对应的解码分数与预设数值,确定第一剪枝参数;将声学向量输入到第一解码网络中,并以目标令牌的第一状态为起始状态,在第一解码网络中遍历输入非空的边,根据每条输入非空的边形成的第一解码路径,对第二初始剪枝参数进行更新,得到第二剪枝参数;以目标令牌的第二状态为起始状态,在第二解码网络中对每条输入非空的边形成的第一解码路径进行重评分,根据重评分结果,对第三初始剪枝参数进行更新,得到第三剪枝参数。

在本发明的另一个实施例中,确定模块602,用于对于任一条输入非空的边形成的第一解码路径,获取第一解码路径在声学模型下的第一声学分数;

根据目标令牌对应的解码分数、第一声学分数及预设数值所确定的分数,对第二初始剪枝参数进行更新,得到第二剪枝参数。

在本发明的另一个实施例中,确定模块602,用于对于任一条输入非空的边形成的第一解码路径,获取第一解码路径在声学模型下的第一声学分数;获取第一解码路径在第一解码网络中的第一路径分数;获取第一解码路径在第二解码网络中的第一重评分分数;根据目标令牌对应的解码分数、第一声学分数、第一路径分数、第一重评分分数及预设数值所确定的分数,对第三初始剪枝参数进行更新,得到第三剪枝参数。

在本发明的另一个实施例中,解码模块603,用于将声学向量输入到第一解码网络中,并遍历第一令牌列表中的每个第一令牌;,对于任一第一令牌,根据第一令牌对应的解码分数和第一剪枝参数,确定是否跳过第一令牌;当确定执行第一令牌,以第一令牌的第一状态为起始状态,在第一解码网络中遍历输入非空的边,根据每条输入非空的边形成的第二解码路径和第二剪枝参数,确定是否跳过第一令牌;当确定执行第一令牌,以第一令牌的第二状态为起始状态,在第二解码网络中对每条输入非空的边形成的第二解码路径进行重评分,根据重评分结果和第三剪枝参数,确定是否跳过第一令牌;当确定执行第一令牌,通过对第一令牌进行状态跳转,获取第二令牌,第二令牌包括更新的状态对及其解码分数;将每个第一令牌对应的第二令牌组成第二令牌列表;将第二令牌列表中解码分数最小的第二令牌,确定为对当前音频帧的解码结果。

在本发明的另一个实施例中,解码模块603,用于对于任一条输入非空的边形成的第二解码路径,获取第二解码路径在声学模型下的第二声学分数;如果根据第一令牌对应的解码分数和第二声学分数所确定的分数大于第二剪枝参数,则跳过第一令牌,否则,执行第一令牌。

在本发明的另一个实施例中,该装置还包括:

更新模块,用于如果根据第一令牌对应的解码分数、第二声学分数及预设数值所确定的分数小于第二剪枝参数,则更新第二剪枝参数。

在本发明的另一个实施例中,解码模块603,用于对于任一条输入非空的边形成的第二解码路径,获取第二解码路径在声学模型下的第二声学分数;当输入非空的边上不存在出词点时,获取第二解码路径在第一解码网络中的第二路径分数;如果根据第一令牌的解码分数、第二路径分数及第二声学分数所确定的分数大于第三剪枝参数,则跳过第一令牌,否则,执行第一令牌。

在本发明的另一个实施例中,该装置还包括:

更新模块,用于如果根据第一令牌的解码分数、第二路径分数、第二声学分数及预设数值所确定的分数小于第三剪枝参数,则更新第三剪枝参数。

在本发明的另一个实施例中,解码模块603,用于对于任一条输入非空的边形成的第二解码路径,获取第二解码路径在声学模型下的第二声学分数;当输入非空的边上存在出词点时,获取第二解码路径在第一解码网络中的第二路径分数;获取第二解码路径在第二解码网络中的第二重评分分数;如果根据第一令牌的解码分数、第二路径分数、第二声学分数及第二重评分分数所确定的分数大于第三剪枝参数,则跳过第一令牌,否则,执行第一令牌。

在本发明的另一个实施例中,该装置还包括:

更新模块,用于如果根据第一令牌的解码分数、第二路径分数、第二声学分数、第二重评分分数及预设数值确定的分数小于第三剪枝参数,则更新第三剪枝参数。

在本发明的另一个实施例中,解码模块603,用于根据第一解码网络中的遍历结果,对第一令牌中的第一状态进行状态跳转,得到更新后的第一状态;根据第二解码网络中的重评分结果,对第一令牌中的第二状态进行状态跳转,得到更新后的第二状态;将更新后第一状态和更新后的第二状态组成的第二令牌的状态对;根据第一令牌对应的解码分数、在第一解码网络中的路径分数、在第二解码网络中的重评分分数及在声学模型下的第二声学得分,确定第二令牌对应的解码分数。

综上所述,本发明实施例提供的装置,无需生成高阶语言模型对应的解码网络,基于低阶语言模型和差分语言模型对应的解码网络进行解码,在确保解码精度的前提下,节省了计算资源和存储资源。且根据对上一音频帧的解码结果,对当前音频帧的解码进行解码,提高了解码速度。

图7示出了本发明一个示例性实施例提供的终端700的结构框图。该终端700可以是:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端700还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。

通常,终端700包括有:处理器701和存储器702。

处理器701可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器701可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器701也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器701可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器701还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器702可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器702还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器702中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器701所执行以实现本申请中方法实施例提供的语音解码方法。

在一些实施例中,终端700还可选包括有:外围设备接口703和至少一个外围设备。处理器701、存储器702和外围设备接口703之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口703相连。具体地,外围设备包括:射频电路704、触摸显示屏705、摄像头706、音频电路707、定位组件708和电源709中的至少一种。

外围设备接口703可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器701和存储器702。在一些实施例中,处理器701、存储器702和外围设备接口703被集成在同一芯片或电路板上;在一些其他实施例中,处理器701、存储器702和外围设备接口703中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路704用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路704通过电磁信号与通信网络以及其他通信设备进行通信。射频电路704将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路704包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路704可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路704还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。

显示屏705用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏705是触摸显示屏时,显示屏705还具有采集在显示屏705的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器701进行处理。此时,显示屏705还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏705可以为一个,设置终端700的前面板;在另一些实施例中,显示屏705可以为至少两个,分别设置在终端700的不同表面或呈折叠设计;在再一些实施例中,显示屏705可以是柔性显示屏,设置在终端700的弯曲表面上或折叠面上。甚至,显示屏705还可以设置成非矩形的不规则图形,也即异形屏。显示屏705可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

摄像头组件706用于采集图像或视频。可选地,摄像头组件706包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件706还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路707可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器701进行处理,或者输入至射频电路704以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端700的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器701或射频电路704的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路707还可以包括耳机插孔。

定位组件708用于定位终端700的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件708可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。

电源709用于为终端700中的各个组件进行供电。电源709可以是交流电、直流电、一次性电池或可充电电池。当电源709包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。

在一些实施例中,终端700还包括有一个或多个传感器710。该一个或多个传感器710包括但不限于:加速度传感器711、陀螺仪传感器712、压力传感器713、指纹传感器714、光学传感器715以及接近传感器716。

加速度传感器711可以检测以终端700建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器711可以用于检测重力加速度在三个坐标轴上的分量。处理器701可以根据加速度传感器711采集的重力加速度信号,控制触摸显示屏705以横向视图或纵向视图进行用户界面的显示。加速度传感器711还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器712可以检测终端700的机体方向及转动角度,陀螺仪传感器712可以与加速度传感器711协同采集用户对终端700的3d动作。处理器701根据陀螺仪传感器712采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器713可以设置在终端700的侧边框和/或触摸显示屏705的下层。当压力传感器713设置在终端700的侧边框时,可以检测用户对终端700的握持信号,由处理器701根据压力传感器713采集的握持信号进行左右手识别或快捷操作。当压力传感器713设置在触摸显示屏705的下层时,由处理器701根据用户对触摸显示屏705的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器714用于采集用户的指纹,由处理器701根据指纹传感器714采集到的指纹识别用户的身份,或者,由指纹传感器714根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器701授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器714可以被设置终端700的正面、背面或侧面。当终端700上设置有物理按键或厂商logo时,指纹传感器714可以与物理按键或厂商logo集成在一起。

光学传感器715用于采集环境光强度。在一个实施例中,处理器701可以根据光学传感器715采集的环境光强度,控制触摸显示屏705的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏705的显示亮度;当环境光强度较低时,调低触摸显示屏705的显示亮度。在另一个实施例中,处理器701还可以根据光学传感器715采集的环境光强度,动态调整摄像头组件706的拍摄参数。

接近传感器716,也称距离传感器,通常设置在终端700的前面板。接近传感器716用于采集用户与终端700的正面之间的距离。在一个实施例中,当接近传感器716检测到用户与终端700的正面之间的距离逐渐变小时,由处理器701控制触摸显示屏705从亮屏状态切换为息屏状态;当接近传感器716检测到用户与终端700的正面之间的距离逐渐变大时,由处理器701控制触摸显示屏705从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图7中示出的结构并不构成对终端700的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

本发明实施例提供的终端,无需生成高阶语言模型对应的解码网络,基于低阶语言模型和差分语言模型对应的解码网络进行解码,在确保解码精度的前提下,节省了计算资源和存储资源。且根据对上一音频帧的解码结果,对当前音频帧的解码进行解码,提高了解码速度。

本发明实施例提供了一种计算机可读存储介质,存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现语音解码方法。

本发明实施例提供的计算机可读存储介质,无需生成高阶语言模型对应的解码网络,基于低阶语言模型和差分语言模型对应的解码网络进行解码,在确保解码精度的前提下,节省了计算资源和存储资源。且根据对上一音频帧的解码结果,对当前音频帧的解码进行解码,提高了解码速度。

需要说明的是:上述实施例提供的语音解码装置在进行语音解码时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将语音解码装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的语音解码装置与语音解码方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1