为 Cocos2D 编写的图书应用添加“朗读”功能

Posted

技术标签:

【中文标题】为 Cocos2D 编写的图书应用添加“朗读”功能【英文标题】:adding "read aloud" feature to book app written in Cocos2D 【发布时间】:2014-07-10 20:38:22 【问题描述】:

我创建了一个图书应用程序并使用 Cocos2D 和物理引擎 (Chipmunk) 来创建它。我想为其添加“大声朗读”功能。 到目前为止,我找到了使用 Epub3 和 SMIL 使用 iBook Author 创建书籍时如何添加朗读功能的说明/书籍和教程(但由于某些限制,我无法使用 iBook Author)。 我还从 J. Shapiro 那里找到了一个很好的教程,如何使用 AVSpeechSynthesizer 制作旁白书。这有帮助,只是我想使用录制的声音,而不是合成声音。我不知道这种方法是否可以修改为这样做? 我也知道如何在 Sprite Kit 框架中完成它。 我找不到的唯一信息是如何向使用 Cocos2D 编写的应用程序添加“朗读”功能。可以在 SimpleAudioEngine 中完成,还是可以与其他引擎(可能来自 Sprite Kit 框架)结合使用? 如果有人能给我一些参考/指针或教程链接,我将非常感激,在哪里可以找到一些答案,如何添加此功能。 提前谢谢你。

【问题讨论】:

【参考方案1】:

我想使用录制的声音,而不是合成声音

很好。将您的录音音频文件(caf、wav 或 mp3 格式)添加到项目中。在适当的时间播放它:

[[SimpleAudioEngine sharedEngine] playEffect:@"someVoiceRecordingFile.wav"];

【讨论】:

【参考方案2】:

定义大声朗读对你意味着什么,因为我发现很多术语,尤其是像这样半模糊的术语,根据使用它的人而不同。

您所说的朗读书本质上是指通过播放旁白音频向您朗读故事的数字故事书吗?我已经创建了许多这样的内容,您所要求的内容有多个步骤,具体取决于您在书中要实现的功能。如果您的意思是简单地播放音频就是这样,那么是的,您可以在 cocos2d 中使用 SimpleAudioEngine(作为一种选择)来做到这一点,但我假设您已经知道这就是为什么这个问题对它有一点模糊的原因。无论哪种方式,您可能都不想将旁白作为一种效果播放,而是将其播放。要做到这一点以及背景音乐,您将通过左声道播放背景音乐并通过右声道播放旁白。您可以轻松地向 SimpleAudioEngine 添加一个方法,使其美观整洁。为了让您开始,可以使用与此类似的方法来访问正确的频道:

CDLongAudiosource* sound = [[CDAudioManager sharedManager] audioSourceForChannel:kASC_Right];

if ([sound isPlaying])

    [sound stop];


[sound load:fileName];

还要使用适当的设置和推荐的格式来传输音频,例如 aifc(或者实际上是所有音频)。尽管我相信您可以在不先解压缩的情况下流式传输 mp3,但问题在于时间。如果您使用突出显示的文本或循环播放音频,那么 aifc 是更好的选择。就我个人而言,我从来没有理由使用 mp3。带旁白的 Wav 是我会避免的,即使只是为了增加文件大小。如果 mp3 甚至针对流媒体进行解压缩(我不确定它是否超出了我的想象),那么您的内存会出现巨大的峰值,这将是非常不受欢迎的,有时甚至会非常糟糕。

还有很多其他的东西可以进入它,但这些是基本的第一步。如果你想做一些事情,比如突出显示的文本、逐字动画等,那么这当然需要更多的工作,你需要熟悉 cocos2d、SpriteKit 或任何你决定使用的东西。不久后我将编写一个关于它的教程系列,因此我将涵盖所有这些内容。

另一方面,如果您正在谈论录制某人的声音并让它播放,即一位母亲录制自己阅读故事以便她的孩子在使用您的应用时可以听到她的声音,那么您只需录制音频就像您处理任何其他音频一样,将其保存到设备中,并在页面以正确的阅读模式(或您个人所称的任何方式)显示时播放。值得一看的地方是 AVAudioRecorder,它是 AVFoundation 框架的一部分。如果需要,只需 Google“iOS 录音”作为示例。

【讨论】:

非常感谢您提供的信息,是的,我想为文本的每个突出显示的单词添加录制的声音(就像在 SMIL/EPUB3 中所做的那样,但我找不到如何在 cocos2D 环境中进行)。请让我知道您的教程何时可用以及我可以在哪里阅读它们。

以上是关于为 Cocos2D 编写的图书应用添加“朗读”功能的主要内容,如果未能解决你的问题,请参考以下文章

Android应用开发提高篇-----文本朗读TTS(TextToSpeech)

如何在 cocos2D 应用程序中拍照(iOS 6)

C语言结合VBS脚本编写朗读小工具,做一个能够发音的C语言程序

Android 轻松实现语音朗读

微信朗读功能怎么用

我的第一个 iPhone 的 Cocos2d 应用程序中的问题?