Home › Forums › OpenEars › How can I decrease processing time? › Reply To: How can I decrease processing time?
July 8, 2014 at 2:59 pm
#1021904
detrop
Participant
I think I am doing it by hand. This is my instance method that is triggering speech recognition in my app.
- (IBAction)activateSpeech:(UIButton *)sender {
LanguageModelGenerator *lmGenerator = [[LanguageModelGenerator alloc] init];
NSString *name = @"CommandsAndIntegersDict";
NSDictionary *grammarDict = @{
ThisWillBeSaidOnce : @[
@{
OneOfTheseCanBeSaidOnce : @[@"NAME", @"NUMBER", @"SAVE", @"CLEAR", @"FORGET IT"]
},
@{
ThisCanBeSaidWithOptionalRepetitions : @[
@{
OneOfTheseWillBeSaidOnce : @[@"0", @"1", @"2",@"3", @"4", @"5",@"6",@"7",@"8",@"9"]
}
]
}
]
};
NSError *err = [lmGenerator generateGrammarFromDictionary:grammarDict withFilesNamed:name forAcousticModelAtPath:[AcousticModel pathToModel:@"AcousticModelEnglish"]];
NSDictionary *languageGeneratorResults = nil;
NSString *lmPath = nil;
NSString *dicPath = nil;
if ([err code] == noErr) {
languageGeneratorResults = [err userInfo];
lmPath = [languageGeneratorResults objectForKey:@"LMPath"];
dicPath = [languageGeneratorResults objectForKey:@"DictionaryPath"];
} else {
NSLog(@"Error: %@", [err localizedDescription]);
}
[OpenEarsLogging startOpenEarsLogging];
[self.openEarsEventsObserver setDelegate:self];
[self.pocketsphinxController setProcessSpeechLocally:TRUE];
[self.pocketsphinxController setReturnNbest:TRUE];
[self.pocketsphinxController setVerbosePocketSphinx:TRUE];
[self.pocketsphinxController setSecondsOfSilenceToDetect:0.2];
if ([sender isSelected]) {
if (![self.pocketsphinxController isSuspended]) {
[self.pocketsphinxController suspendRecognition];
}
[sender setSelected:NO];
} else {
if (![self.pocketsphinxController isListening]) {
[self.pocketsphinxController
startListeningWithLanguageModelAtPath:lmPath
dictionaryAtPath:dicPath
acousticModelAtPath:[AcousticModel pathToModel:@"AcousticModelEnglish"]
languageModelIsJSGF:YES
];
}
if ([self.pocketsphinxController isSuspended]) {
[self.pocketsphinxController resumeRecognition];
}
[sender setSelected:YES];
}
}
As you can see I have the grammarDict dictionary, is this what you mean by doing “by hand”? Sorry, I am not as proficient with PocketSphinx, or speech recognition for that matter. Thanks.