Tôi đã sử dụng API nhận dạng giọng nói của Google và tôi đã nhận được phản hồi json không được phân tích cú pháp trực tiếp trên iOS. Các mẫu kết quả giống như:
Trước tiên, tôi đã cố gắng nói rằng Xin chào 1 2 3 đã được nhận dạng mà không có sự cố. Json trả lời là:
{"result":[]}
{"result":[{"alternative":[{"transcript":"hello 123","confidence":0.59780568},{"transcript":"hello 1 2 3"}],"final":true}],"result_index":0}
Hoặc khi nói chuyện quá lâu, tôi nhận được một HTML 404 như dưới đây:
<html><title>Error 400 (Bad Request)!!1</title></html>
Và khi tôi nói chuyện vô nghia, tôi nhận:
{"result":[]}
Vì vậy, để phân tích cú pháp tất cả phản hồi như vậy, tôi đã sử dụng mã bên dưới:
NSString *msg = @"Could not synthesize !";
NSString *responseString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"responseString: %@",responseString);
if([responseString containsString:@"transcript"]&&responseString.length>25)
{
responseString = [responseString stringByReplacingOccurrencesOfString:@"{\"result\":[]}" withString:@""];
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:[responseString dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:nil];
if(dictionary!=nil)
if(dictionary.allValues.count>0)
{
NSArray *array =[dictionary valueForKeyPath:@"result.alternative.transcript"];
if(array)
{
NSArray *array2 = [array objectAtIndex:0];
if(array2)
{
NSLog(@"%@",[array2 objectAtIndex:0]);
msg = [array2 objectAtIndex:0];
};
}
}
}
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Google Response" message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
Hy vọng điều này sẽ giúp ai đó.
Nguồn
2014-12-17 11:02:15
[Bạn đã thử gì?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) – vikingosegundo