ESpeakEngine Objective C 语音合成器

・3 分钟阅读

介绍

几年前,我在寻找一个Objective-C框架,允许在我们的项目中的iOS设备上播放文本,

经过几天的研究,并且尝试将这些库集成到iOS SDK中,我选择eSpeak和Flite作为候选(我能够在短时间内成功定制eSpeak和Flite,他们支持更多的语言,谷歌使用eSpeek提供翻译服务)。

背景

ESpeakEngine是一个objectice c静态库项目,包含eSpeak开源语音合成器,它不向eSpeak添加任何新功能,只开放它作为Objective-C类方法,并与iOS AvFoundation框架结合(要查看eSpeak合成器的所有可用属性,请阅读它主页URL上的文档),它还通过定义ESpeakEngineDelegate使用标准委托模式。

在静态库项目中,还存在一个简单的iPhone应用程序的测试。这个例子应用程序只有一个屏幕,UITextView用于文本输入,UIButton用于启动输入文本的语音合成。

使用代码

使用ESpeakEngine非常简单,你只需将ESpeakEngine静态库项目的标准依赖项添加到项目(简单地将库项目文件从Finder拖放到项目导航器)中:

Screen_Shot_ 2012-01-24 _at_10.34. 07.png

在目标生成设置中添加文件夹eSpeak_1.0/Classes的路径: Header Search Paths :

Header_search_paths.png

链接ESpeakEngine二进制和AVFundation.Framework :

Linked_binaries.png

并链接ESpeakEngine数据文件夹e speak-data - 只需将此文件夹从引用的eSpeak.xcodeproj项目拖放到父项目(我将它放入示例项目中以分组ESpeakTest/Supporting Files):

Link_epeak-data_dialog.png

Linked_espeak-data.png

然后在保存引擎实例的类中导入ESpeakEngine:



#import"ESpeakEngine.h" 




在init或viewDidLoad方法中创建ESpeakEngine的新实例,并且设置所需的所有参数(语言,音量,性别),等等):


- (void)viewDidLoad {


 [super viewDidLoad];


 engine = [[ESpeakEngine alloc] init];


 engine.volume = 1;


 [engine setLanguage:@"en"];


} 




最后将按钮触摸事件绑定到调用ESpeakEngine speak方法的代码:



- (IBAction)speech {


 NSString * text = self.textView.text;


 [engine speak:text];


}




此版本中不包含任何文档,总之,源代码是自我解释的,并且只有几百行,测试应用程序是查找更多属性的更好方法。

历史记录

  • 2010初始版本
讨论
Ayn profile image