10小时训练数据打造多语种语音识别新高度

本文联合撰写:

腾讯:吕志强,颜京豪,胡鹏飞,康健,阿敏巴雅尔

导语|在刚刚结束的NIST OPENASR评测中,TEG AI语音联合清华大学,刷新世界小语种语音识别比赛6项第一。从2000年开始,NIST组织的RT(英文语音识别),LRE(语音语种识别),SRE(语音说话人识别),OPENKWS(语音关键词识别)等比赛一直是语音届的标杆竞赛,其组织比赛方向也可以看出目前学术和工业界的语音研究发展方向。长期以来,NIST组织的语音比赛受到了来自世界一线的研究单位支持与参与。而2020年新增的OPENASR比赛,则更加关注小语种语音技术。

工业级语音识别系统通常需要上万小时,甚至十万小时以上规模的语音标注数据,才能在某些特定场景(如干净朗读,新闻)达到90%以上的识别率。但是在世界范围内存在7000多个语种,仅中国境内就存在200多个语种,汉语的使用人群只有90%,余下绝大多数语种都是小语种。

据统计,世界范围内,小于百万人群使用的小语种占据世界所有语种的80%(如图1),对于甚至Google这样的互联网公司,目前在其语音识别产品中,也仅仅覆盖了世界所有语种的4%。

巧媳妇难为无米之炊,小语种语音识别以其难以获取,难以标注,难以评估,已经成为世界性的研究难题。而NIST今年放出了这个任务,也足见小语种目前已经成为学界和业界的下一个前沿风口。

图1. 世界不同人群数量语种的数量和占比,小于百万人群使用的小语种占据世界所有语种的80% 

目前,小语种识别受到越来越多关注。著名的Babel项目给自己设定的目标即是“在7天时间为一种新语言构造一个语音识别系统”。该项目于2011年启动,参与单位包括世界各地CMU、UC Berkeley ICSI实验室、IBM Watson研究中心、BBN公司等著名机构。Babel项目不仅取得了丰硕的科研成果,同时对研究者开放了超过20种语言的数据包,有力促进了小语种研究。

小语种语音数据难以获取不仅表现在语音上,更表现在语料,发音词典,标注资源上。对于许多小语种,姑且不说上万小时语音数据,就连100小时标注数据的获取也举步维艰。为此, 世界语音学术领域的权威组织NIST在2020年底,举办了OPENASR比赛。

旨在低资源语种限制下,评估一下当前SOTA(最前沿技术)在10小时门槛下的语音识别性能,比赛要求参赛队伍在给定数据一周后,在限定的关门时间内完成语音识别转写任务,比赛分为受限条件(Constrained condition)和非受限条件(Unconstrained condition)两个赛道,前者只能使用组委会提供的10小时标注语音识别数据,后者可以使用组委会提供10小时受限数据之外的数据。

比赛语种包括Amharic,Somali,Guarani,Javanese,Cantonese,Mongolian等十个语种;本次报名团队达到20个左右。我们联合清华大学参加了所有语种的受限条件,同时我们又参与了Cantonese,Mongolian两个非限定条件赛道。最后结果来看,获得Javanese,Guarani,Cantonese,Mongolian等四种语言受限条件第1名;Cantonese,Mongolian两种语言非受限条件第1名,LeaderBoard如下。

图2. 比赛leaderboard(受限条件前5名+非受限条件前3名, 队名TNT)

本文将以万字长文讲述我们如何利用如此低资源训练数据迅速打造小语种语音识别系统的技术框架,主要包括以下在比赛中使用到的如下技术创新:

  • 多语种声学预训练;

  • multi-band(多带宽)识别模型;

  • 端到端(e2e)系统的改进,e2e系统和hybrid-HMM系统融合;

  • 多种前,后端处理手段提高数据的可靠性和多样性;

一. 受限系统

由于受限系统只提供10小时训练数据,我们采取的主要方案还是语音领域使用较多的Hybrid HMM架构。采用CNN-TDNN-F-A作为声学模型的主干网络,在此之上进行lattice无关的最大交叉熵区分度训练(LF-MMI)[1];而CNN-TDNN-F-A和Dan Povey提出的TDNN-F(factorized TDNN)[3] 不同在于,在CNN和TDNN-F联合建模后又加入了Self-attention模块[2] ,藉此在输入信息里学习更多的位置相关信息。

由于数据受限,我们选择了融合多种数据扩充方法以增加性能,包括常用的速度和响度pertube[4], Spec-Aug[5],Wav-Aug[6]以及混响和噪声Aug[7]。这些17-20年由不同机构提出的常用语音数据扩充方法可以有效避免再输入信号做增强时对主体信号的伤害,在极低资源场景都被认为是非常有效的方法。

除此之外,系统的多样性对于最终系统融合至关重要。对于每个语言,我们均在多种不同方式训练得到的单系统上进行融合。

1.1 系统概述

由于缺乏有效的声学资源,NN-HMM方式的hybrid声学建模被证明比目前学界前沿的e2e建模在低资源场景更加有效,所以在受限条件下,该系统框架被贯彻使用。如图3所示,系统框架包括数据清洗和预处理,数据增强,声学,词典和语言模型训练,解码以及系统后处理融合5大部分;通常,我们将语音信息拆分成声学模型和语言模型,词典模型三部分,对声学的部分,我们此次比赛中多进行多语言共享或借用学习,再对语言模型,词典模型等和语言相关的独立部分,进行单独建模。

图3. 语音识别系统概述,整个系统可以大概分为数据清洗和预处理,数据增强,声学,词典和语言模型训练,解码和系统融合5大部分

首先,在原始训练数据上,采用常规GMM-HMM迭代式训练,得到高精度桢对齐系统(mono-phone->tri-phone->lda-mllt->sat自适应),由于该过程比较经典,具体步骤不再赘述。

为了使得训练更加高效,我们看到原始训练存在一定比例的标注错误,因此在得到SAT-GMM-HMM系统后,我们首先使用该GMM搭建目标朗读抄本和垃圾音并联的错音,漏音清洗模型(data clean up),再利用在Cross Entropy(CE)准则上训练的NN-HMM得到的精细化NN模型进行二次data clean up,得到在原始纯净训练数据上的数据清洗边界,该边界也贯穿在后续对扩充数据的清洗过程和使用中,用于最后的Lattice Free MMI (LF-MMI)区分度准则声学模型[1]。

之后,上述不同数据扩充方式被应用在原始信号中以扩充训练数据的多样性,值得一提的是,Spec-Aug[5]在该过程中没有被应用在时域的信号层,而是被用来在频域的特征层进行扩充。

通过上述方式获得了原始数据20倍左右的扩充训练数据,有效缓解了数据不足的问题。在此基础上提取高精度mfcc和pitch特征,整合更低速率的i-vector特征进行说话人信息拼接,训练不同的说话人自适应声学模型,最终系统得益于对不同声学模型得到的lattice后进行的融合。

