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.
"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
"aucune méthode de délégation ou API pour obtenir la progression en cours" – NSFeaster