码迷,mamicode.com
首页 > 移动开发 > 详细

[ios]ios tts的使用

时间:2015-09-11 10:42:26      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

参考:http://www.tekuba.net/program/327/

http://blog.sina.com.cn/s/blog_923fdd9b0101flx3.html

 

iOS平台由于本身不支持TTS,所以开发者如果想使自己的App具有TTS功能,首先要找到好用的TTS库。
根据特酷吧的了解,在iOS平台有以下几个选择:
1,OpenEars和FliteTTS
Google下很容易就会检索到这两个库:OpenEars和FliteTTS。OpenEars是开源的iOS库,支持离线的语音识别和TTS,但它主要是针对英语。而FliteTTS比较小巧,也不支持中文。如果做中文语音合成,这两个库根本用不上(网络上的广泛说法,特酷吧没有验证)。


2,Google的在线语音合成服务
还有一个选择就是Google的在线语音合成服务,请求格式为:
http://translate.google.com/translate_tts?tl=en&q=tekuba
如上示例会返回“tekuba”的英文读音文件的mp3。如果需要的是中文发音,可以修改tl参数为zh,如下示例:
http://translate.google.com/translate_tts?tl=zh&q=特酷吧
如果App中需要的是固定的语音播报,使用google的这个在线服务是个不错的选择,只需要一次请求,将返回的mp3保存在本地,以后直接读取本地mp3即可。但是大部分场景都是需要转换为语音的文本不固定,我们就只能选择别的办法了。

3,科大讯飞语音以及百度语音
目前,做中文语音合成的比较好的算是科大讯飞了,在语速,停顿上效果都不错。但是它提供的iOS版本的SDK只是支持在线的语音合成(和上面google的在线合成服务类似),目前不支持本地离线合成。特酷吧咨询了科大讯飞的技术人员,他们说支持离线语音合成的iOS版本SDK大概会在年中发布(特酷吧写本文时是2014年)。
另外百度也在2013年10月份开发了语音技术平台,不过现在使用还需要申请,特酷吧没有尝试,不知道它是否支持iOS的离线语音合成,如果哪位同学使用过,也可以分享下。

4,iOS7提供的AVSpeechSynthesizer等新特征
如果你的App仅支持iOS7系统的话,那么这个iOS7中为AVFoundation.Framework引入的新特征一定很适合你。
使用时导入#import <AVFoundation/AVSpeechSynthesis.h>,示例如下:
AVSpeechSynthesizer *av = [[AVSpeechSynthesizer alloc]init];
AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc]initWithString:@"特酷吧"]; //需要转换的文本
[av speakUtterance:utterance];
不过,据特酷吧测试,iOS7提供的这个接口合成的语音比较生硬且没有停顿。

 

 

我自己的小项目里需要用到 text to speech功能,就是把文字用语音读出来。一开始想用讯飞的云语音,但是每次发音都需要和讯飞的服务器通讯才能获取到音频。上网闲逛的时候发现ios7 新添加了这个功能,不需要联网,语音合成功能在手机上完成,这样在没有wifi与流量的情况下也可以使用了,就拿来试用一下,官方文档在此:苹果官方文档

使用非常简单,代码就这么几行:

 

  1. AVSpeechUtterance *utterance = [AVSpeechUtterance  
  2.                                     speechUtteranceWithString:@"hello world"];  
  3.     AVSpeechSynthesizer *synth = [[AVSpeechSynthesizer alloc] init];  
  4.     [synth speakUtterance:utterance];  


执行以上代码,ios设备就会读出初始化 AVSpeechUtterance 对象时所用的 NSString 对象,以上代码读出的是“hello world”。

AVSpeechUtterance 对象有一些属性,可以设置发出声音的效果:

 

技术分享

 

可以修改速度、音量等。

 

我测试的时候发现读一个英文单词效果还可以,但是读好多词的英文句子的时候,上一个词还没读完,下一个词已经开始读了。也许还需要额外设置。

 

读中文的效果很好,是普通话发音,能读很长的句子,我试着读了一篇新闻,效果不错。

 

[ios]ios tts的使用

标签:

原文地址:http://www.cnblogs.com/lyggqm/p/4800064.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!