65.9K
CodeProject 正在变化。 阅读更多。
Home

ESpeakEngine - Objective-C语音合成器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.80/5 (3投票s)

2012年1月18日

BSD

2分钟阅读

viewsIcon

81216

downloadIcon

2999

ESpeakEngine - Objective-C语音合成器

引言

几年前,我正在寻找一个 Objective-C 框架,以便在我们的 iOS 项目中使用语音合成文本。当时我没有找到任何,只有三个用 C 编写的简单语音合成库 - eSpeak, FliteFestival

经过几天的研究和尝试将这些库集成到 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 拖放到项目导航器中)。

Screen_Shot_2012-01-24_at_10.34.07.png

在 Target 的 Build Settings: Header Search Paths: 中添加文件夹 eSpeak_1.0/Classes 的路径:

Header_search_paths.png

链接 ESpeakEngine 二进制文件和 AVFundation.Framework

Linked_binaries.png

并链接 ESpeakEngine 数据文件夹 espeak-data - 只需将此文件夹从引用的 eSpeak.xcodeproj 项目拖放到父项目中(拖放到任何组中,例如,我将其拖放到 ESpeakTest/Supporting Files 组中)。

Link_epeak-data_dialog.png

Linked_espeak-data.png

然后,在持有引擎实例的类中导入 ESpeakEngine 头文件

#import "ESpeakEngine.h"   
initviewDidLoad 方法中,创建一个新的 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 初始版本
© . All rights reserved.