[ios]ios tts的使用

参考: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与流量的情况下也可以使用了,就拿来试用一下,官方文档在此:苹果官方文档

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

[objc] view plaincopy

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

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

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

可以修改速度、音量等。

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

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

时间: 2024-11-05 19:26:16

[ios]ios tts的使用的相关文章

[ios]ios的延迟执行方法

1.最直接的方法performSelector:withObject:afterDelay: 这种方法的缺点:每次要为延时写一个方法 2.使用类别,用BOLCK执行 [代码]c#/cpp/oc代码: 01 @implementation NSObject (PerformBlockAfterDelay) 02   03 - (void)performBlock:(void (^)(void))block 04           afterDelay:(NSTimeInterval)delay

iOS开发——TTS文本发音

主要将TTS发音中的单词发音和中文发音,单词发音适配iOS6,iOS7,iOS8,iOS9. 并将当年个人的毕业设计iOS源码——基于iOS背单词系统的设计与实现,上传到github上

蓝懿 iOS iOS单例销毁

1 单例的实现见之前写过的一篇文章 iOS单例的快速实现 static InstanceClass *instance; + (InstanceClass *)defaultInstance{ @synchronized (self){ if (instance == nil) { instance = [[InstanceClass alloc] init]; } } return instance;} 2 单例的概念复习下 单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而

iOS || IOS

看过很多朋友写博客有时会写成IOS,自己也没有在意过,直到有一天赶X网的一个妹子告诉我iOS才是对的,面试的时候我们会关注这个细节的.于是匆匆忙忙把以前的东西都改了.i就是iPhone的i,OS是系统. 如果你负责面试别人那么你可以装逼地告诉别人: IOS :CISCO开发用于网络设备的操作系统iOS :是由苹果公司为移动设备所开发的操作系统,支持的设备包括iPhone.iPod touch.iPad.Apple TV. 仅在此做一条极短记录.

[ios]iOS 图形编程总结

转自:http://www.cocoachina.com/ios/20141104/10124.html iOS实现图形编程可以使用三种API(UIKIT.Core Graphics.OpenGL ES及GLKit). 这些api包含的绘制操作都在一个图形环境中进行绘制.一个图形环境包含绘制参数和所有的绘制需要的设备特定信息,包括屏幕图形环境.offscreen 位图环境和PDF图形环境,用来在屏幕表面.一个位图或一个pdf文件中进行图形和图像绘制.在屏幕图形环境中进行的绘制限定于在一个UIVi

[充电][ios]ios充电接口

知乎推荐:http://www.zhihu.com/topic/19693633/top-answers 外文教学网站: http://www.raywenderlich.com/ 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:Franz Fang链接:http://www.zhihu.com/question/20264108/answer/30263999来源:知乎 进阶博客(排名不分先后..) 1.王巍的博客(我们都叫它喵神,他很萌哒)链接:http://one

Xamarin.iOS:iOS Layout Gotchas Redux(转载)

原文地址:http://blog.adamkemp.com/2014/12/ios-layout-gotchas-redux.html iOS Layout Gotchas Redux Since my last post on iOS Layout GotchasI have encountered a few more basic layout mistakes that can lead to bugs and brittle code. Some of these are things

Xamarin.iOS:iOS Layout Gotchas(转载)

关于继承UIView中子控件的布局.原文地址:http://blog.adamkemp.com/2014/11/ios-layout-gotchas-and-view-controller.html In a previous post I touched on layout in iOS by describing the difference between Frame and Bounds, and in that post I covered one of the most common

IOS:ios和javaScript相互调用 oc和js

文章来自:http://blog.csdn.net/intbird 相比android和js进行交互,ios和js进行交互是比较方便的; android和js进行交互,请看这里: http://blog.csdn.net/intbird/article/details/42295453 android和js进行交互框架,看这里: http://blog.csdn.net/intbird/article/details/46461203 这里看ios和js的交互 0.上个丑图 1,oc调用js,超