提高文本和语音匹配效率的方法

文档序号:2836837阅读:498来源:国知局
专利名称:提高文本和语音匹配效率的方法
技术领域
本发明涉及一种提高文本和语音匹配效率的方法。
背景技术
在练习外语听力时,我们需要知道正在播放的外语所对应的文字,从而知道自己理 解的程度。例如,电脑正在播放"howareyoudong "的一段录音,有的人可能只听懂 了一两个单词,如果没有看到"how are you dong "的文本,他就不知道自己理解的程 度。现在有一些程序可以帮助人匹配文本和语音,但是这些程序需要人的介入,即手工 拷贝粘贴文本。其大致步骤如下首先听一段音频,看一下时间,记下音频结尾距离开 始的时间差,然后选择、拷贝并粘贴文本,把时间插在文本后(如lyrics文件格式, "howareyoudoing
"),这种匹配方法枯燥无味,非常低效,而且容易出错。
经本发明人研究发现,导致匹配效率低下的原因是人的介入,现有方法的两大瓶颈 步骤是人工确定句子结尾并记下时间差,和选择、拷贝、粘贴文本等动作。

发明内容
鉴于上述,本发明提出了一种提高文本和语音匹配效率的方法,其包括以下步骤 步骤1用语音识别软件识别语音文件得到带时间戳的文本;
步骤2将带时间戳的文本与用户输入的文本比对;
步骤3将带时间戳的文本中的时间戳赋给用户输入的文本。
其中
在所述步骤1中,对应于同一个语音音频文件,输入利用语音识别软件识别出的文
本和用户提供的文本,分别简称为S字符串和Y字符串,S字符串中带有时间戳; 所述步骤2进一步分为
步骤20:从S字符串和Y字符串中删除标点符号,对Y串中的标点符号左侧第一 个单词作出被删除标点符号的标记,在S字符串和Y字符串中,用单个空白字符取代连 续的空白字符,用一个除字母和标点符号外的字符替代空白字符;
步骤21:对S字符串和Y字符串进行逐字符比较,并对齐S字符串和Y字符串; 所述步骤3进一步分为
步骤30:在对齐的两个字符串中于相同位置或相近位置处寻找相同和非常相似的单
词,这些单词被称为锚单词,以每个锚单词右侧的第一个空白字符的位置为分割点,将
S字符串和Y字符串在该分割点处分割,这样S字符串和Y字符串被分割成同样数目的 子字符串;
步骤31:将S字符串的子字符串和Y字符串的子字符串从左到右一一对应;
步骤32:如果S字符串的子字符串的锚单词后面没有识别软件提供的时间戳,则将
S字符串和Y字符串的子字符串分别与同串的下一个子字符串合并,如果S字符串中合 并后的新子字符串的锚单词后面仍然没有时间戳,则继续与下一个子字符串合并,直至 S字符串中新子字符串的锚单词后面带有时间戳为止,然后把S字符串的子字符串的锚 单词后面的时间戳赋给Y字符串的子字符串的最后的单词,这样Y串的子字符串都带有
时间戳;
步骤33:如果表示一个句子终结的标点符号的前面的字符串的时间戳不是落在语音
波谷,则比较波峰两侧的波谷的长度,将时间戳移到较长的波谷的开始处,在同一个波
谷的结束处加上一个时间戳;如果时间戳落在波谷中间而且波谷的宽度超过0.3秒,将 时间戳移至波谷开始处,在同一个波谷处的结束处加上一个时间戳;
步骤34:在Y字符串中,用空白字符替换先前替代空白字符的字符,在标记被删除 标点符号的单词后加回标点符号,即得到我们所需的带时间戳的用户提供的字符串。
在所述步骤21中,采用以下算法之一对S字符串和Y字符串进行逐字符比较和对 齐基于Smith Waterman算法、Needleman-Wunsch算法、BLAST算法,FASTA算法, Clustal算法、遗传算法、模拟退火算法、Hidden Markov Model对齐算法。
在所述步骤32中,把S字符串的子字符串的锚单词后面的时间戳赋给Y字符串的 子字符串的最后的单词以后,如果Y字符串的某些子字符串被标记带有标点符号,这些 子字符串将于标点符号附近分裂成更小的字符串,则在这些子字符串的标点符号后面加 上时间戳,该时间戳为前一个子字符串的时间戳与该子字符串中标点符号前的小字符串 的时长之和,该小字符串的时长根据其有意义的字符的个数在所属子字符串中的比例分 配。
在所述步骤20中,标记被删除标点符号的方法是每一个单词在Y串中有一个位 置,对Y字符串中的每一个单词构造一个类,其第一个数据成员表示带有标点符号的单 词在Y串的位置,第二个数据成员表示该单词后面所带的标点符号。
在所述步骤20中,包括将Y字符串中的数字用对应的外语单词代替。
在所述步骤20中,用一个下划线替代空白字符。
本发明的优点是效率高,无需人工介入,可大批量的匹配语音和文本文件。
具体实施例方式
利用语音识别软件分析语音音频文件,可得出识别后的文本文件和相应的时间戳。 一般而言,语音识别软件在识别非特定人的语音时,准确率常常不高,如讲话的人发音 不标准或者语速比较快,致使识别出的文本不是很准确,可能会低至50%,甚至更低。 本发明将识别出的文本进一步和用户提供的文本进行比较和对齐,然后将识别软件提供 的时间戳和用户提供的文本对应起来,即实现所谓文本和语音自动匹配。经过实际检 验,自动匹配的准确率是用户可以接受的。本发明方法步骤具体描述如下
1) 对应于同一个语音音频文件,输入利用语音识别软件识别出的文本和用户提供的 文本,为描述方便起见,在本文中,将语音识别软件识别出的文本简称S串,将用户提 供的文本简称Y串。S串中带有时间戳。时间戳表示其对应的文本结束的时间。例如
Y串"in this country on the first day of spring, some areas";
S串"in
this
country[l .0] on efforts[l .4] to[l .6] bring[2.0] some areas[2.7]"。
在这里为了表达方便,将时间戳嵌于S字符串中,其单位是秒。
2) 从S字符串中删除标点符号,将Y字符串中的数字用对应的外语单词代替(如用 单词seven代替数字7),从Y字符串中删除标点符号,对Y串中的标点符号左侧第一个 单词作出被删除标点符号的标记。标记被删除标点符号的方法是每一个单词在Y串中 有一个位置,对Y字符串中的每一个单词构造一个类,其第一个数据成员表示带有标点 符号的单词在Y串的位置,第二个数据成员表示该单词后面所带的标点符号。例如 spring是Y串中第9个单词且其后有一个逗号。在S字符串和Y字符串中,用单个空白 字符取代连续的空白字符,用一个除字母和标点符号外的字符替代空白字符。在本实施 例中用下划线字符"」,替代空白字符。现在单词被下划线字符"一"隔开。艮口
Y串"in—this—country—on—the—first—day—of—spring—some—areas";
S串"in—this—country—on—efforts—to—bring—some areas"。
其中,Y串中单词spring右边的逗号被删除,但是单词spring被标记带有逗号。
3) 对Y串和S串进行逐字符比较和对齐两个字符串(或简称比对)。可用于比对的 算法有Smith Waterman算法,Needleman-Wunsch算法,BLAST (Basic Local Alignment Search Tool)算法,FASTA算法,Clustal算法,遗传算法,模拟退火算法和Hidden Markov Model对齐算法。
现详细描述其中一种基于Smith Waterman算法的比对方法
定义相似函数如果p和q是两个字符,那么X(p,q)表示p和q字符在进行比较时 的相似值,称为一个相似函数。相似函数还包括当p为空字符或q为空字符的情况。
建立相似矩阵对于Y串和S串,它们的所有元素都属于同一个字符集。此字符集 中每一个元素和另外一个元素都有相似值。将它们排列起来构成一个矩阵。相似矩阵中 的每一个数字都是X (p,q)相似函数的值。相似矩阵的每一个格子的值是预先定义的或由 用户输入的。如下列出了相似矩阵的一部分
ARNBD<:QEGH
A10-l-l-l-l-l-l之-l-2
R-2102-1.-1-l_1-l-l-l-l
N_2之10-l-l-i-l-l-l-1-l
B-2-l-l10-l-l-l-l-l-l-l
D-2-l_1-l10-l_1-l-l_1-l
C-2-l-l-l曙l10-l-l-l隱l-l
Q-2-l-l-l-l-l10-l-l-l-l
-2-l-l-l-l-l-l10-l-1-l
2-l-l-l-l-l-l-l10-l-l
G-2-l-l-l-1-l-l-l-l10-l
H-l-l-l-l-l-l-1-l-l-l10
插入空字符当两个字符串对齐后, 一个串中某些字符不能在对比串中相同位置找
到字符,则在对比串中用空字符表示,例如在比对后的图中,Y串中的the单词中t字符 在S串中并没有对应的字符,于是在S串中同样的位置插入空字符(-)(中划线)。通常空 字符和其他字符的相似函数值都一样大,是一个负的常数。插入空字符会降低字符串间 的相似性。
建立局部最佳相似矩阵M:假设S串有n个字符,Y串有m个字符。将初始条件列 (即i=0)和S串n个字符从左向右排列构成矩阵的横坐标,将初始条件行(即j=0)和 Y串m个字符从上到下排列构成(n+l) x (m+l)矩阵的纵坐标,在S串和Y串中的任 意两个位置i和j相交处的格子填入局部最佳相似值(M[i, j]=F(i, j))。局部最佳相似值由 以下的局部最佳相似函数得出
印,./》=或, 和
0
W,力='"汰Y
Ff",力+环,聰》
-为空字符
s/,/为s串中第/个字符,y历为r串中第j'个字符
在边框的格子的局部最佳相似值都为o,任意一个不在上边框和左边框的格子的局 部最佳相似值可由局部最佳相似函数公式推导得出。将所有格子的值用迭代方法求出,
然后比较所有的局部最佳相似值F(i, j)可以得到最大一个,假设是F(u, v)或M[u, v], u
可能不等于n, v可能不等于m。
在得到(n+l) x (m+l)局部最佳相似矩阵F和M[u, v]后,用回溯法得到一条自左 上至右下的路径和新的S串和Y串,S串和Y串可能被插入空字符。以下为回溯法的伪 代码
for ( i=u, j==v,. i>0 ss j>0,-) {
if ( M[i,j] == M[i-l,j-l] + X(S[i],Y[j])H
else if ( M[i,j]==M[i-l,j]+X(Si],'-' > H
insert (, 一 , , Y, j) }else if ( M[i,j]==M[i,j-l
+X('-,,Y[j-l)){
insert (, , , S, i)
bzrealc/
以上insert (a, b, c)表示将字符a插于字符串b的第c个位置。将Y串和S串一起打 印出来即可得到以下比对后的结果
Y串"in一thi s一country一on一the—fi rst誦一day一of一spring一some一areas : "in一this_countr9—on_—effor-ts一—to-一-l3Hng一some一areas
如果回溯得到的路径不完整,即不是从(n,m)到(l,l)。路径不完整有三种情况,头 部缺失,尾部缺失和头尾都缺失。对于头部缺失,将较长的的缺失字符串原样列出,较 短的缺失字符串向右对齐,在其左端补上空字符串。对于尾部缺失,将较长的缺失字符 串原样列出,较短的字符串的缺失部分向左对齐,左端补上空字符串。以下为补上字符 串处理头部或尾部缺失的情况
Y串
the一wa
y—out_a_story—of_ru"i n一and一sur vi va ^一o-n—a^stor^一of一rui n一-of一sur vi ve
头部缺失 部分
1
一the—a
不完整的对齐部分
补上空字符串然后连接得到的比对
尾部缺失 部分
Y串 S幸
the一way一ouHstory一of一rtH n一and一sur v~i val —only一o-n—a一sto「9-of一rui n一-of一survi ve一the—a
4) 在对齐的两个字符串中于相同位置或相近位置处寻找非常相似和相同的单词,这 些单词被称为锚单词。若两个单词中共有的字符数大于较长的单词的字符数的70%,则 这两个单词称为相似单词,如first和efforts,共有的字符是一个f, 一个r, 一个t和一个 s,总共4个字符,较长的单词efforts有7个字符,4/7小于70%,这两个单词不是相似单 词。以每个锚单词的右侧第一个下划线字符的位置为分割点,将两个字符串在分割点处 分割,这样两个字符串被分割成同样数目的子字符串。锚单词是子字符串的最后一个单 词。
Y串的锚单词按从左到右的顺序是in,this,country,on,spring,some,areas; S串的锚单词按从左到右的顺序是:in,this,country,on, bring,some,areas。
5) 将S字符串的子字符串和Y字符串的子字符串从左到右一一对应,S串中的第1 个子字符串对应Y串中的第l个子字符串,S串中的第2个子字符串对应Y串中的第2 个子字符串,依此类推。为表示方便用"/"分隔子字符串。两个字符串对应后如下
Y串"in/this/country/on/the—first-—day—of—spring/some/areas"; S串,,in/this/country/on/--effor-ts——to-_-bring/some/areas"。
6) 如果S字符串的子字符串的锚单词后面没有识别软件提供的时间戳,则将S字符 串和Y字符串的子字符串分别与同串的下一个子字符串合并,如果S字符串中合并后的 新子字符串的锚单词(最后的单词)后面仍然没有时间戳,则继续与下一个子字符串合
并,直至S字符串中新子字符串的锚单词后面带有时间戳为止。如some和areas合并成 一个子字符串。结果,S串中所有的子字符串的锚单词后面都有时间戳。然后把S字符 串的子字符串的锚单词后面的时间戳赋给Y字符串的子字符串的最后的单词,这样Y串 的子字符串也都带有时间戳。艮P:
Y串:,,in
/this[0.7〗/country[1.0〗/on一the一first-一day一of—spring[2.0〗/some—areas[2,7〗"; S串:,,in
/this
/country[1.0] /on——effor-ts——to-一-bring[2.0] /some一areas[2.7〗"
7) 如果Y串的某些子字符串被标记带有标点符号(如,。! ?等),这些子字符串 将于标点符号附近分裂成更小的字符串,小字符串的时长根据其有意义的字符的个数与 其所在子字符串字符的个数按比例分配。例如,母字符串一"[5] what are you doing here Steve[7.5]"有25个有意义的字符,时长为7.5-5=2.5秒,在标点符号"?"处分裂成2 个小字符串"what are you doing here"和"Steve"。第一个小子字符串有20个有意义的字 符,则其时长为20/25*2.5=2秒,其时间戳为前一个子字符串的时间戳加上时长为7秒。 这样整个字符串变为"〖5〗what are you doing here [7] Steve[7.5]"。
8) 时间戳微调。如果表示一个句子终结的标点符号(如句号,感叹号,问号等)的 前面的字符串的时间戳不是落在语音波谷(也就是说在波峰),则比较波峰两侧的波谷 的长度,将时间戳移到较长的波谷的开始处,在同一个波谷处的结束处加上一个时间 戳,因为人们说话时在句子终结处通常比其他地方会停止更长的时间;如果时间戳落在 波谷中间(即没有声音或音量特低的地方)而且波谷的宽度超过0.3秒,将时间戳移至 波谷开始处,在同一个波谷的结束处加上一个时间戳。
9) 在Y字符串中,删掉子字符串中的连字符"-",用空白字符替换下划线,在标 记被删除标点符号的单词后加回标点符号,即得到我们所需的带时间戳的用户提供的字 符串。这样,最后的Y串为
"in
this
country[l .0] on the first day of spring, [2.0] some areas[2.7"。
本发明的优点是快速,效率高,无需人工介入,可大批量的匹配语音和文本文件。 从以上描述可知,本发明方法的精髓在于首先用语音识别语音文件得到带时间戳的 文本,然后将带时间戳的文本与用户输入的文本比对,最后将带时间戳的文本中的时间 戳赋给用户输入的文本。任何基于本发明精髓的变换和改进,均应视为本发明权利要求 载明的范围之内。
权利要求
1.一种提高文本和语音匹配效率的方法,其特征在于包括以下步骤步骤1用语音识别软件识别语音文件得到带时间戳的文本;步骤2将带时间戳的文本与用户输入的文本比对;步骤3将带时间戳的文本中的时间戳赋给用户输入的文本。
2. 如权利要求1所述的提高文本和语音匹配效率的方法,其特征在于 在所述步骤1中,对应于同一个语音音频文件,输入利用语音识别软件识别出的文本和用户提供的文本,分别简称为S字符串和Y字符串,S字符串中带有时间戳; 所述步骤2进一步分为步骤20:从S字符串和Y字符串中删除标点符号,对Y串中的标点符号左侧第一 个单词作出被删除标点符号的标记,在S字符串和Y字符串中,用单个空白字符取代连续的空白字符,用一个除字母和标点符号外的字符替代空白字符;步骤21:对S字符串和Y字符串进行逐字符比较,并对齐S字符串和Y字符串; 所述步骤3进一步分为步骤30:在对齐的两个字符串中于相同位置或相近位置处寻找相同和非常相似的单词,这些单词被称为锚单词,以每个锚单词右侧的第一个空白字符的位置为分割点,将S字符串和Y字符串在该分割点处分割,这样S字符串和Y字符串被分割成同样数目的 子字符串;步骤31:将S字符串的子字符串和Y字符串的子字符串从左到右一一对应; 步骤32:如果S字符串的子字符串的锚单词后面没有识别软件提供的时间戳,则将S字符串和Y字符串的子字符串分别与同串的下一个子字符串合并,如果S字符串中合并后的新子字符串的锚单词后面仍然没有时间戳,则继续与下一个子字符串合并,直至s字符串中新子字符串的锚单词后面带有时间戳为止,然后把s字符串的子字符串的锚单词后面的时间戳赋给Y字符串的子字符串的最后的单词,这样Y串的子字符串都带有 时间戳;步骤33:如果表示一个句子终结的标点符号的前面的字符串的时间戳不是落在语音波谷,则比较波峰两侧的波谷的长度,将时间戳移到较长的波谷的开始处,在同一个波谷的结束处加上一个时间戳;如果时间戳落在波谷中间而且波谷的宽度超过0.3秒,则 将时间戳移至波谷开始处,在同一个波谷的结束处加上一个时间戳;步骤34:在Y字符串中,用空白字符替换先前替代空白字符的字符,在标记被删除 标点符号的单词后加回标点符号,即得到我们所需的带时间戳的用户提供的字符串。
3.如权利要求2所述的提高文本和语音匹配效率的方法,其特征在于 在所述步骤21中,采用以下算法之一对S字符串和Y字符串进行逐字符比较和对 齐基于Smith Waterman算法、Needleman-Wunsch算法、BLAST算法,FASTA算法, Clustal算法、遗传算法、模拟退火算法、Hidden Markov Model对齐算法。
4. 如权利要求2所述的提高文本和语音匹配效率的方法,其特征在于 在所述步骤32中,把S字符串的子字符串的锚单词后面的时间戳赋给Y字符串的子字符串的最后的单词以后,如果Y字符串的某些子字符串被标记带有标点符号,这些 子字符串将于标点符号附近分裂成更小的字符串,则在这些子字符串的标点符号后面加上时间戳,该时间戳为前一个子字符串的时间戳与该子字符串中标点符号前的小字符串 的时长之和,该小字符串的时长根据其有意义的字符的个数在所属子字符串中的比例分 配。
5. 如权利要求2所述的提高文本和语音匹配效率的方法,其特征在于-在所述步骤20中,标记被删除标点符号的方法是每一个单词在Y串中有一个位置,对Y字符串中的每一个单词构造一个类,其第一个数据成员表示带有标点符号的单 词在Y串的位置,第二个数据成员表示该单词后面所带的标点符号。
6. 如权利要求2所述的提高文本和语音匹配效率的方法,其特征在于 在所述步骤20中,包括将Y字符串中的数字用对应的外语单词代替。
7. 如权利要求2所述的提高文本和语音匹配效率的方法,其特征在于 在所述步骤20中,用一个下划线替代空白字符。
全文摘要
本发明涉及一种提高文本和语音匹配效率的方法,它包括以下步骤步骤1用语音识别软件识别语音文件得到带时间戳的文本;步骤2将带时间戳的文本与用户输入的文本比对;步骤3将带时间戳的文本中的时间戳赋给用户输入的文本。该方法效率高,无需人工介入,可大批量的匹配语音和文本文件。
文档编号G10L15/08GK101188110SQ20061011462
公开日2008年5月28日 申请日期2006年11月17日 优先权日2006年11月17日
发明者陈健全 申请人:陈健全
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1