1.2 跨语种特征和预训练

目前对于多语种共享特征,常用的可共享特征包括瓶颈(Bottle Neck, BN)特征和后验概率特征(Posterior Feature, PF)。通常首先构造一个音素分类器,该分类器的中间层输出具有显著的发音区分性。一般中间层比其它层具有较少的节点数,因此称为瓶颈层,相应的输出称为瓶颈特征。

同时,该分类器的输出为输入语音帧对应的音素后验概率,同样具有明显的发音区分性,称为后验概率特征。但不幸的是,在10小时这个量级上,10种语言总共只有100小时。和之前我们在NIST OPENKWS评测中得到的结论不同,在这个规模和量级下,多语言瓶颈特征对于系统提升不大。

我们使用多任务学习的方式,通过共享同一个网络或网络的一部分对多个语言任务进行同时学习。基于这一学习方式,参与共享的网络在参数更新时可利用多个任务的误差信息,从而实现不同任务之间的信息共享。应用到小语种识别上,可以将包括小语种在内的多个语言作为不同任务,这些任务共享网络特征提取层,输出层则互相独立。

如下多语言共享的模型结构。该方法仅仅利用高精度mfcc特征(Multi-lang MFCC hires),就可以使得WER从0.515降低到0.487(和组委会保持一致,WER和CER的单位均使用小数表示,如WER 0.515意味着51.5%的词错误率)。

预训练在图像和NLP领域自从18年被提出后,至今方兴未艾,已经成为图像和NLP领域最炙手可热的SOTA算法。而语音领域的预训练至今一直没有较大突破。究其原因主要还是语音和图像,NLP不同,跨越语种的认知在大多数人类中都很难做到,更何况机器智能。

因此,语音想要和图像一样做到可以在不同语言和场景上泛化,难度上会更大一个级别。在本次比赛中,我们首次在系统中尝试了利用相同场景的组委会提供电话信道跨语种数据进行预训练,获得了显著的系统效果提升。

图4. 预训练跨语种Tera提取器

在本次受限场景中我们探索了近期提出的Tera模型(Transformer Encoder Representation from Alternation)[20],如图4所示。我们通过在组委会提供的电话信道数据中,训练跨语种Tera Transformer以获取Tera跨语种特征提取器。通过该方式迁移到下游的每个受限语种带标注语音的识别任务上,获得768 dim的预训练特征表示。

在次基础上,训练CNN-TDNNF-F-A,DFSMN,TDNN-F-BLSTM等声学模型。单系统实验结果证明,使用语音跨语种预训练特征可以从无监督数据中获得良好的和语种无关的信息表示,并获得更快的收敛速度。但目前在受限场景赛道的预训练,由于数据量依然较少,故提升比较有限。但欣喜的是,该方法可以和多语种高精度MFCC特征所获得的声学模型在系统lattice结果融合时,提供非常好的互补。

N.O.

SYSTEM

WER

CER

1

Multi-lang MFCC hires

0.487

0.456

2

Multi-lang MFCC hires+pitch

0.485

0.444

3

Tera

0.510

0.476

4

1+2+3 Fusion

0.458

0.424

表. 1 不同特征的预训练迁移到下游任务在单系统DEV集合Ground Truth VAD的结果

1.3 声学模型

我们提出将CNN-TDNN-F-A作为系统的声学模型主干网络,它主要包括若干卷积层(CNN),Factorized Time Delay Neural Network(TDNN-F)层[3]和Self-Attention层[2]。CNN通过使用local filters, max-pooling和weight sharing[11],在语音任务上可以在语谱图中获得在更广阔时频域视野下,对语音频率和时间变化的刻画,由于Very deep CNN单独建模的声学模型在计算复杂度和性能上存在瓶颈。

如今在语音识别任务中已经使用得不多或作为互补系统使用,而更为有效和经济的CNN-TDNN建模[12]则使用更加广泛。此次我们将CNN-TDNN换为CNN-TDNN-F,F即Factorized,后者乃语音hybrid系统中Dan Povey提出的创新性工作,类似于SVD分解的TDNN。

但为了克服SVD分解简化网络时,反传更新带来的矩阵不稳定性而导致的训练错误,TDNN-F在训练开始时就随机初始化,SVD分解后,其中一个矩阵在迭代中始终限制为半正定的,这种每轮mini-batch算完后的半正定约束,不仅不会损失任何建模能力,也符合SVD的前提假设,在2018-20年的hybrid系统中几乎是SOTA的标配。

而Self-attention自注意力机制自从2018年Transformer的提出后,在机器学习任务中被广为使用,其原理主要还是通过多头注意力机制,学习输入语谱不同位置和频率的关系表示,故本文则不赘述。我们通过将Self-Attention Network(SAN)层作为CNN-TDNN-F输出后的注意力表示,但会更多的限定时间区域[2],这样使得该系统更加适合语音识别任务。

图5. CNN-TDNNN-F-A网络结构

图5表示了我们在hybrid系统中获得最优性能的单系统CNN-TDNN-F-A的声学模型网络表示,由6层CNN加11层TDNN-F(隐层维数768,factorized瓶颈层维数120,160或256)以及SAN层(20个注意力头,8维key,16维value)组成,我们通过经验发现,在SAN层再后接两个TDNN-F可以有效提升系统性能。

除此之外,我们也训练了TDNN-F[3],TDNN-F-BLSTM(p),DFSMN[18] 三套系统,作为互补融合系统。这些声学模型同样通过LF-MMI进行区分度训练[1]。Batch size选取为128或64,Epochs设为6轮(Kaldi的epochs和常用端到端模型训练的epochs略有不同),初始学习率为0.0005,终止学习率为0.00005。最终的结果看来,通过系统融合虽然获得WER 0.02-0.03个绝对点的提升,达到了最优的性能结果。但起决定性作用的声学模型依然是CNN-TDNN-F-A。

1.4 说话人自适应

本次参赛系统的特征选取上,除了常规的hi-res MFCC以外,在带调语言(tonal langauge)上我们添加了常规的3维pitch特征[31],即带pitch音发声概率(POV-prob), 平均对数pitch减值(mean-subtracted-log-pitch), delta-of-raw-pitch(原始差分pitch)。通常这些信息在带调语言,如Cantonese,Vietnamese上可以更好地贴合说话人的发音特性。

在说话人自适应上,除了在SAT-GMM-HMM的过程中使用传统的fMLLR(cMLLR)变换声学特征以获得更准确的帧对齐信息外,传统fMLLR类算法或者需要两至三遍识别(第一遍结果做supervision,第二遍结果生成变换矩阵,最后识别),目前我们还是选用了更为方便的1-pass ivector方案,该方案基于对角UBM[14] 矩阵得到的说话人识别定长i-vector特征(本系统设为100维)。

