TTS是TextToSpeech的缩写,即“从文本到语音”,是人机对话的一部分,让机器能够说话。是指一项语音合成技术。
语音合成是将人类语音用人工的方式所产生。若是将电脑系统用在语音合成上,则称为语音合成器,而语音合成器可以用软/硬件所实现。
文字转语音系统则是将一般语言的文字转换为语音,其他的系统可以描绘语言符号的表示方式,就像音标转换至语音一样。
TTS的含义有很多:Track&Tracesystem双向追溯系统、TextToSpeech的缩写,即“从文本到语音”、语音合成技术(TextToSpeech)……
--------------------------------
TTS语音合成引擎概述:
TTS是语音合成应用的一种,它将储存于电脑中的文件,如帮助文件或者网页,转换成自然语音输出。TTS可以帮助有视觉障碍的人阅读计算机上的信息,或者只是简单的用来增加文本文档的可读性。现在的TTL应用包括语音驱动的邮件以及声音敏感系统。TTS经常与声音识别程序一起使用。现在有很多TTS的产品,包括微软tts,ReadPlease2000,ProverbeSpeechUnit,以及NextUpTechnology的TextAloud。朗讯、Elan、以及AT&T都有自己的语音合成产品。
语音合成TTS发展历史:
1、17世纪法国人研发机械式的说话装置,直到19世纪,贝尔实验室对于电子语音合成技术的研究,才开启近代语音合成技术的发展。
2、贝尔实验室在1939年制作出***个电子语音合成器VODER,是一种利用共振峰原理所制作的合成器。
3、1960年,瑞典语言学家G.Fant则提出利用线性预测编码技术(LPC)来作为语音合成分析技术,并推动了日后的发展。
4、1980年代MoulinesE和CharpentierF提出新的语音合成算法PSOLA,此技术可以合成比较自然的语音。
TTS语音合成引擎解析
TTS文语转换用途很广,包括电子邮件的阅读、IVR系统的语音提示等等,目前IVR系统已广泛应用于各个行业(如电信、交通运输等)。
TTS所用的关键技术就是语音合成(SpeechSynthesis)。早期的TTS一般采用专用的芯片实现,但主要用在家用电器或儿童玩具中。
而基于微机应用的TTS一般用纯软件实现,主要包括以下几部分:
●文本分析-对输入文本进行语言学分析,逐句进行词汇的、语法的和语义的分析,以确定句子的低层结构和每个字的音素的组成,包括文本的断句、字词切分、多音字的处理、数字的处理、缩略语的处理等。
●语音合成-把处理好的文本所对应的单字或短语从语音合成库中提取,把语言学描述转化成言语波形。
●韵律处理-合成音质(QualityofSyntheticSpeech)是指语音合成系统所输出的语音的质量,一般从清晰度(或可懂度)、自然度和连贯性等方面进行主观评价。清晰度是正确听辨有意义词语的百分率;自然度用来评价合成语音音质是否接近人说话的声音,合成词语的语调是否自然;连贯性用来评价合成语句是否流畅。
要合成出高质量的语音,所采用的算法是极为复杂的,因此对机器的要求也非常高。算法的复杂度决定了目前微机并发进行多通道TTS的系统容量。
语音合成引擎TTS在CTI的应用中的基本构架
目前常见的IVR系统大都是通用的工控机平台上插入语音板卡组成,并支持中文语音合成TTS等技术。
数据库服务器返回文本数据给IVR。
IVR通过其TCP通讯接口,将需要合成的文本信息发送给TTS服务器。
TTS服务器将用户文本合成的语音数据分段通过TCP通讯接口发送给IVR服务器。
IVR服务器把分段语音数据组装成为独立的语音文件。
一般的公网接入(IVR)大都采用工控机+语音板卡,而合成的语音数据则通过局域网传给IVR。这种结构只适用于简单的应用场合。
中文TTS语音合成引擎系统
微软语音合成(tts)服务申请和调用
1、申请账户:
点击资源组,里面就有部署好的服务了
点击这里,可以获取subscription_key,另外还有个就是位置service_region(上图就是eastasia),这两个后面会用到。
2、调用服务
在完成微软azure服务账号申请后,就可以进行调用了。代码:
directorywiththiscommand:pythonTTSSample.py
importos,requests,time
fromxml.etreeimportElementTree
#ThiscodeisrequiredforPython2.7
try:input=raw_input
exceptNameError:pass
Ifyouprefer,youcanhardcodeyoursubscriptionkeyasastringandremove
theprovidedconditionalstatement.However,wedorecommendusingenvironment
variablestosecureyoursubscriptionkeys.Theenvironmentvariableis
settoSPEECH_SERVICE_KEYinoursample.
Forexample:
subscription_key="Your-Key-Goes-Here"
else:
exit()
classTextToSpeech(object):
def__init__(self,subscription_key):
self.subscription_key=subscription_key
self.tts=input("Whatwouldyouliketoconverttospeech:")
self.timestr=time.strftime("%Y%m%d-%H%M")
self.access_token=None
TheTTSendpointrequiresanaccesstoken.Thismethodexchangesyour
subscriptionkeyforanaccesstokenthatisvalidfortenminutes.
defget_token(self):
headers={
}
response=requests.post(fetch_token_url,headers=headers)
self.access_token=str(response.text)
defsave_audio(self):
constructed_url=base_url+path
voice.text=self.tts
body=ElementTree.tostring(xml_body)
response=requests.post(constructed_url,headers=headers,data=body)
Ifasuccessresponseisreturned,thenthebinaryaudioiswritten
tofileinyourworkingdirectory.Itisprefacedbysampleand
includesthedate.
ifresponse.status_code==200:
audio.write(response.content)
print("\nStatuscode:"+str(response.status_code)+"\nYourTTSisreadyforplayback.\n")
print("\nStatuscode:"+str(response.status_code)+"\nSomethingwentwrong.Checkyoursubscriptionkeyandheaders.\n")
print("Reason:"+str(response.reason)+"\n")
defget_voices_list(self):
response=requests.get(constructed_url,headers=headers)
print("\nAvailablevoices:\n"+response.text)
if__name__=="__main__":
app=TextToSpeech(subscription_key)
app.get_token()
app.save_audio()
#app.get_voices_list()
参考文档下载:
TTS与CTI
CTI技术使电信和计算机相互融合,克服了传统电信和计算机服务相对单一的缺点,将两者完美结合了起来。其应用领域非常广泛,任何需要语音、数据通信,特别是那些希望把计算机网与通信网结合起来完成语音数据信息交换的系统都会用到CTI技术。
TTS即语音合成技术(TextToSpeech),它涉及声学、语言学、数学信号处理技术、多媒体技术等多个学科技术,是中文信息处理领域的一项前沿技术,实现把计算机中任意出现的文字转换成自然流畅的语音输出。
那么应如何将TTS功能附加到CTI应用中呢?某些比较先进的交换平台,已经在交换机的内部实现了TTS的功能,并作为标准接口的一部分对外提供,业务开发商只需要简单的调用他们即可以在业务中使用该功能。
对于未实现TTS功能的PBX,就需要业务开发商自己去选择合适的平台,在此基础上进行二次开发,即调用所选TTS平台提供的标准接口,实现语音合成功能。
目前CTI已经成为全球发展***为迅猛的产业之一,每年以50%的速度增长,CTI如同计算机产业一样是一个金字塔形的产业链,从上到下会以至少20倍的幅度增值。TTS作为一种诱人的新技术,如果能很好的嵌入到增值业务的应用中去,必将形成一个更好的应用前景。
杭州音通软件有限公司是由***教育部和浙江省人民政府联办并依托浙江大学而成立的高新技术公司,音通公司主要致力于计算机语音技术的研发并逐步开拓语音识别、语音流媒体传输等其它语音领域的研究。其核心技术(Intone_TTS)是具有自主知识产权的中文语音合成技术,在由浙江省科技厅组织的鉴定中被专家一致鉴定为国内领先地位,并已申请多项***专利。
Intone_TTS是一套把文本信息转换为语音信息的开发工具包,为系统集成商、软件开发商提供了完备的接口函数和编程示例,使用户能够灵活的进行调用,并集成到其它应用系统中。接口需要语音合成运行库的支持,适合多种开发环境。开发者可以根据具体的应用场合进行选择。
它能够对所有的汉字、英文、阿拉伯数字进行语音合成;
支持繁体字及多音字的编辑;
合成效果:自然、平滑;
规范的函数调用接口,同时支持微软SAPI的调用;支持同步调用和异步调用方式;
支持PCMWave,uLaw/aLawWave,ADPCM,DialogicVox等多种语音格式;
支持GB2312码(简体中文)、BIG5码(繁体)、UNICODE码;
支持多路通道同时合成;
支持Dialogic、东进、三汇等主流语音板卡;
TTS漫谈
TTS就是TextToSpeech,文本转语音,文本朗读,差不多是一个意思。在语音系统开发中经常要用到。
目前市场上的TTS很多,实现方式也各式各样,有的很昂贵,如科大讯飞,据说当初得到863计划的资助,有很高的技术;有的相对便宜,如捷通华声,InfoTalk;也有免费的,如微软的TTS产品。
相对于ASR(AutomaticSpeechRecognition,自动语音识别)来说,实现一个TTS产品所需要的技术难度不算大,在我看来也就是个力气活。
要是让我们来做一个能够把汉语句子朗读出来的TTS,我们会怎么做呢?
有一种***简单的TTS,就是把每个字都念出来,你会问,岂不要录制6千多个汉字的语音?幸运的是,汉语的音节很少,很多同音字。我们***多只是需要录制:声母数×韵母数×4,(其实不是每个读音都有4声),这样算来,***多只需要录制几百个语音就可以了。
在合成的时候需要一张汉字对应拼音的对照表,汉字拼音输入法也依赖这张表,可以在网上找到,不过通常没有4声音调,大不了自己加上,呵呵,要不怎么说是力气活呢。
这样做出来的TTS效果也还可以,特别是朗读一些没有特别含义的如姓名,家庭住址,股票代码等汉语句子,听起来足够清晰。这要归功于我们伟大的母语通常都是单音节,从古代的时候开始,每个汉字就有一个词,表达一个意思。而且汉字不同于英语,英语里面很多连读,音调节奏变化很大,汉字就简单多了。
当然,你仍然要处理一些细节,比如多音字,把“银行”读成“yinxing”就不对了;再比如,标点符号的处理,数字、字母的处理,这些问题对于写过很多程序的你,当然不难了。
国内的一些语音板卡带的TTS,不管是卖钱的还是免费的,大体都是这样做出来的,也就是这样的效果。
如果要把TTS的效果弄好一点,再来点力气活,把基本的词录制成语音,如常见的两字词,四字成语等,再做个词库和语音库的对照表,每次需要合成时到词库里面找。这样以词为单位,比以字为单位,效果自然是好多了。当然,这里面还是有个技术,就是分词的技术,要把复杂的句子断成合理的词序列,也有点技术。这也要怪新文化那些先驱们,当初倡导白话文,引进西文的横排格式、标点符号的时候,没有引进西文中的空格分词。不过即使分词算法那么不***,不那么准确,也问题不大,如前面所说,汉字是单音节词,把声音合起来,大体上不会有错。
当然,科大讯飞的力气活又干的多了些,据说已经进化到以常用句子为单位来录音了,大家可以想像,这要耗费更多的力气,换来更好的效果。
至于增加一些衔接处的“词料”,弄一些修饰性的音调,我认为是无关紧要的,对整体的效果改进不是太大。
市面上商品化TTS一般还支持粤语,请个粤语播音员录音,把上面的力气活重做一遍就是了。
再说句题外话,很多人觉得录音***找电台、电视台的播音员,其实找个你周围的女同事来录制,只要吐字清晰就可以了。在某种情况下,寻常声音比字正腔圆的新闻联播来得可爱。
再来说说文本的标识,对于复杂文本,某些内容程序没有办法处理,需要标识出来。比如,单纯的数字“128”,是应该念成“一百二十八”还是“一二八”?解决办法通常是加入XML标注,如微软的TTS:"128"念成“一百二十八”,"128"将念成“一二八”。TTS引擎可以去解释这些标注。遗憾的是,语音XML标注并没有形成大家都完全认可的标准,基本上是各自一套。
再说说TTS应用编程,微软的TTS编程接口叫SAPI,是COM接口,开发起来还是有点麻烦,还好MSDN的网站上资料很***。微软的TTS虽然免费,但其中文角色目前是个男声,声音略嫌混浊,感觉不爽。
国内一般的厂家提供API调用接口,相对比较简单,可以方便地嵌入应用程序中去。
也很多应用是脱机合成,没有实时性要求,就更不必买多个许可了。
更多情况下,我们甚至没有必要购买TTS,比如语音开发中常见的费用催缴,拨通后播放:“尊敬的客户,您本月的费用是:212元”,前面部分对所有客户都一样,录一个语音文件就是了,而数字的合成是很简单的,你只要录制好10个数字语音,再加上十,百,千,万,再加上金钱的单位“元”。
TTS(Training+Tool+Scheme)超越计划
针对目前成长型企业遇到的人力资源问题,立体化解决人力资源瓶颈、通过企业与专家共建、实现人才强企的人力资源方向的重大智业项目。为企业培养人力资源高级管理人才,提供先进人力资源管理工具,并协助企业建立现代人力资源战略规划。通过“培训(Training)+工具(Tool)+方案(Scheme)”的办法,为企业系统解决人力资源难点问题,进而搭建科学、完善的人力资源管理体系。