Когда я запускаю этот код, он работает нормально, но когда Я запустил его снова, он занимает около 10 секунд, прежде чем он запустится, и это тоже иногда прерывается.AVSpeechSynthesizer говорит, когда запускается снова, занимает 10 или около того секунд до начала
Редактировать: Ниже я добавил больше кода, чтобы лучше понять, где выполняется код. Основной поток в этом случае будет фактический пользовательский интерфейс Siri. Это код, который выполняется на джейлбрейк-устройстве. Это позволяет мне иметь Siri ответ на языке хинди для моих родителей, которые не понимают по-английски хорошо ...
- (BOOL)handleSpeech:(NSString *)text withTokens:(NSSet *)tokens withSession:(id<APSiriSession>)session {
if ([tokens containsObject:@"siri"]) {
NSRegularExpression *queryRegex = [NSRegularExpression regularExpressionWithPattern:@"(?:.*)Siri ?(.*)" options:NSRegularExpressionCaseInsensitive error:nil];
NSArray *arrayOfAllMatches = [queryRegex matchesInString:text options:0 range:NSMakeRange(0, [text length])];
NSString *query = nil;
for (NSTextCheckingResult *match in arrayOfAllMatches) {
if (match.numberOfRanges > 1) {
query = [text substringWithRange:[match rangeAtIndex:1]];
}
}
if (!query || query.length == 0) {
query = @"";
}
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager.requestSerializer setTimeoutInterval:8.0];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager GET:[NSString stringWithFormat:@"http://api.salmanburhan.com/Siri/Hindi/?input=%@", [query stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]] parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"JSON: %@", responseObject);
NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
AVSpeechUtterance *utterance = [[AVSpeechUtterance alloc] initWithString:string];
utterance.rate = 0.1000;
utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"hi-IN"];
AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init];
[synthesizer speakUtterance:utterance];
//[synthesizer pauseSpeakingAtBoundary:AVSpeechBoundaryWord];
[session sendTextSnippet:[[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding] temporary:NO scrollToTop:NO dialogPhase:@"Summary"];
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"Error: %@", error);
[session sendTextSnippet:[NSString stringWithFormat:@"An Error Occurred, Sorry.\n\n%@", error] temporary:NO scrollToTop:NO dialogPhase:@"Error"];
[session sendRequestCompleted];
}];
return YES;
}
return NO;
}
Не использовать, попробовал это как раз сейчас. @Zero –