其实,使用i-vector之类的做声学模型输入并不是传统的speaker adaptive training。最多是起到了告诉模型speaker间相似性的作用,其实我们将这个过程叫做speaker awared training更合适。使用该方法对主体声学特征进行拼接,为了更好地适应后续的声学CNN结构,100维的i-vector特征通过 Linear Discriminant Analysis(LDA)映射到了200维;实验结果表明,在10个限定语种上,使用带pitch特征的i-vector 说话人训练,对WER有0.01-0.03个绝对点的提升。

1.5 语言模型 2-pass&direction 

此次OPENASR对于语言模型依赖的训练语料并无限制,但网上可获取的训练语料通常偏重新闻。所以,在常规解码中,我们还是采用从IARPA Babel项目中的”training”部分(如Cantonese则采用IARPA-babel101b-v0.4c-build)和OPENASR比赛标注脚本中训练得到的N-gram语言模型用于第1遍解码。在此次比赛的10个小语种里,除了索马里语我们采用LDC-2018T1作为语言模型训练外部语料外,其他9种语言均可以在对应的IARPA Babel包中获得对应数据。

在一遍识别结果后,我们采用基于TDNN-LSTM的NN语言模型[15] 进行词图(lattice)重打分,循环神经网络语言模型通过下述公式作为常规CE目标的线性估计:

z 代表神经网络没有经过soft-max的原始结果,j 代表正确单词的序列下标。事实上,上述公式是常规CE准则的下界,用来使得模型在推理过程中可以自规范化(self-normalize),以节省运算时间。对于单词的特征表示,除了对常用的高频词采用one-hot表示外,letter n-gram特征也被用于生成单词的embedding表示,这使得我们可以利用子词(sub-word)信息以更好地表示数据里的相对稀缺词语。最后,我们采用裁剪词图重打分算法(pruned lattice-rescoring)得到的语言模型概率和1-pass解码得到的n-gram语言模型概率进行权重融合。

在语言模型重打分过程中,我们采用了正序和倒序文本进行两边打分。在每一遍打分中,对解码路径弧是否保留或删除的估计得分取决于lattice里的历史和未来两部分信息[21]。最终,基于RNN类的语言模型打分设定为0.5。不同于其他的系统报告,我们发现在OPENASR 任务中,该权重值只要设定的不是特别极端,对于最终的系统结果影响比较有限。

1.6 数据前处理

数据质量对于训练过程非常重要,主要体现在去除标注中出现的各类删除(del),添加(add)和替换(sub)错误,防止训练数据“过脏”(over-dirty);而数据鲁棒则对于数据的多样性非常重要,用于在低资源场景对数据进行扩充,提高系统的泛化性,防止系统过拟合。在我们的工作中,这两者都体现到了系统中。

1)数据清洗

数据清洗旨在通过一个脚本词状态和garbage状态(常用词汇)并联的n-gram biased ASR系统对训练数据进行识别,此biased ASR同样也通过修改解码路径grammar图,支持说话重复和不流利现象,非语言词汇的微小增删等现象。

  • step 1. 利用reference脚本中的文字,BUILD BIASED 语言模型,注意这里top n word的选取关于GARBAGE MODEL的鲁棒性,最小LM状态数则根据需求做调整,设置越小,表明需要越biased lm;discounting_constant 是一个0-1的数,表明语言模型回退概率,趋近于0表明搭建更biased语言模型;

  • step 2. 对脚本做group,同一个group共享一个biased 语言模型解码图;biased 语言模型解码,生成lattcie;

  • step 3. lattice 时间对齐,之后和reference脚本进行对齐,生成插入,删除,替换错误;

  • step 4. 处理静音,决定是否分句或者保留,也会考虑修改reference去match在这些non-scored 字符段,譬如在不流利时,重复时,会考虑直接修改reference脚本;

  • step 5. taint marker,生成 confidence term measure(ctm)

  • step 6. 根据step 5的结果切分(句子太短时可以不考虑)

  • step 7. 准备清洗后数据的新segment,尤其是在边缘处进行低通滤波平滑,以应对切分时的边缘畸变;

  • step 8. 去掉文音不匹配的地段,重新切分数据;

本系统数据清洗采用两遍策略,第一遍采用训练桢对齐系统的SAT-GMM-HMM系统,得到第一遍清洗后的帧边界用于训练NN-HMM的CE准确模型,获得更加准确的清洗位置和帧对齐信息,最后使用上述信息和数据扩充信号,进行LF-MMI区分度训练。

通过在DEV集上进行实验我们发现,上述数据清洗操作,对于某些语言的效果明显,如Cantonese,Tibetan,在单系统Cantonese上,data-clean up对系统WER 从0.501降低到0.487。但是,对于某些诸如Mongolian,Pashto类的拼写式语言,则提升比较有限。这可能在于汉藏语系的这些语言由于是表义文字,对于标注错误非常脆弱;但相反,对于拼写式语言,如Arabic,Pashto和Mongolian,标注错误只是局部影响一些sub-word,不会严重影响识别器的整体结果。

除此之外,在搭建biased LM时,我们会选择更biased到当前脚本词的偏重系数;使得清洗系统不至于删除过多的正确标注。

2)数据扩充

由于本任务主要还是处理低资源场景下的任务,数据增强通常在该任务下被证明是有效的。比赛中为了更好地利用所提供的训练数据,比赛规定在受限场景中也可以利用外部的噪声和混响等数据。为此,我们采用了几种近年来比较流行的数据增强方法提高训练数据的鲁棒性,使得模型在不同测试集上具有更好的一致性和泛化性。

  • 变速(speed)和变响(volume)扩充:在[4]中,直接在原始信号上利用sox做变速和变音量扩充被证明是非常有效的。通常我们采用常规的3个变速,变响版本,9,1.0和1.1;

  • 混响(reverb)和噪声(noise)扩充:由于DEV场景和训练数据在声学场景上会有差异,噪声上也不尽相同,但音乐类的干扰几乎没有,故我们在这部分的扩充中,只采用了reverb和noise两种方式[7]。对于稳定噪声我们选用MUSAN数据集里的内容,对于非稳定类噪声,本系统只考虑电话对话中常出现的babble noise,选用其他相同语言的其他人讲话进行模拟和叠加,信噪比通常随机选取在10dB以上。在混响上,我们采用模拟的不同房间的RIRs(从1到30),涵盖了小,中,大三种房间。由于评测场景以房间内外手机对话居多,混响的选取上我们比较保守,会把Signal To Noise Ratio(SRR)控制得比较大;

Wav-Aug: 近期提出的Wav-Aug算法[5]也是一类时域的数据扩充算法,它提供了上述扩充外的其他3种数据扩充方式:

