ESpeakEngine - Objective-C语音合成器






4.80/5 (3投票s)
ESpeakEngine - Objective-C语音合成器
引言
几年前,我正在寻找一个 Objective-C 框架,以便在我们的 iOS 项目中使用语音合成文本。当时我没有找到任何,只有三个用 C 编写的简单语音合成库 - eSpeak, Flite 和 Festival。经过几天的研究和尝试将这些库集成到 iOS SDK 中,我选择了 eSpeak 和 Flite 作为候选者(我能够在合理的时间内成功定制 eSpeak 和 Flite,它们支持更多语言,Google 在其翻译服务中使用 eSpeak……)。
在接下来的几行中,描述了第一个语音合成器包装器 - ESpeakEngine。
背景
ESpeakEngine 是一个 Objective-C 静态库项目,包含一个非常轻量级的 eSpeak 开源语音合成器的包装器。它没有添加任何新的功能到 eSpeak,它只是将 eSpeak 的功能作为 Objective-C 类方法公开,并将此功能与 iOS AVFoundation Framework 结合起来(要查看 eSpeak 合成器的所有可用属性,请阅读其主页上的文档)。它还使用标准的委托模式,通过定义 ESpeakEngineDelegate。在静态库项目中,还存在一个测试目标,其中包含一个简单的 iPhone 应用程序。这个示例应用程序只有一个屏幕,包含用于文本输入的 UITextView 和一个 UIButton,用于启动输入的文本的语音合成。
使用代码
使用 ESpeakEngine 非常简单,您只需要将 ESpeakEngine 静态库项目作为标准依赖项添加到您的项目中(只需将库项目文件从 Finder 拖放到项目导航器中)。
在 Target 的 Build Settings: Header Search Paths: 中添加文件夹 eSpeak_1.0/Classes 的路径:
链接 ESpeakEngine 二进制文件和 AVFundation.Framework
并链接 ESpeakEngine 数据文件夹 espeak-data - 只需将此文件夹从引用的 eSpeak.xcodeproj 项目拖放到父项目中(拖放到任何组中,例如,我将其拖放到 ESpeakTest/Supporting Files 组中)。
然后,在持有引擎实例的类中导入 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 初始版本