1

我正在为 iOS 开发一个语音控制程序,并使用 Pocketsphinx 作为我的识别引擎。我希望它识别口头命令是否包含单词“Morning”,并以morningGreetings 数组中的一个短语作为响应。我的代码看起来像这样-

if([hypothesis rangeOfString:@"morning"].location == !NSNotFound) {
    NSString *text= [morningGreetings objectAtIndex:arc4random() % [morningGreetings count]];;
    [self.fliteController say:[NSString stringWithFormat:text] withVoice:self.firstVoiceToUse];
}

但是,使用此代码,识别器仅在“Morning”是语音字符串中的第一个单词时才执行命令。我希望它回应“早上好”、“早上好,不是吗”、“你今天早上好吗?”等。我可以改变什么来实现这一点?

4

1 回答 1

1

我希望它识别口语命令是否包含单词“Morning”(...)但是,使用此代码,识别器仅在“Morning”是口语字符串中的第一个单词时才执行命令。

您的条件location == !NSNotFound相当于location == 0因为!NSNotFound等于 0,因此它仅在“morning”是字符串中的第一个单词时执行。你想要的是location != NSNotFound.

像这样改变条件:

if ([hypothesis rangeOfString:@"morning"].location != NSNotFound) { ... }
于 2012-06-23T14:11:31.480 回答