0

在其中一个表视图委托方法中,我正在根据某些条件访问一些字符串,我想使用 ESpeak 引擎说出这些字符串。在日志中,它给出了所有匹配的字符串……但是 ESpeak 引擎只接受最后一个字符串(即,它只是拼写最后一个字符串。)

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

这是我的代码..

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

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

}
4

2 回答 2

0

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

 [engine speak [stringComponentsForArray objectAtIndex:indexPath.row];
于 2013-05-03T14:01:17.740 回答
0

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

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

你要做的就是做一个小队列,然后实现委托方法

- (void)speechEngineDidFinishSpeaking:(ESpeakEngine*)engine successfully:(BOOL)flag;

每个文本完成后,您可以添加下一个文本。

希望这可以帮助

于 2013-05-03T14:57:55.597 回答