首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS中的同步ESpeak引擎

iOS中的同步ESpeak引擎
EN

Stack Overflow用户
提问于 2013-05-03 21:33:35
回答 2查看 340关注 0票数 0

在一个表视图委托方法中,我根据一些条件访问一些字符串,我想使用ESpeak Engine..In说出这些字符串。它提供给所有匹配的strings...but ESpeak引擎的日志只接受最后一个字符串(即,它只拼写最后一个字符串)。

如何拼写所有的字符串..

这是我的代码..

代码语言:javascript
复制
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)celle forRowAtIndexPath:(NSIndexPath *)indexPath {
        NSLog(@"Final Speak Child List:%@",[stringComponentsForArray objectAtIndex:1]);

       [engine speak:[stringComponentsForArray objectAtIndex:1]];

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-03 22:01:18

如果您试图说出数组中的所有字符串,那么可以将所有字符串附加到NSString属性,然后当UITableView完成加载时,您可以通过说出附加的长NSString开始说出所有字符串。否则,将其放在didSelectRowForIndex中,并在那里调用与数组的适当indexPath.row相关的方法。

代码语言:javascript
复制
 [engine speak [stringComponentsForArray objectAtIndex:indexPath.row];
票数 0
EN

Stack Overflow用户

发布于 2013-05-03 22:57:56

快速查看报头,ESpeak不会将请求排队,这就是为什么最后一个请求会覆盖前面的请求。

您可以将文本合并为一个大字符串,然后这样做,但如果您想要更改扬声器或控制时间,这将不起作用。

您需要做的是创建一个小队列,然后实现委托方法

代码语言:javascript
复制
- (void)speechEngineDidFinishSpeaking:(ESpeakEngine*)engine successfully:(BOOL)flag;

随着每个文本的完成,您可以添加下一个文本。

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16360179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档