1)pitch 修改常用于处理pitch在不同场景的变化问题;

2)频带消除滤波(band reject filtering)用于提升频谱鲁棒性;

3)时域遮罩(time masking)用于提升时域的鲁棒性;

Spec-Aug: Spec-Aug也是2019年Google提出的数据扩充方案[4],与前三者直接在信号级进行扩充不同的是,Spec-Aug在hybrid HMM系统中常作为特征提取后,声学NN模型前的一个中间处理层。在实现中,我们采用了在时间和频率两个维度的折叠和弯曲声学特征,对频域的特定频带和时域的特定区域进行遮罩(masking)两个主要操作。

从Dev集的实验来看,四种aug方式对识别结果的影响不同。其中speed pertube效果最为明显,且具有很强的互补性。我们在参赛系统中随机选取了这些数据增强方法,直到所有数据被扩充了20倍,扩充数据的清洗边界和对齐信息由他们对应的干净语音获得,再叠加到扩展数据中去。

1.7 预处理,解码和后处理

不同于DEV集,我们在拿到EVAL集后,发现有两个特点:一是比赛并没有提供“segments”文件,意味着参赛系统中必须自己实现语音活动检测(Speech Activity Detection, SAD)模块;二是数据既有8k又有16k,意味着单纯靠8k窄带识别系统并没有完整地利用高频信息;

但在受限条件上,训练数据并没有提供大于8k的,故本节主要描述一下我们在ASR前的SAD模块,解码参数,后处理,以及系统融合的工作。

1)端点检测(SAD)

在识别阶段,SAD的地位类似图像的检测任务,是一个可以去除和语音无关,保留语音有效内容的重要模块。同时作为一个前置的轻量级模块,SAD也可以减轻后端解码负担,提升解码速度;在SAD算法中,我们集成了并联CRNN+RNN[16]的和基于传统能量加pitch的输出语音概率,使得系统Valid Activity Detection(VAD)序列输出更加稳定;同时,在VAD序列上我们也添加了一阶dilation-erosion后处理,以及最后类似ETSI标准里的VAD logic hold-over算法,避免了局部帧结果对整体SAD产生的影响;

并联CRNN+RNN的VAD系统

在DEV集中,我们发现SAD在本ASR系统中的有效性和重要性。在单系统(CNN-TDNN-F-A chain model)上,Cantonese任务上测得,使用单纯基于能量的SAD只能得到0.501的WER,而采用本方法的VAD系统可以进一步提升到0.483,而人工标注VAD的理想结果(Oracle)是0.456,其中的GAP高达0.05(5个WER百分点)

2)解码(Decode)

在参赛系统中,我们采用了常规的hybrid-HMM里常用的基于WFST HCLG的静态解码图算法。第一阶段采用n-gram解码,解码beam为15, lattice  beam为8。解码出lattice后,使用两层TDNN-LSTM语言模型对lattice进行如1.5节中描述的重打分。

3)系统融合

通过不同特征(跨语种声学特征,预训练),数据扩充(变速,响度,混响,噪声, Wav&Spec Aug)和声学模型网络结构(CNN-TDNN-F-A, TDNN-LSTM(p),TDNN-F,DFSMN)所得到的系统,通常通过在1-best结果上ROVER可以实现融合的目的。在本系统中我们采用了性能更加出色的lattice融合[30]。Lattice融合不同于ROVER算法在1-best结果上进行投票和重打分,而是考虑到lattice上的更多候选词和弧上对应的解码分数,由于增加了不同信息源的解码结果,lattice融合可以获得比各个单系统和ROVER融合更好的性能。

4)结果后处理

从lattice融合后的lattice最优路径得到1-best结果后,我们通过置信度对输出单词进行过滤,对于识别结果置信度不高的单词输出进行丢弃。该方法虽然简单,但可以有效降低系统的输出插入错误,尤其是在Babel常见的口语场景,存在大量的重复修正,有声停顿和说话无意义错误(miscues)。

1.8 受限系统评估集结果

比赛的测试数据只在比赛前一周放出,要求各个参赛队伍在规定时间内提交结果,最终我们在受限场景各个语言通过nist官方打分得到的WER如表1所示,由于比赛参照指标只有WER,其他指标均作为参考,故本文沿用这个规定。

从结果可以看出,箭头左侧的系统均为单系统(数据清洗,前后处理,声学模型CNN-TDNN-F-A chain model,2-pass&way 语言模型重打分),检测右侧为多系统融合的结果。可以看到箭头右侧的系统可以带来3-7%个点的绝对WER下降。但遗憾的是,我们没有成功地在比赛关门时间提交Mongolian的系统融合结果,所以被组委会mark为带*号的结果的“0.449”;

表.1 受限场景下DEV和EVAL集的结果(箭头左侧:单系统;箭头右侧:预训练+多声学模型+数据扩充和清洗+系统融合)

在受限场景我们没有使用端到端ASR系统。因为在初步的实验中,我们尝试后发现WER高达100%以上,遂放弃了这个方案。但是在随后的非受限系统上,我们发现了端到端系统和hybrid-HMM系统具有很强的互补性;

我们力求在方案中实现目前工业界采用的从前端到后端行之有效的一整套方案。以上系统证明,我们对于一些带调语种(如Cantonese,Vietnamese)在10小时这个极其挑战性的场景上,可以达到0.60以上的识别率;对于一些拼写式语言,如阿尔泰系,闪含类语系的语言,虽然在WER上只能达到0.40(识别率0.60)左右,但是却并不影响该类语系中,母语掌握着对内容的把控和理解,因为CER可以达到0.30左右(相当于超过0.70的识别成功率);而对于Kurdish,Javanese或者Tamil这样的语言,由于我们并没有进行深入的发音,语法和语言的研究,WER普遍在0.60左右,可以看到,在10小时这个快速冷启动任务上,这些语种依旧任重道远。

由于比赛语种众多,时间有限,我们没有在所有语种上穷举和细微比较各个方式带来的提升。但初步在Cantonese的实验结果,让我们欣喜得看到这些对低资源语种搭建语音识别系统方法的互补性。

. 非受限系统

对于非受限系统,由于时间和精力所限,我们只参加了Cantonese和Mongolian两种语言。系统主体声学,词典和语言模型和受限系统基本保持一致,但是在该场景下,由于可以用到在公开渠道获取的16khz语音识别数据,于是在本节我们着重讲述端到端语音识别训练,混合带宽识别模型,对于语言相关问题的优化以及端到端和hybrid-hmm系统混合四部分额外的技术细节。

2.1 语音预训练

在非受限场景,由于可以用到其他外部数据。但我们发现使用过多信道不匹配的外部数据,尤其是非对话类新闻数据,反而在预训练上对性能是有损的。由于1.1节所述,语音预训练是语言不相关的。在我们的实验中,不同于受限条件,所有LDC官方提供的25个IARPA babel训练数据均用于训练跨语种特征以表示编码层,用于迁移到不同的下游任务;

