自动化语音识别通道归一化的制作方法

文档序号:2827945阅读:322来源:国知局
专利名称:自动化语音识别通道归一化的制作方法
技术领域
本发明涉及用于自动语音识别的通道归一化(channelnormalization)。
技术背景自动语音识别系统的识别性能(例如准确性)可受到通信通道的可变性 的不利影响。可变性的有些原因是由于说话者(如声道几何形状、声门 激励(glottal excitation))、传输通道(如至麦克风的可变位置和方向、室 内音响效果、环境噪音)、以及使用具有不同特性的麦克风。为了降低通信 通道对识别性能的影响,已提出了众多方案。 一种这样的技术使倒谱系数 (cepstral coefficient)的识别特征矢量归一化,由此每一特征维feature[i]关 于时间t具有零均值和单位方差(unit variance)。该技术典型地利用以下来 应用利用K倒谱系数(或md-频率倒谱系数)ceps加m[i]及其第一和第二 阶导数(Acepstrum[i]和AAcepstrum[i]),以计算归一化的识别特征<formula>formula see original document page 4</formula>其中<formula>formula see original document page 4</formula>其中p[i]是cep[i]关于时间t的均值,而c^[i]是cep[i]关于时间t的方差。倒谱均值归一化(即,减去p[i])允许去除平稳和线性的一尽管是未知 的一通道传递函数。倒谱方差归一化(即除以CJ[i])有助于补偿由于附加噪声引起的倒谱系数的方差的减少。通道特性的估计基于其上的时间量可影响语音识别器的性能。如果时间 窗选得太长,则通道可不再被认为是平稳的。如果时间窗选得太短,则语音 段的特定语声内容可使通道特性的估计存在偏差。作为折衷,许多识别系统基于语音的完整语句(utterance)来估计通道。依赖于识别系统的处理速度, 该基于语句的归一化可导致不理想的系统延迟,由于对语句的处理直到语句 结束才开始。时间同步(或在线处理)方案典型地利用通道归一化的某类型 的递归实现,其中对于倒谱特征的均值和方差的长期估计在时间t内、每T 二10-20msec增量地更新[4i,t] = oc (jL[i,t^x] + (l~cc) c印[i,t]一[i,t] = cc c^[i,t] + (l-a) (cep[i,t]-p〖i't])2在通道估计中,非语音段表示另一复杂化因子。由于传输通道将说话者 和麦克风分离,因此,传输通道的效果仅在语音段期间变得在听觉上明显。 因此,非语音段对语音段的可变比率将对被估计的通道特性具有深远影响。 然而,尝试使用固定比率又受到了语音和非语音段之间的区别中所涉及的不 确定性的限制。发明内容在一方面, 一般而言,本发明的特征是一种用于处理数据的方法及对应 的软件和系统。该方法包括根据语音语句的初始部分来测量统计信息 (statistics);以及基于所测量的统计信息及统计导出的映射相关的所测量的统计信息和特征归一化参数来估计特征归一化参数。 本发明的方面可包括一个或多个以下特征。 所测量的统计信息包括对来自语音语句的一部分的能量的测量。 肯遣的测量包括能量的极值。该方法还包括接受多个语句,所述语句每个与对应的特征归一化参数关联。统计信息根据多个语句的每个的一部分来测量,并且基于与多个语句对 应的所测量的统计信息以及特征归一化参数来形成统计导出的映射。多个语 句的每个的一部分可包括每一语句的初始部分、或者每个语句的整体部分。 形成统计导出的映射包括形成统计回归。对应于多个语句的特征归一化参数包括多个语句在时间上的均值和方差。本发明的方面可包括一个或多个以下优点。减少了用于对通信通道的特性进行可靠估计的语音量。减少了与通道估 计和归一化关联的系统延迟。没有执行语音和非语音段之间的显式区分,从 而提高了自动语音识别对于噪声语音的鲁棒性。本发明的其他特征和优点将从以下描述及权利要求中变得显而易见。


图1是一个用于自动语音识别通道归一化的处理系统的框图。
具体实施方式
一种用于自动语音识别通道归一化的处理系统包括离线处理和在线处 理,以生成归一化参数。该系统配置成利用有关通信通道性质的观察。例如, 可进行以下关于说话者和通信通道的部分一包括房间、麦克风和周围噪声一 的观察 说话者的长期频谱主要可由两个参数表征总体响度和描述该频谱的总体斜率的频谱倾斜(spectral tilt)。频谱倾斜是每一音调周期(pitchperiod) 期间声门保持打开相对于关闭的时间之间的比率的直接结果。虽然该比率在 说话者及其发声努力(正常、喊叫)不同时轻微变化,但频谱倾斜典型地是 -1248/8度音程。在倒谱域中,总体响度由0阶倒谱系数捕获,而频谱倾斜 由1阶倒谱系数捕获。对于长期频谱,所有的较高阶倒谱系数由于其在频域 中的平滑形状而接近于零。 由于反射和回声,房间的传输函数展现出强的峰和谷。在倒谱域中, 这些频率至频率的变化主要影响较高阶系数,而不影响语音识别系统中使用 的系数。除这些变化外,说话者和麦克风之间的距离和方向主要给予了响度 中的总体衰减,主要影响0阶倒谱系数。 麦克风和音频电路典型地给予了音频信号上的某类带通特性。对应的 频率形状通常影响所有阶的倒谱系数。,在语音段期间,周围的声学噪声减少了所有阶的倒谱系数的方差。该 减少随信噪比的降低而增加。处理系统的许多特性基于这些观察对p[O]的可靠估计优选地应该包括至少一些语音段(如,语音帧,其中 "帧"是在一有限时间窗之上从语音信号V"t]的值中导出的、时间t的倒 谱系数cep[i,t]的值),由于其对说话者的响度以及说话者和/或麦克风的几何 形状的依赖性。通道均值II的较高阶系数主要依赖于麦克风和音频电路,且 由此可根据不必需是语音帧的帧来估计。通道方差依赖于信噪比。噪声水平 可仅根据非语音帧来估计,而对信号水平的估计应包括至少一些语音帧。参考图1,用于自动语音识别通道归一化的处理系统10经由映射模块20来估计通信通道12的倒谱均值和方差,其中该映射模块20使用功能映射, 其采用基于少数语音帧而快速收敛的、来自初始处理模块14的输入参数。 特别是,以下线性映射快速响应于语音开始,同时消除了明确检测语音开始时间的需要<formula>formula see original document page 7</formula>这里,ai和bi是功能映射的权重。S[t]和N[t]分别是对于信号水平和噪 声水平的估计。倒谱系数cep「i,tl是倒谱系数cep[i,t]在时间上的平均。初始处理模块14通过跟踪帧能量cep[O]在时间上的极值来在线估计信号水平和噪声水平S[t〗=max(cep
} 对于0 5 t S t N[t] = min{cep
} 对于0 Sx可替换地,可使用估计S和N的其他方法,包括使用cep
的百分 位(如,分别地,cep[O,T]的第80和第20的百分位(80th and 20th percentiles))。初始处理模块14通过在所有遇到的帧上平均而在线执行对平均倒谱系 数cep[i,t]的估计SgE[i,t] = 2 cep[i,T] / (t+1)对于所有0 S i; S t 可替换地,可使用递归方案。线性权重A和bi在之前的离线处理期间使用语音数据库16来确定,该 语音数据库16包括在不同的声学环境中使用各种音频设备录制的众多说话 者的语句VJt],...,Vn[t]。基于映射模块20的对应对"输入模式"和"输出模 式",所述权重使用由线性回归模块18执行的线性回归来确定。作为"输 入模式",系统10使用在每一语句后获得的信号和噪声水平,其中每一语句 是独立的。系统10基于每一语句的一部分(如语句的初始部分,或整个语 句)来测量这些信号和噪声水平。作为"输出模式",系统10使用基于给定 会话的所有语音帧的通道均值和方差,利用标准公式-= 2 cep[i,t] / (t+1) 对于所有0 S t S ta2〖0 = S (cep[i,t] - jx[i])2 / (t+1)对于所有0 S t S t其中会话包括对于其通信通道12可被假定为平稳的所有语句。由于线性权 重只模型化数据的整体趋势,所以此步骤中所使用的特定语音/静默区分不是 关键的。系统10使用的通道估计方案即使在少数语音帧时也执行良好,因为它 主要依赖于对音频信号的两个特性的估计其最小和最大能量。接近最终最 小能量的值典型地在前几帧中遇到,即甚至在语句开始之前。接近最终最大能量的值典型地在说出的第一元音内遇到,而不管其语音身分(phonetic identity )。在语句开始之前,提出的通道估计方案通常将低估信噪比SNR二S—N。 因此,当所述SNR估计降低到表示系统10期望在其中运行良好的、最嘈杂 的声学环境的SNR的值时,获得更准确的结果。同样,在SNR的估计和通 道归一化之间如100-200ms这样小的处理延迟的引入,将确保将相当成熟的 通道估计也施加到在语句的第一元音之前的少数语音帧。附录包括软件实现的归一化方法。其他实施例在所述权利要求的范围内。include <unistd.h> #inc,iide <stdio,h> ^include <stdlib.h> #include <strinp.h> ^include <math.fi>#include "nrutil,h" #inc,ude "speechdef.h',#define histogranlrange 500 #define floolperc 0, 〃0,01#define scahestimator 0 //("i%13)int mainCargc,argv)int argcj char *argv[];char ioF"i,eLi st[300] , channelMapFi 1國[300]^,ine[500], cepFi"lename[300!] , channel Filename [300], prevdianne,Filename[300];float *channelMean, *channe" Scale, *avgMax, *avgSqMax, *avgMean, 六avgScatle,*crossMaxMean, *crossMaxScale, *we*ight, *offset, floor, *nrinCepstruin,々maxCepstr圆,sessionMin, sessionMax;int,」outDim, numFrames, dimFeature, frame, numPattern, floorHistogram[HISTOGRAM一RANGE], index, numAccum, numHist, j, n喊stimatedweans;struct feature featurestruct;FILE ""istFp,六outFp;int ReadFeatureHTK(char filename[], int framelndex, struct FEATURE '-feature^ ;file handling **Vif (argc !- 4) {p门ntfC,'\nusage: %s <I/0 file list> <num estimated means> " \ ',<output map>\n", argv[O]); printf("\nnote- i/o file list nee3s to have format: ,' \ "(cepstrum HTK file, channel HTK file)\n\n"); exit(O);strcpy(ioFi,eL.ist, argv[l]); n喊stimatedMeans - atoi Orgv[2]); strcpy(channelMapFilnam, argv[3〗〗;// read file listfeaturestruct,data - NULL; channelMean = NULL; channelScale = NULL; avgMax - NU"; avgsqMax = NUlAj avgMean = NULL; avgscale - NULL; crossMaxwean - null; crossMa.xScale = NULL; minc印strum = NULLj maxc印strum = NULL; numPattern = 0;dimFeature = 0;strcpy(prevchanne,Filename,"");for ("U0; i < HISTOGRAM—RANGE; i++) { floorHistogram[i] - 0;numHist = 0;if CCl,'stFp = fopenCioFileList, "r',)) = NUUJ {printfC,'\n%s: can't open I/O file listing %s U\n',,argv[O], ioFileList); exit(l);while (fgets(line, 500, listFp) != NULL) {sscanf(line, %s", cepFilename, channel Filename);产read channel file众/if (ReadFeatureHTK(channelFilename, -l, &featurestruct) != 0) printfC'\n%s: error occured whi,e reading" \,'header of %s !!\n", argv[O], channelFilename〕;exit(l);n圆Frames - featureStruct.header.numFrames dimFeature - featureStruct,header,dimFeature; if Cf eatureSt ruct. data 亂O {f eatureSt ruct, data = vector。, dimFeatu广e-l); avgMax = Vector(O, d,'mFeature-l); avgSqMax = VectortO, dimFeature-i); avgMean = vector(O, cHmFeature-l); avgScale - vector〔0, dimFeature-l5; crossMaxMean = Vector(O, dimFeature-l); crossMaxscale = Vector(O, dimFeature-l〗; channelMean = Vector(O, dimFeature-1)j .channelscale = vector(6, dimFeature-"; mincepstrum = Vector(6, dimFeature-l)j maxC印strum = vector。, dimFeature-l〉 , for (i=0; i < dimFeature; ,■++) {av^axti] = O - savgSqMax[i] = 0.;avgMean [, ]j = 0 ;avgscale[i] = 0 -1crossMaxMean[, ;) - 0*;crosswaxscale[i] =0.;// read channel meansif (ReadFeatureHTK(channelFilename: 0, &featureStruct) !- 0) { printf("\n%s: error occured while reading " \"feature vector in %s !!\n", argv[O], channelFi1ename); exit(l);for (i=0; i < dimFeature; i++〉 {cfiannelMean[i] - featurestruct.data[i];〃 read channel scalesif CReadFeatureHTK(channe,Fi1ename, 1, &featurestruct) != 0) { printf(',\n%s: error occured wh,,e reading " \ ■feature vector in %s !!\n", argv[O], channelFilename); exit(l);for (i=0; i < dimFeature; i++) { ^ channel seale[i] - featurestruct.data[i];// read channel minif (ReadFeatureHTK(channelFilename: 2, &featurestruct) != 0) { printf("\n%s: error occured while reading " \' feature vector in %s H\n,', argv[O] , channelFilename) j exit(l);sessionwin = featureStruct-data[O];&featureStruct) !- 0) {// read channel max if (ReadFeattireHTK(channe"I Fi 1 ename,pHntf(''\n%s: error occured while reading " \"feature vector in %s !!\n", argv[O], channelPilename);sessionMax = featureStruct,data[O];// read Craw) cepstrum fileif (ReadFeatureHTKCc印Mlename, -1, &featurest「uctO != 0) { printfC'\n%s: error occured while reading" \',header of %s !!\n,,, argv[O], cepFilename);numFrames - featureStruct.header,numFrames; if CnumFrames <= 4) continue;if 〖dimFeatu「e != featureStruct.header-dimFeature) { printf(,,\n%s: cepstrum f"ile %s and channel file %s " \"have inconsistent number of feature dimensions! !\n\n,,, argv〖0] , c印Filename, channel Filename); exit(O);// calculate SNR for filefor (frame-O; frame < numFrames; frame++) {if (ReadFeatureHTK(c印F"ilename, frame, &featurestruct) != 0) ■[ printf("\n^s: error occured whi,e reading " \"feature vector *in %s !!\n", argv
' cepFi'lename); exit CO;} if (什ame = 0) {for (i-0j i < (3iniFeature; (minCepstrum[i] = featurestruct.data[i]; maxcepstrum〖i〗- featurestruct,data〖i〗;for (i=0; i < d"imFeature't iw) {if CfeatureStruct,datati] < nrinC印strum[i];) { mincepstrum[i] - featurestruct.data[i];if (featurestruct.data[i] > maxc印strum[i]) { maxcepstrum[i] = featureStruct.data[i];// normalize input and ouputs by minCepstrumfor (i=0; i < dimFeature; i++) { .maxCepstrum[i] -= mincepstrLmi〖i]; channel Mean [i] -- minC印st「um[i];maxcepstr国[i] j// accumulate pattern statistics for mappingfor (i=0; i < ch'mFeature; i++) {avgMax [i〗 maxCepstrum[i**avgSqMax〖i] += maxcepstrum[iavgwean[i] += channe"lMean〖i"avgScale[i] +- channel seal e [i i;crossMaxMean[i] += maxCepstrum[i] * channelMean[i] crbssMaxScale[i] += maxCepst rum [SCALE—ESTIMATOR] * channel Seal e["H jnumPattern++j// create floorHistogram of session SNRs if (strcmp(channelFiTename, prevChanne*]Filename)) ■[ index = (int)(sessionMax - sessionwin + 0.5); if CindeX >- HISTOGRAIRANGE) { index - HISTOGRAM一RANGE-l;》f 1 oorm' stogram [i ndex] ++; numHist++jstrcpyCp广evCharmel F,', ename,channel Filename);fclose(listFp);〃 determine mappingprintf("\n%s: exit加jfor (i-0; av—ax〖i avgSqMax_ — avgsqMaxi〗 ''avgMean[i] /no data loaded! !\n,,, argv[O]);< dimFeature; { /= numPattern; ]/= numPattern; - avgMax [, ] * avgMax [i]; _ — numPattern; av5scale[3] /= numPattern; crossMaxMean[i] /= numPattern; crossMaxwean[i〗-=avgMax[i〕 * avgMean[i]; crossMaxScalei] /= numPattern; crossMaxScale〖i〗-=avgMax [SCALE^ESTIMATOR]avgscale[i]:// determine SNR floor numAccum = 0; floor = -1.;for (i=0; i < HISTOGRAM—RANGE; i++) { if (floorHistogram[i] = 0) { continue;numAccum += floorhdstogram[i];if (numAccum FLOOiUPERC * numnist) {floor = , ;break;》printf('、nhist, - %d (%f〕,,,〃 i, f"loorHistogram[i], numAccum / Cfloat)numHist); if (numAccum == numHist) { breakj// print mapping to fileoutcrim = numEstimaitedMeans + dimFeature;weight = vector(O, outDim-l); offset - VectorCo, outDim-l); i - 0;for ("Uo; i weighttj] offset [j]for (i=0;, weight [j] offset d]numEsfimatedMeans; , ++) [ crossMaxMean[i] ■/ avgsqMax[i]; avgMean[i] - weight[〕] * avgMax[i];dimFeature', 《crossMaxscale[i3 / avgsqMax[SCALE一EST工MATOR]; avgscale[i] - weight[〕] * avgwax[scale—estimator]if C(outFp - fopen(channelMapFilnam, "w,'"=亂O p「intf( %s: Cannot open %s for wrifing.VT',argv[O], charmelMapFilnam)〗 exit(O);fprintf(outFp, "channelMap %d entries\n", outDim); fprintf〖outFp, ,'Weights\n"); for ("i=(3j i < outDim; i++) *tfprintf(outFp, " %e,', weight[i]);fprintf(otitFp, "\n"); fprintf〖outFp, "Offsets\n"); for i < outDim; {fprlntf(outFp, " %e,,, offset[i〕);fprintfCoutFp, ,,\n',)j fclose(outFp〉;printfC,,\nFloor %e\n", floor);Freevector(featurestruct,data, 0, dimFeature-l); FreeVector《cfiannelMean, 0, dimFeature-l); FreeVecto「〈channelScale; 0, dimFeature-l〉; FreeVector《avgMax, 0, diniFeature-1); FreeVector《avgSqMax, 0, dimFeature-1); FreeVectorCavgMean, 0, dimFeature-l); FreeVector〖avgSca,e, 0, dimFeatLire-i;i; FreeVector〖crossMaxMean, 0, dimFeature-l); FreeVector^crossMaxScale, 0, dimFeature-1〗; FreeVector《mincepstrum, 0, dimFeature-l); Freevector〈maxC印strum, 0, dimFeature-l〉; Freevector(weight, 0, outDim-l); FreeVecto「(offset, 0, outDim-l);exitCO)j<formula>formula see original document page 15</formula>memset(pChannelMap-^pAvgcepstrum, 0, pchanne化ap->numCepstra1coeffsizeof《"ChannelMap力pAvgCepstrunO); pChannelMap-xrrinEnergy - 1.; pChannelMap->maxEnergy - 0,;〃* channelMap一GetMi nwaxEnergy,>吖voidChannelMapFloat一GetNrinMaxEnergy (ChannelMapFloat ^pChannelMap,intl6 *minEnergy, intl6六maxEnergy)int tmp;tmp - (int)floorCpchannelMap->m,'nEnergy * (1 CUPT) + 0.5);,'f (tmp > SHRTJVIAX)*minEr ergy - shrxj/iax; else if (tmp < SHRTJIN) *min£nergy = SHRT_MIN;*minEnergy = (intl6) tmp;tmp = Cint)f"!oor(pchannelNlap->maxEnergy * (1 << CEP—Q^PT) + 0.5); if Ctmp > SHRT_MAX)*max£nergy = shrt一max;else if Ctmp < SHRXJWO*tnax£nergy - SHRT_MIN;*maxEnergy - (intl6) tmp;* channelMap_updateMinwaxEnergyvoidchannelwapFloat—UpdatewinwaxEnergy (channelMapFloat ,channelMap, double energy)if (energy < pChannelMap->nnnEnerg>0 pChannelwap->minEnergy = energy; if (energy > pChanne,Map力maxEnerg力 ^pChannelMap-xnaxEnergy - energy;/:_______二 — — 一 一* ChannelMap^ApplyVvoidChanne1船pFloatJVpply Cchanne"lMapFloat六pchannelMap, double *pcepstrum,Channel Float ^pChanne"0irvt double doublevsT_ASSERT(pchannelMap-"weights != null); vsT_j\ss£RT〖pchanne, Map->poffsets != null〕; VS"DSSERT〖pChannelMap->pAvgCepstrum != NUIX); vsx_ASSERT〖pchanneV>nimiTot:a1CepCoeff = =3 * pChannelMap->numCepstra*lCoeff);VST—ERROR_if—OCpChannel->bDoonlineChannelNorm == TRU£,Channel map incompatible with a,gorit!im.\n'');track minimum and maximum energy V if (pchannelMap->maxEnergy < pchannelMap->minEnergy)pChannelMap->minEnergy - pcepstrum[O]; pChannelMap-:nTiaxEnergy = pc印strum[O]jelse if (pCepstrum[O] < pCharmelMap->minBiergy)pChannelMap-:>minEnergy - pcepstruin
;else if (pC印strum[O] > pChannelMap->maxEnergy)^pChannelMap->maxEnergy , pCepstrum[O];track average cepstrum A/ if (pCharmelMap->numFrames < pChannelMap-"umAccumFrames)for i < pchannelMap力numCepstra,Coeff;pchannelMap->pAvgcepstrum[i] -(pChanne*lMap->numFrames * pchannelMap->pAvgcepstrum[i] pCepstrum[i]) / (pChannelMap->numFrames + 1);pChannelMap->numFrames++;for C"i=0; "i < pChannelMap->numCepstralCoeff;pChannelMap->pAvgCepstrum[i](pcepstrum[i] - pchanne,Map->pAvgCepstrum[i]) / (1《pChanne"lMap->cepAvg^h*iftO j ''〃 estimate SNR and floor it Vsnr = pChannelMap—>maxEnergy - pChannelMap->minEnergy; if (snr < pchannelMap->snrFloor〗snr = pChannelMap->snrFloor; 〃 estimate channel mean[O〕 from snr Vtemp = pChannelMap->pWeights
. * snr + pChannelMap->poffsets
; temp += pchannelwap-3-minEnergyj pChanne1->pSpeechCepstralMean
- temp;for other static dimensions: set channel means to running average V for i < pChannelMap-"umC印stralcoeff;^pChanneV>pSpeechCepstralMean[i] = pdianne"lMap->pAvgCepstrum[i];/* for all dynamic dimensions: set channel means to 0 Vfor (i=pchannelMap->numcepstra"ICoeff; i < pChannel->numTotalCepCoeff;^pchannel-^pspeechc印stralMean[i] = 0"estima'te scales from SNR V if (pchannel->bDoVarNorm)for ("0; i < pChanneV>numTotalCepCoeff;temp =pChannelMap->pWei'ghts[i+l] * snr + pChannelMap->pOffsets[i+i;i jif (t柳p < VARIANCE—FL咖) temp = VARIANCE—FLOOR; )^channel->pSpeechcepstra1var[i] - temp;ChannelMap一computeCRCvsTcrcChannelMapFloat—ComputeCRCCchannelMapFloat々pchannelMap)VS丁Crc CfC = CHNITIAL一VALUE;Cpcha隨lMap 亂lOCRCJVDD;crc, pChannelNlap->ruimCepstralCoeff); CRODD(crc, pChanne"lMap->numFrames); CRCLADDDOUBLE(crc, pChannelMap->minEnergy); CRC^ADDDOUBLE《crc, pChannelMap->maxEnergy5 ;if (pChanne*lMap->pAvgCepstrunOCRC_ADDDOUBLEARRAY(crc, pchanne,Map->pAvgCepstrum, pChannelMap-》umcepstra1coeff);return crc',channelMap—GetSnapshotvoidchannelMapFloat—Getsnapshot CchannelMapFloat *pChannelMap,i nt numcepstralcoeff , double众pAvgc印str腦,double 6minEnergy,double AmaxEnergp,irvt *numFrames〗■int i;,'f (pChannelMap !- NULiO*numFr*ames = pChannelMap->numFrames; for (i = 0; i < numCepstra,Coeff;pAvgc印strum[,'] - pchanne,Map->pAvgCepstrum[i];*nrinEnergy - pChannelMap->minEnergyj AmaxEnergy = pChannelMap-xnaxEnerg ;else*numFrames - 0;m柳setCpAvgC印strum, 0, numC印stralCoeff众s,'zeof (rtpAvgCepstrunO);n柳set(pAvgC印strum, ftminEnergy = 1,〗 femaxEnergy = 0-* ChannelMap—SetSnapshotvoidChsmnelwapFloat^SetSnapshot C仁hannel附pFloat众pchannelMap,const double *pAvgCepstrum, double minEnergy,double maxEnergy, int numFrames3int i sif (pchannelMap != NULL)pchannelMap->numFrames = numFrames;for (i = 0〗i < pChannelMap->mjmCepstralCoeff;pChannelMap->pAvgcepstrum[i] = pAvgc印st「um[i];pdianne,Map->nrinEnergy = minEnergy; ^pChannelMap->maxEnergy = maxEnergy;appendix.doc
权利要求
1. 一种方法,包括根据语音语句的初始部分来测量统计信息;以及基于所测量的统计信息以及统计导出的映射相关的所测量的统计信息和特征归一化参数,来估计特征归一化参数。
2. 根据权利要求1的方法,其中所测量的统计信息包括对来自所 述语音语句的所述初始部分的能量的测量。
3. 根据权利要求2的方法,其中对所述能量的测量包括所述能量 的极值。
4. 根据权利要求1的方法,还包括 接收每个与对应的特征归一化参数关联的多个语句; 根据所述多个语句的每个的一部分来测量统计信息;以及 基于所测量的统计信息和与所述多个语句对应的所述特征归一化参数,形成所述统计导出的映射。
5. 根据权利要求4的方法,其中所述多个语句的每个的所述部分 包括所述语句的每个的初始部分。
6. 根据权利要求4的方法,其中所述多个语句的每个的所述部分 包括所述语句的每个的整体部分。
7. 根据权利要求4的方法,其中形成所述统计导出的映射包括形 成统计回归。
8. 根据权利要求4的方法,其中对应于所述多个语句的所述特征 归一化参数包括所述多个语句在时间之上的均值和方差。
9. 存储在计算机可读介质上的软件,包括用于使计算机系统执行 如下操作的指令根据语音语句的初始部分来测量统计信息;以及 基于所测量的统计信息以及统计导出的映射相关的所测量的统计信息 和特征归一化参数,来估计特征归一化参数。
10. 根据权利要求9的软件,其中所测量的统计信息包括对来自所述语音语句的所述初始部分的能量的测量。
11. 根据权利要求9的软件,还包括用于使计算机系统执行如下操 作的指令接收每个与对应的特征归一化参数关联的多个语句;根据所述多个语句的每个的一部分来测量统计信息;以及 基于所测量的统计信息和与所述多个语句对应的所述特征归一化参 数,形成所述统计导出的映射。
12. 根据权利要求11的软件,其中所述多个语句的每个的所述部分 包括所述语句的每个的初始部分。
13. 根据权利要求11的软件,其中所述多个语句的每个的所述部分包括所述语句的每个的整体部分。
14. 一个系统,包括初始处理模块,配置成根据语音语句的初始部分来测量统计信息;及 映射模块,配置成基于所测量的统计信息以及统计导出的映射相关 的所测量的统计信息和特征归一化参数,来估计特征归一化参数。
15. 根据权利要求14的系统,其中所测量的统计信息包括对来自所述语音语句的初始部分的能量的测量。
16. 根据权利要求14的系统,进一步包括回归模块,配置成-接收每个与对应的特征归一化参数关联的多个语句; 根据所述多个语句的每个的一部分来测量统计信息;以及 基于所测量的统计信息和与所述多个语句对应的所述特征标准化 参数,形成所述统计导出的映射。
17. 根据权利要求16的系统,其中所述多个语句的每个的所述部分 包括所述语句的每个的初始部分。
18. 根据权利要求16的系统,其中所述多个语句的每个的所述部分 包括所述语句的每个的整体部分。
全文摘要
根据语音语句的初始部分来测量统计信息。基于所测量的统计信息以及统计导出的映射相关的所测量的统计信息和特征归一化参数,来估计特征归一化参数。
文档编号G10L19/14GK101228577SQ200580002246
公开日2008年7月23日 申请日期2005年1月10日 优先权日2004年1月12日
发明者乔丹·科亨, 伊戈·兹洛卡尼克, 劳伦斯·S·吉利克 申请人:语音信号技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1