Я пытаюсь включить OpenEars в разрабатываемый мной проект theos, настройку для взломанных iDevices, поскольку мне нужно распознавание речи для моей настройки. Мне удалось связать фреймворк OpenEars, поместив его в ту же папку, что и мои частные фреймворки, и в настоящее время я пытаюсь заставить работать код учебника. Вот мой текущий код:
#import <OpenEars/LanguageModelGenerator.h>
#import <OpenEars/PocketsphinxController.h>
#import <OpenEars/AcousticModel.h>
%hook SBLockScreenView
-(void)setCustomSlideToUnlockText:(id)arg1 {
LanguageModelGenerator *lmGenerator = [[LanguageModelGenerator alloc] init];
NSArray *words = [NSArray arrayWithObjects:@"WORD", @"STATEMENT", @"OTHER WORD", @"A PHRASE", nil];
NSString *name = @"NameIWantForMyLanguageModelFiles";
NSError *err = [lmGenerator generateLanguageModelFromArray:words withFilesNamed:name forAcousticModelAtPath:[AcousticModel pathToModel:@"AcousticModelEnglish"]];
//NSError* err = [lmGenerator generateLanguageModelFromArray:words withFilesNamed:name forAcousticModelAtPath:imagePath];
//NSError* err = [[NSError alloc] init];
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]);
}
%orig;
}
%end
Компиляция выполняется нормально, но когда она выполняется, я получаю следующие сообщения об ошибках, и мое устройство выходит из строя: «При попытке сослаться на запрошенный комплект акустической модели, который, как ожидается, находится на пути (null), комплект не был найден. Это означает, что когда цикл прослушивания начинается, он выйдет из строя из-за отсутствия необходимых ресурсов. Проблема с поиском пакета акустической модели может быть связана с тем, что имя пакета не было присвоено этому методу так, как он может использовать; например, если вы пытаетесь чтобы использовать английскую акустическую модель, и вы добавили этот пакет в свой проект приложения, вы должны вызвать этот метод, передав [AcousticModel pathToAcousticModel:@"AcousticModelEnglish"]
(или [AcousticModel pathToAcousticModel:@"AcousticModelSpanish"]
для испанского пакета), без добавления ".bundle" в конец и убедившись, что пакет имя пишется в точности так, как оно отображается в фактическом имени пакета (пакет можно увидеть в папке этого дистрибутива "Framework".
Если это не решит проблему, скорее всего, это связано с тем, что комплект акустической модели не был успешно импортирован в корневой уровень вашего проекта приложения и его mainBundle. Обычно это происходит либо из-за того, что комплект акустической модели никогда не перетаскивался в проект вашего приложения, когда изначально предполагалось перетаскивать папку «Framework», либо из-за того, что он был перетащен внутрь, но вместо использования параметра «Создавать группы для любых добавленных папок» в диалоговом окне «Добавить файлы» Xcode случайно была выбрана опция «Создавать ссылки на папки для любых добавленных папок». Чтобы исправить это, просто удалите комплект акустической модели или папку «Framework» из своего приложения и снова добавьте ее в проект приложения с правильной настройкой «Создавать группы для любых добавленных папок» в диалоговом окне «Добавить файлы» Xcode.
Я также получаю эти сообщения в моем системном журнале:
May 27 00:54:49 Phillips-iPhone SpringBoard[17785] <Warning>: acousticModelPath is (null)
May 27 00:54:49 Phillips-iPhone SpringBoard[17785] <Warning>: Error: the default phonetic dictionary (null)/LanguageModelGeneratorLookupList.text can't be found in the app bundle but the app is attempting to access it, most likely there will be a crash now.
May 27 00:54:49 Phillips-iPhone SpringBoard[17785] <Warning>: Error while trying to load the pronunciation dictionary: Error Domain=NSCocoaErrorDomain Code=260 "The operation couldn’t be completed. (Cocoa error 260.)" UserInfo=0x1883cbb0 {NSFilePath=(null)/LanguageModelGeneratorLookupList.text, NSUnderlyingError=0x1883cb40 "The operation couldn’t be completed. No such file or directory"}
May 27 00:54:49 Phillips-iPhone SpringBoard[17785] <Error>: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid domain=nil in -[NSError initWithDomain:code:userInfo:]'
Любая помощь в получении этой работы приветствуется. Спасибо!