Reply To: How can I decrease processing time?

Home Forums OpenEars How can I decrease processing time? Reply To: How can I decrease processing time?

#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.