2014-07-09 1 views
1

Je suis avec cette AVSpeechSynthesizer en œuvre UI dans mon application:AVSpeechSynthesizer - Comment progresser?

enter image description here

Comment puis-je obtenir les progrès de l'énoncé AVSpeechSynthesizer? Je vois qu'il n'y a pas de méthode déléguée ou d'API pour obtenir les progrès actuels, mais y a-t-il une solution pour faire avancer les choses?

+0

"Je vois qu'il n'y a pas de méthode déléguée" Alors vous voyez mal. Voir l'exemple de code sur https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch14p656textToSpeech/ch27p924textToSpeech/ViewController.m – matt

+0

"aucune méthode de délégation ou API pour obtenir la progression en cours" – NSFeaster

Répondre

3

Il y a deux façons d'aller ici. Les deux commencent par définir un delegate pour votre instance AVSpeechSynthesizer. Si vous fournissez du texte au synthétiseur en créant et en mettant en file d'attente plusieurs énoncés, vous pouvez suivre les énoncés que vous lui avez donnés et implémenter speechSynthesizer:didFinishSpeechUtterance: dans votre délégué pour être averti quand ils sont terminés. En fonction de la durée de votre texte parlé et du nombre d'occurrences dans lesquelles vous l'avez décomposé, mesurer le nombre d'énoncés terminés par rapport au nombre total à prononcer peut fournir une indication décente de la progression de la parole.

Si vous fournissez du texte en un seul énoncé, ou si vous utilisez plusieurs énoncés et que vous voulez une mesure de progression plus précise, implémentez speechSynthesizer:willSpeakRangeOfSpeechString:utterance: dans votre délégué. Vous pouvez observer la progression en comparant la plage actuellement parlée à la longueur de la chaîne de parole.

+0

En utilisant la méthode delegate de willSpeakRange et en obtenant le pourcentage complet en utilisant la propriété range.location de la structure et l'expression.speechstring.length. – NSFeaster

Questions connexes