Utilicé la API de reconocimiento de voz de Google y recibí una respuesta json que no era directamente analizable en iOS. Las muestras de resultados fueron como:
Primero intenté decir Hola 1 2 3, que se reconoció sin problemas. respuesta JSON fue:
{"result":[]}
{"result":[{"alternative":[{"transcript":"hello 123","confidence":0.59780568},{"transcript":"hello 1 2 3"}],"final":true}],"result_index":0}
O cuando hablado durante demasiado tiempo, tengo un HTML 404, como a continuación:
<html><title>Error 400 (Bad Request)!!1</title></html>
Y cuando hablé galimatías, lo tengo:
{"result":[]}
Así para analizar toda esa respuesta, utilicé el siguiente código:
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];
Espero que esto ayude a alguien.
[¿Qué has probado?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) – vikingosegundo