2.2 端到端系统

我们在比赛中使用的e2e系统基于近期google在2020年底提出的conformer模型。作为transformer模型的一种,conformer也同样由编码器和解码器两部分组成,但编码器不同的是,conformer模型由一个卷积下采样层和若干个conformer模块组成,每个conformer模块类似transformer模块,但其构成分为四部分:前向模块(FNN),自注意力模块(SAN),卷积模块(CNN)和最后一个FNN,解码器则和transformer保持一致。我们在汉语小规模的ai shell测试集上显示,conformer模型和spec aug结合,可以超越transformer,cnn+transformer和常见的端到端CTC, LAS,和RNN-T等模型。

表2. 不同端到端系统在ai shell dev和测试集上我们测得的表现(使用ai shell训练数据)

在此基础上我们做了如下修改:

  • Rpe+XL transformer: 使用了相对位置编码(修复了识别语句过长时带来的重复和网络不稳定现象);

  • Fl: 使用focal loss解决训练对话中出现token不均衡的问题;

  • Ss: 使用schedule sampling解决训练和推理不一致问题;

如图6所示,我们改进后的conformer block如下,我们对原始文章中的encoder BLOCK进行了简化,发现性能基本没有变化。其次,摒弃了编码器的绝对位置编码,而采用了相对位置编码(Rpe)下的Transormer-XL结构。编码器和解码器层数为12和6,编码器和解码器的维数为2048,其中attention模块有4个头,每个头256个单元。

图. 6  改进的conformer端到端系统

2.3 混合带宽训练

在Cantonese和Mongolian两个语种上,我们均可以从各类公开渠道获取到各类语音识别16khz采样率的标注数据。不幸的是,大部分OPENASR的测试场景都是8khz采样率下的PSTN信道场景。对于这类场景,公开渠道的获取率为0。为此,为了能够利用16khz数据,我们首先在0-4khz,4-8khz挖掘不同的声学频带刻度的滤波器组[22],使得两者尽量不混叠。

对于16hz采样率的语音识别数据,我们分别从这两个区域的频带刻度中提取滤波器对应的频谱特征,而对于8khz采样率的语音识别数据,则在高频带区域采用Spectral Band Replication(SBR)进行填充,采用相同方法在两个频带区域进行特征提取。在EVAL集识别阶段,由于宽窄带数据并存,我们对所有数据均升采样并做SBR到16khz,利用上述multi-band混合带宽识别器进行识别,如图所示。

图. 7 混合带宽识别模型

对于Cantonese非受限场景,我们选取了Speech Ocean和Huiting Tech两个公司的数据2000小时[23][24]以及140小时IARPA Babel包里的窄带数据;而对于Cyrillic Mongolian非受限场景,我们只能获取Mozilla的Common Voice项目中发布的10h语音,和IARPA Babel包里的50h语音。尽管如此,我们坚信国内的Inner Mongolian语只是发音变异和书写差异,但同样可以对Cyrillic Mongolian的识别起到帮助作用。

所以,我们引入了Speech Ocean的500h听写数据和清华大学M2ASR项目的100h听写数据,旨在通过训练Traditional(回鹘)到Cyrillic (西里尔) Mongolian 的变异转换系统,使得两者可以兼容,具体非受限数据的引入情况描述见表3:

表. 3 非受限数据来源情况

为保证测试统一,所有语音识别数据的发音词典均由IARPA Babel提供,如图8所示,我们提交的系统是一套三路融合方案。为了保证Babel数据的原始性,第一路采用Babel窄带对应语种数据训练得到的chain model(LF-MMI),第二路则使用所有8k+16k混合带宽数据按照上述方法进行混合带宽滤波器提取和声学模型训练,随后在SBR后的Babel对应语种数据上进行权重迁移学习;第三路则使用所有8k+16k混合带宽数据按照上述方法进行改进的conformer e2e模型训练,随后在SBR后的Babel对应语种数据上进行相同的权重迁移学习,在解码阶段对输入语音生成对齐的CTM(NIST格式,可以理解为带时间戳和置信度的ASR输出结果)结果。

由于第一路和第二路均采用hybrid-hmm系统,这类架构对对于输入语音生成lattice后进行重打分操作,故结果可以使用lattice combine进行融合[30],融合后得到的lattice经过时间对齐生成CTM结果,再和第三路e2e系统的CTM结果进行ROVER融合[10];从最后的实验结果来看,这三路系统有很强的互补性。

图. 8  三路模型和解码融合策略(一路窄带模型,一路宽窄带hybrid-HMM模型,一路宽窄带e2e模型)

2.4 非受限语言模型

对于非受限场景,通过网络爬取可以很轻易获取大量文本数据。但是,我们发现这些爬取数据并没有太大作用,主要还是源于和测试对话内容环境差异。对于非受限场景的语言模型,我们采用了数据选取的方法,从大量的单语文本数据中获取与测试集和训练集相似的样例,以此来提高语言模型性能或训练解码的效率。

首先,我们采用了UER-Bert来作为我们的模型,并将评测方给到的官方训练数据以及爬取的大量单语数据作为预训练数据,并考虑到该数据选取任务不涉及句子间上下文,故放弃NSP(Next Sentence Prediction)目标,只进行MLM(Masked Language Model)模型的预训练。

其次,从大量单语数据中随机选取与官方训练集同等量级的单语数据作为负样例,将官方训练集作为正样例训练,基于已训练好的预训练模型进一步训练领域分类模型,通过若干次迭代,可使模型性能收敛。

最后,利用训练好的分类模型对整个单语数据进行分类,筛选出与官方数据相似的数据。数据选取模型结构及流程如图9所示:

图. 9 非受限语言模型脚本的选取和训练

2.5 针对语言的优化

Cantonese属于汉藏语系的一个分支,由于Cantonese的口语对话的写法至今仍然比较稀缺和不规范,我们通过网络爬取获得额外的文本数据,并且通过训练正规化模型取修改训练数据中常见的简写,错写等问题。

