2010-06-23 6 views
0

Je suis en train de concevoir une application qui nécessite de la synthèse vocale. J'utilise la bibliothèque here pour convertir le texte en parole. Je dois récupérer le texte de l'URL JSON, et passer les valeurs au texte à la parole. Je suis en mesure de récupérer des données JSON et le convertir en texte à la parole pour la objectAtIndex 0 en utilisant le code suivant ...Conversion continue du texte en discours à partir de données json

SBJSON *json = [[SBJSON alloc]init]; 
fliteEngine = [[FliteTTS alloc] init]; 
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.sampleurl.txt"]]; 
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
NSString *jsonstring = [[NSString alloc]initWithData:response encoding:NSUTF8StringEncoding]; 

NSArray *asanasList = [json objectWithString:jsonstring error:nil]; 
NSArray *asanas =[asanasList objectForKey:@"yogagurubackpain"]; 


for(NSDictionary *test in asanas) 
{ 

    UrlValues *myasanas = [[UrlValues alloc]init]; 
    myasanas.asanatitle = [test objectForKey:@"asanatitle"]; 
    myasanas.asanatranscript = [test objectForKey:@"asanatranscript"]; 
    myasanas.asanapicture = [test objectForKey:@"asanapicture"]; 
    [data.yoga addObject:myasanas]; 
    [myasanas release]; 
} 


UrlValues *asana=[[data yoga]objectAtIndex:0]; 
self.AsanaName.text = [asana asanatitle]; 
self.AsanaTranscript.text = [asana asanatranscript]; 

NSString *imageUrl = [asana asanapicture]; 
NSString* mapUrl = [imageUrl stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; 
NSData* imageData = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:mapUrl]]; 
UIImage* image = [[UIImage alloc] initWithData:imageData]; 
self.AsanaImage.image = image; 


NSString *speak = self.AsanaTranscript.text; 
[fliteEngine setVoice:@"cmu_us_rms"]; 
[fliteEngine speakText:speak]; 
[fliteEngine setPitch:100.0 variance:11.0 speed:0.4]; 
    [imageData release]; 
    [image release]; 

[jsonstring release]; 
[json release]; 

Maintenant, mon problème est de savoir comment puis-je aller à l'objet suivant automatiquement après la fin du jeu du premier. Le processus doit continuer pour tous les objets. Les images correspondantes etc doivent charger sur la page après le texte à la parole est faite pour le premier ... Plz aidez-moi ...

Répondre

0

En regardant la source de la bibliothèque liée, il semble que vous devrez pirater une méthode en FliteTTS.m. Si vous regardez la source, il utilise un AVAudioPlayer pour lire un fichier WAV généré. C'est aussi se positionner en tant que délégué du lecteur audio. Si vous implémentez la méthode de délégué audioPlayerDidFinishPlaying:successfully: et que vous lisez le segment suivant quand il est appelé, vous devriez être en mesure d'avoir un flux texte-voix semi-continu.

+0

Pouvez-vous m'aider avec un échantillon coz je suis un débutant à iphone dev .... Plzzzz –

Questions connexes