iOS 7.1 - Can't stop AVSpeechSynthesizer after first utterance

Originator:timothy.broder
Number:rdar://16205032 Date Originated:01-Mar-2014 03:07 PM
Status:Open Resolved:
Product:iOS SDK Product Version:iOS 7.1
Classification:Other Bug Reproducible:Always
 
This is a duplicate of rdar://15798036
This is still happening in 7.1

Kevin Chen10-Jan-2014 05:38 PM

Summary:
AVSpeechSynthesizer provides a method called stopSpeakingAtBoundary:, which is supposed to stop speaking and clear the queue of utterance. However, it does not work after the first AVSpeechUtterance has been spoken.

Steps to Reproduce:
1. Create an AVSpeechSynthesizer and give it AVSpeechUtterances faster than it can speak.

AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init];
for (int i = 0; i < 100; i++)
    [synthesizer speakUtterance:[AVSpeechUtterance speechUtteranceWithString:@"I am a particularly annoying bug."]];

2. Some time later, attempt to stop speech synthesis

[synthesizer stopSpeakingAtBoundary:AVSpeechBoundaryImmediate];

(AVSpeechBoundaryWord works too)

Expected Results:
Speaking stops immediately or after the current word is done, whichever was specified.

Actual Results:
Speaking will only stop if stopSpeakingAtBoundary: was called during the first AVSpeechUtterance. Afterwards, stopSpeakingAtBoundary: will not affect speech synthesis and will return NO, indicating that speaking did not stop.

Version:
iOS 7.1

Notes:
For more information: http://stackoverflow.com/questions/19672814/an-issue-with-avspeechsynthesizer-any-workarounds

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!