由于比赛评价结果采用WER,但端到端系统由于采用character建模,需要在输出结果前进行一次文本切分处理,且hybird系统中训练语言模型也需要Cantonese分词文本数据。我们使用所有爬取文本和Babel提供的分词文本数据,在自研Bert跨语种预训练UER(https://github.com/dbiir/UER-py)框架下,训练了一套分词模型。

首先利用Mandarin和Cantonese单语文本数据训练多语言编码器,该编码器具备同时编码Cantonese和Mandarin的能力;然后在该预训练模型基础上,利用Mandarin分词数据训练一个分词系统,最后利用Babel Cantonese训练集里文本分词数据对该分词模型进行finetune,得到最终的Cantonese分词模型。

该分词模型不仅对e2e的结果进行Babel词典矫正,同时可以指导系统做出更好的语言模型。如下图所示,我们对外网爬取的文本数据和Babel Cantonese 本身的文本进行分词,并进行错写和简写修复,训练两个Cantonese n-gram语言模型,最终的模型由二者插值得到。

图. 10 分词模型在语言模型训练中的应用

Mongolian是一个典型的黏着语系(agglutinative)语言,它非常依赖于词根和词缀去在不同的领域和语境下表达意思。首先,我们先找到不在词典里的语音识别抄本中词汇,确定是否属于词的前缀或者后缀。

举例如下,在"Алтайг- Алтайгаас"这个case中, "Алтайг" 是“Алтайгаас”的前缀,但"Алтайгаас"在发音词典里是找不到的。通过该方法,寻找外部Mongolian的发音词典和对应音标和Babel的映射,我们扩充了30多个常用词汇进入到发音词典中去。有效减少了声学训练OOV的概率。

众所周知,Mongolian语族的西里尔(发音归类为Halh)和回鹘语(发音归类为Chakhar),虽然写法不同,但是彼此之间可以互相听懂大概意思。此次OPENASR的比赛数据为Halh Mongolian。但我们使用了600h外部Chakhar Mongolian籍此希望解决Halh Mongolian数据稀缺的问题。

尽管Halh Mongolian通过西里尔(Cyrillic)形式进行书写,Chakhar Mongolian通过回鹘(Traditional)形式进行书写。除了文本之外,两者在音素种类,发音特性上也不尽相同。所以,在声学模型训练上,我们首先在非受限数据上训练Chakhar Mongolian声学模型,再在比赛的Halh Mongolian数据上替换soft-max输出层,进行迁移学习。初步实验来看,这种口音迁移方法对于10h 下的Halh Mongolian有显著提升,WER相对基线下降相对15%左右。

图. 10 Cyrillic (左侧)和 Traditional (右侧)两种书写形式

对于语言模型,我们通过训练Traditional Mongolian到Cyrillic Mongolian的seq2seq模型映射,来解决Cyrillic Mongolian数据不足的问题,我们首先通过正向和反向爬取的方式获取了相对高质量的少量Traditional Mongolian与Cyrillic Mongolian的映射词对来作为训练数据,并以该数据来训练初始GNMT模型。

在此模型基础上,我们又通过反向翻译、预训练、微调以及增加残差连接等方式进一步提高模型性能,结果显示语言转换的CER为7.5%。尽管如此,由于Mongolian的控制符问题始终为一个没有解决的规范化问题,在转换后的Cyrillic文字中,依然存在很多错误。在我们的实验中,通过seq2seq转换得到的语言模型,可以在Mongolian非受限场景提供0.02-0.05的绝对WER下降;

图. 11 Traditional Mongolian到Cyrillic Mongolian转换系统的构建

2.6 系统融合

对于2.3版本的三路系统结果,我们进行了不同系统的增强实验,系统1,2为hybrid-HMM的chain model,其中前者为8k模型,后者为混入非受限数据的混合带宽(multi-band)模型,可以看到外部数据和高频带信息的引入,WER可以从0.431降低到0.410。同时,在非受限场景下的e2e混合带宽模型可以在单系统上可以达到最好的性能0.386。

系统1,2在lattice combine后可以获得0.404的WER结果,有1-2%的绝对提升,说明非受限数据和Babel存在较强互补,1-2融合后生成1-best和3的1-best在ROVER上的融合结果可以看到,端到端系统和hybrid-HMM的互补性最高,使得整体WER从0.386降低到0.370。

通过识别结果后处理,WER可以进一步从0.370降低到0.361。

表. 4 系统融合结果

2.7 非受限系统评估集结果

在非受限场景上的比赛结果见表5,可以看到通过NIST官方打分系统的结果,比我们内侧的结果要好一些(WER从0.361到0.335),经过检查,原来是因为我们将输出的非语言现象,如miscues, 停顿,呼吸,咳嗽等的输出都算做了插入错误,而比赛官方则对这些现象不予统计。

表. 5  非受限场景比赛结果

可以看到,通过引入外部数据,在Cantonese等语种上我们可以实现7%-8%的WER下降,虽然WER仍然未突破0.300,但从CER来看已经在0.300以下了(0.264)。实际上,汉藏语系,如Mandarian, Cantonese等语言,对于系统评价更加看重和依赖CER,而WER则非常受限于分词的结果,分词导致错误会严重低估系统真实性能,如下图中的例子:

图. 12 Cantonese WER错误但CER正确的结果举例

在比赛关门时间我们没有及时提交非受限Mongolian系统,所以0.406其实没有经过系统融合,预估如果提交和Cantonese一样的系统方案,WER可能会低于0.400。同样的,对于闪含语系,阿尔泰语系来说,同一个单词的不同前后缀都算作正确,该类语言对于单词拼写并没有特别严格的规范,也不影响母语人群对意思的理解。所以我们也认为,WER体系会低估该类语言的评估结果。

展望未来

小语种和方言有所不同。小语种本质上是一门独立的语言,有独立且完备的发音体系、书写方式及语法现象。对于方言(Dialect)的界定则不像小语种那么清晰,一般认为是因地理差异形成的语言变体。比方言再低一个层次的语言变化称为口音(Accent)。我们在本次OPENASR中尝试的一些小语种语音识别技术,同样可用于改进在低资源环境下,对方言和口音的识别。该技术在腾讯出海内容智能交流,不同语言之间的信息理解,语音内容的翻译上都会产生巨大价值。相信在小语种语音技术的推动下,未来人类的巴别塔之路,将变得不再遥远。

致谢

感谢腾讯犀牛鸟基金和TEG AI开源协同项目对本次评测的支持。

感谢大型中文预训练框架UER的支持(https://github.com/dbiir/UER-py)

感谢AI LAB的Jimzheng, Cweng,TEG AI语音开源协同专家damonju,对本次评测中的指导和帮助。

参考文献

[1] D. Povey, V. Peddinti, D. Galvez, P. Ghahremani, V. Manohar, X. Na,Y.Wang, and S. Khudanpur, “Purely sequence-trained neural networksfor ASR based on lattice-free MMI,” in Interspeech. San Francisco, CA,USA: ISCA, Sep 2016, pp. 2751–2755.

[2] D. Povey, H. Hadian, P. Ghahremani et al., “A time-restricted self attention layer for ASR,” in proc. ICASSP. Calgary, AB, Canada: IEEE,Apr. 2018, pp. 5874–5878.

[3] D. Povey, G. Cheng, Y. Wang, K. Li, H. Xu, M. Yarmohammadi, and S. Khudanpur, “Semi-orthogonal low-rank matrix factorization for deepneural networks.” in Interspeech, 2018, pp. 3743–3747.

[4] T. Ko, V. Peddinti, D. Povey, and S. Khudanpur, “Audio augmentationfor speech recognition,” in INTERSPEECH. Dresden, Germany: ISCA,Sep 2015, pp. 3586–3589.

[5] D. S. Park, W. Chan, Y. Zhang et al., “SpecAugment: A simple data augmentation method for automatic speech recognition,” in proc.interspeech, Graz, Austria, Sep. 2019, pp. 2613–2617.

[6] E. Kharitonov, M. Rivi`ere, G. Synnaeve, L. Wolf, P. Mazar´e, M. Douze,and E. Dupoux, “Data augmenting contrastive learning of speechrepresentations in the time domain,” CoRR, vol. abs/2007.00991, 2020.

[7] Tom Ko, Vijayaditya Peddinti, Daniel Povey, Michael L. Seltzer and Sanjeev Khudanpur, A study on data augmentation of reverberant speech for robust speech recognition, ICASSP 2017

[8] A. Stolcke, “SRILM - an extensible language modeling toolkit,” in proc.ICSLP - interspeech, Denver, Colorado, USA, Sep. 2002.

[9] https://www.iarpa.gov/index.php/research-programs/babel

[10] J. G. Fiscus, “A post-processing system to yield reduced word error rates:Recognizer output voting error reduction (rover),” in 1997 IEEEWorkshop on Automatic Speech Recognition and Understanding Proceedings. IEEE, 1997, pp. 347–354.

[11] O. Abdel-Hamid, A. Mohamed, H. Jiang, and G. Penn, “Applyingconvolutional neural networks concepts to hybrid NN-HMM model for

speech recognition,” in ICASSP. Kyoto, Japan: IEEE, Mar 2012, pp. 4277–4280.

[12] A. Georgescu, H. Cucu, and C. Burileanu, “Kaldi-based DNN architectures for speech recognition in romanian,” in SpeD. Timisoara,Romania: IEEE, Oct 2019, pp. 1–6.

[13] A. Vaswani, N. Shazeer, N. Parmar et al., “Attention is all you need,” in Advances in Neural Information Processing Systems 30: NIPS, LongBeach, CA, USA, Dec. 2017, pp. 5998–6008.

[14] G. Saon, H. Soltau, D. Nahamoo, and M. Picheny, “Speaker adaptation of neural network acoustic models using i-vectors,” in 2013 IEEEWorkshop on Automatic Speech Recognition and Understanding. IEEE, 2013, pp. 55–59.

[15] X. Liu, Y. Wang, X. Chen, M. J. Gales, and P. C. Woodland, “Efficientlattice rescoring using recurrent neural network language models,” in2014 IEEE International Conference on Acoustics, Speech and SignalProcessing (ICASSP). IEEE, 2014, pp. 4908–4912.

[16] G.-B. Wang and W.-Q. Zhang, “A fusion model for robust voice activitydetection,” in 2019 IEEE International Symposium on Signal Processingand Information Technology (ISSPIT). IEEE, 2019, pp. 1–5.

[17] The JHU ASR system for VOiCES from a Distance challenge 2019", Yiming Wang, David Snyder, Hainan Xu, Vimal Manohar, Phani Shankar Nidadavolu, Daniel Povey, Sanjeev Khudanpur, Interspeech 2019

[18] Zhang S, Liu C, Jiang H, et al. Non-recurrent Neural Structure for Long-Term Dependency[J]. IEEE/ACM Transactions on Audio, Speech, and Language Processing, 2017, 25(4): 871-884

[19] Haşim Sak, Andrew Senior, Françoise Beaufays, Long Short-TermMemory Based Recurrent Neural Network Architectures for LargeVocabulary Speech Recognition, INTERSPEECH, 2014

[20] Andy T. Liu, Shang-Wen Li and Hung-yi Lee. TERA: Self-SupervisedLearning of Transformer Encoder Representation for Speech. ArXiv,2007.06028

[21] H. Xu, T. Chen, D. Gao, Y. Wang, K. Li, N. Goel, Y. Carmiel, D. Povey,and S. Khudanpur, “A pruned rnnlm lattice-rescoring algorithm for automatic speech recognition,” in 2018 IEEE International Conference onAcoustics, Speech and Signal Processing (ICASSP). IEEE, 2018, pp. 5929–5933.

[22] Jinyu Li, Dong Yu, Jui-Ting Huang, Tifan Gong. Improving widebandspeech recognition using mixed-bandwidth training data in CD-DNN-HMM, IEEE Workshop on SLT, 2012

[23] http://www.speechocean.com/datacenter/details/709.html

[24] http://www.huitingtech.com/en/dataInfo.action?id=1005

[25] https://pontoon.mozilla.org/mn/common-voice/project-info/

[26] http://www.speechocean.com

[27] Dong wang, et al. M2ASR: Ambitions and first year progress. O-COCOSDA. 2017

[28] Gulati A, Qin J, Chiu C C, et al. Conformer: Convolution-augmented Transformer for Speech Recognition[J]. arXiv preprint arXiv:2005.08100,2020.

[29] Zhou P, Fan R, Chen W, et al. Improving Generalization of Transformerfor Speech Recognition with Parallel Schedule Sampling and RelativePositional Embedding[J]. arXiv preprint arXiv:1911.00203, 2019.

[30] Xu, H., Povey, D., Mangu, L., & Zhu, J. (2010, March). An improvedconsensus-like method for Minimum Bayes Risk decoding and lattice combination. In 2010 IEEE International Conference on Acoustics, Speech and Signal Processing (pp. 4938-4941). IEEE.

[31] Pegah Ghahremani, et al, A pitch extraction algorithm tuned for automatic speech recognition,ICASSP 2014.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/43534.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python开发智能语音机器人——小O同学

本篇代码存在部分错误 ,现已经更新 (https://blog.csdn.net/aqqwvfbukn/article/details/131277668) 这次项目开发能按部就班顺利完成,主要是靠队友成功在软件的前期设计阶段,需求分析和用例设计起到了重要的作用。当…

微信小程序实现图林机器人聊天和百度AI语音识别的简单人工客服

用微信小程序实现简单的人工客服 最近在做软件工程的课程设计,选择性的做了微信小程序的简单的人工客服。在这里对该课程设计的原理和实现进行一个讲解,也算做一个总结和笔记,方便自己以后查看、复习和帮助大家的学习。 工具:微信…

Python实现语音识别(基于百度语音识别)

我是一名2016级电子信息工程的学生,这是第一次发博客,因为经常在这里查资料 ,自己也应该贡献一点经验吧,也可以当是记录自己学习的过程吧。 最近在自学python,然后18年9月份正好python加入计算机二级,再然…

玩转百度语音识别,就是这么简单

http://www.cnblogs.com/bigdataZJ/p/SpeechRecognition.html 明后两天就是公司一年一度的Fedex Day了。我的理解就是技术界的头脑风暴,idea喷如泉涌的盛大节日。 对于这次活动每个人或者两三个人一组需要有个idea,针对当前的产品现状,提出自…

语音-小度自定义技能

文章目录 前言一、学习简介二、代码快速开发三、官网配置3.1 百度云CFC配置3.2 小度官网配置 四、测试4.1连接技能4.2 意图测试4.3 断开技能 前言 主要是为了记录下学习小度自定义技能的过程 一、学习简介 参考官网解释 自定义技能简介 二、代码快速开发 快速开发java 我…

人人都是绘画大师!微软必应接入DALL·E模型,文字生成图像!

机器之心编辑部 微软必应完善文字生成图像能力,Adobe 今日也发布 Firefly,杀入生成式 AI 这场游戏。 今晚实在是有些热闹。 一边英伟达 GTC 正在进行中,一边谷歌正式开放了 Bard 的测试,这里微软必应也不甘寂寞。 今日&#xff0c…

对比编程语言的四种错误处理方法,哪种才是最优方案?

△点击上方“Python猫”关注 ,回复“1”领取电子书 作者:Andrea Bergia 译者:豌豆花下猫Python猫 英文:Error handling patterns 转载请保留作者及译者信息! 错误处理是编程的一个基本要素。除非你写的是“hello world…

巴比特 | 元宇宙每日必读:不再盲目迷信硬件掘金,大厂XR集体后撤,业内人士建议多条腿走路,生态和内容才有更广阔市场...

摘要:据极点商业报道,元宇宙凉热之间,大厂集体收缩XR业务。是舆论定调的风口已过,还是如业内人士所言,进入理智探索时代?为何短短半年时间内,大厂们态度就发生了截然不同的变化?“与…

学会这些思维模型,窥见查理·芒格的致胜秘笈(二)

目录 导语 模型五:SCQA模型 模型六:问题树模型 模型七:MECE原则 模型八:SWOT分析 模型九:波特五力模型 模型十:波斯顿矩阵 导语 读者朋友们好,在我上一篇文章介绍了几个最核心和底层的模…

产品读书《穷查理宝典:查理.芒格智慧箴言录》

要通过提升自己,来强化对世界的感知,内在的能力才能增长,和世界的大趋势才能互相匹配。这种匹配度提高了,无论你是用来投资、创业,还是做其他事情,都会无往而不利。 查理芒格在书中反复强调的4点内容有&a…

芒格最新演讲:中国的水有些聪明人已经蹚进去了,时候到了更多人会进场

图文来源:雪球 译者:RanRan 我们在说某个人有常识的时候,我们其实是说,他具备平常人没有的常识。人们都以为具备常识很简单,其实很难。 2月14日,95岁的芒格参加了Daily Journal 公司年会,发表了…

站在大模型新风口的云知声:十一年创业之路引领智能语音技术变革

AGI的目标是实现人类般的通用智能,这意味着AI可以像人类一样理解任意通用任务,并以人类的智力水平执行完成。基本上,除了自我意识的生成,AGI就是人类对人工智能的终极梦想了。在AGI曙光照进现实之际,云知声化身为那位站…

在MT4上使用KDJ指标

KDJ指标就是随机指标,由K线、D线和J线这三条曲线共同构成,通过分析图表,我们可以得出,K、D、J分别用不同的颜色线条来表示,所谓的K线是指快速确认线,D线就是指慢速主干线,而J线则为方向明暗线。…

同花顺资金监测精鹰指标公式源码 通过资金监测强弱

使用方法&#xff1a; 指标不含未来,是通过资金监测强弱,资金是不会骗人 当红柱有粉色帽子或红柱上方金色线均表示资金流入 源代码&#xff1a; VAR1:VOL/((HIGH-LOW)*2-ABS(CLOSE-OPEN)); 主动买盘:IF(CLOSE>OPEN,VAR1*(HIGH-LOW),IF(CLOSE<OPEN,VAR1*((HIGH-OPEN)(…

django中使用auth.authenticate在用户名和密码都正确的情况下返回值依然为None的可能原因

毕业设计做了一个系统&#xff0c;其中涉及到用户修改密码&#xff0c;然后发现密码改完之后即使输入了也登不上去&#xff0c;最终定位到问题出在auth.authenticate上&#xff0c;它返回的是None&#xff0c;在csdn上找了好久&#xff0c;全都是说在创建的时候使用django自带的…

美国公司裁员潮可视化;GitHub + Kaggle + InfoQ:3份报告回顾中国开发者的2022 | ShowMeAI每周通讯 #005-01.07

这是ShowMeAI每周通讯的第5期。通讯聚焦AI领域本周热点&#xff0c;及其在各圈层泛起的涟漪&#xff1b;关注AI技术进步&#xff0c;并提供我们的商业洞察。欢迎关注与订阅&#xff01; 导读&#xff1a;2023年第1周&#xff0c;美国科技大厂的裁员信息&#xff0c;终于还是来了…

如何转换图片格式?教你三招一键轻松转换图片格式

之前有朋友跟我吐槽说&#xff0c;有时候保存到电脑上的图片原来是正常的&#xff0c;结果保存下来以后就打不开了&#xff0c;搞的他非常苦恼。其实这个问题也很好解决&#xff0c;一般这种问题都是由于图片格式导致的&#xff0c;只需要将图片格式转换成jpg、png等常见格式就…

手把手教你免费、批量转换HEIC图片到JPG

iPhone手机更新IOS11系统后&#xff0c;相机拍摄的文件格式为HEIC格式&#xff0c;很多软件都无法打开。找了半天也是各种收费&#xff0c;就比如某款软件居然收费&#xff0c;还有年费88块&#xff01;你们怎么好意思收费的&#xff1f; 要么就是在线的转换&#xff0c;一张张…

PS把变成人物照片插画效果

算不算插画不是很懂&#xff0c;又有点类似&#xff0c;效果就是下图的这样&#xff0c;使用陌鱼社区动作&#xff1a;简单时尚手绘人物插画效果PS动作&#xff0c;下面是一些效果图&#xff0c;喜欢的可以试一下 01、双击图案&#xff08;.pat&#xff09;&#xff0c;Adobe P…

通过python我实现了照片转化为动漫模式,媳妇儿再也不用愁没有好看的头像了~

​ 最近某音上的动漫特效特别火&#xff0c;很多人都玩着动漫肖像&#xff0c;我媳妇儿也不例外。看着她这么喜欢这个特效&#xff0c;我决定做一个图片处理工具&#xff0c;这样媳妇儿的动漫头像就有着落了。 编码 为了快速实现我们的目标&#xff0c;我们就不自己写图片处理程…