- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
tts语音朗读TTS中英文混合朗读的完全设计
tts语音朗读:TTS中英文混合朗读的完全设计
实现
疯狂代码 http://CrazyC/ ĵ http:/CrazyC/BlogDigest/Article76012.html
===========转载请注明出处:南才北往=================本文由所有代码全由南才北往开
发的转载请注明原作者名称=== ===========转载请注明出处:南才北往==============中英文混
合朗读一直是个难点 ,即在一段文本中要将中文和英文分离出来进行分别朗读,又不能打乱朗读的次序,所以
我们设计如下的两种方法,每种方法都有各自的优点和缺点。 ;①采用同步朗读方式进行混合朗读 : ;将朗读文
本进行提取分析,提取本文本中的中文和英文,在编程中,我们设定两个标志:const ;int ;IsEnglish ;= ;0; ;//
;英文标志 const ;int ;IsChinese ;= ;3; ;// ;中文标志 标点符号和数字默认和它前面的字的标志一致。当处理文
本时标志发生改变时, 立即调用语音合成引擎进行朗读。 //循环遍历每个字 for ;(int ;i ;= ;0; ;i ; ;length; ;i++)
{//提取字母 current ;= ;m_strTxt.GetAt(i);// ;如果是英文字母 , 标志设为 0 if((current ;= ;A ; ;current
;= ;Z) ;|| ;(current ;= ;a ; ;current ;= ;z)){CFlag ;= ;IsEnglish; ;// ;如果是英文字母 , 标志设为 0 }
else ;if((current ;=0current= ;64)||(current ;=91current= ;96)||(current
;=123current= ;127))//如果是数字则和它的前一个字母的标志一样 {if(PFlag==IsEnglish)
CFlag=IsEnglish;//英文标志 elseCFlag=IsChinese;//中文标志 }else{CFlag ;= ;IsChinese;//中文标志 }if
;(CFlag ;== ;PFlag) ;//若当前标志与前一个字母标志相同则个数增一 iCount++;else ;{ ;if ;(iCount!=0) ;//字符
类型变化 , 读出前面的文本 ;{ ;if(PFlag==IsEnglish)SetVoice(szwEnglish);//将引擎设置成英文引擎 else ;
SetVoice(szwChinese);//将引擎设置成中文引擎 str ;= ;m_strTxt.Mid(first,iCount);//提取出标志相同的文字
//设置成同步朗读方式,将文本同步朗读出来 hr ;= ;m_IpVoice-Speak(str.AllocSysString(), ;0, ;0 ;);}PFlag
;= ;CFlag;//改变当前标志 first ;= ;i;//设置当前位置 iCount ;= ;1;//个数还原为 1 } ;}//读出最后一段文本 if
(PFlag==IsEnglish)SetVoice(szwEnglish);//将引擎设置成英文引擎 else ;SetVoice(szwChinese);//将引擎设
置成中文引擎 str ;= ;m_strTxt.Mid(first,length);//设置成同步朗读方式,将文本同步朗读出来 hr ;=
;m_IpVoice-Speak(str.AllocSysString(), ;0, ;0 ;); ===========转载请注明出处:南才北往
=================本文由所有代码全由南才北往开发的转载请注明原作者名称===
===========转载请注明出处:南才北往============== ;②采用异步XML格式进行混合朗读 : ;将
第二种方式与第一中方式相似,区别只是在于它是将文本进一步进行处理,最后生成符合XML朗读格式的文本后对
文本进行朗读,而不是调用当标志发生改变时立即调用语音合成引擎进行朗读://设置XML起始标志
strEngine.printf(xml ;version=\1.0\\nSAPI\nVOICE ;REQUIRED=\NAME=%s\
,m_strZHEngine.c_str());strWord+=strEngine;for ;(int ;i ;= ;1; ;i ;= ;nLength; ;i++){ ;if ;(iCou
文档评论(0)