Queue management system for AVSpeechSynthesizer
Add this to your Podfile:
pod 'QHSpeechSynthesizerQueue'Run a pod install and import the header where you need it:
#import <QHSpeechSynthesizerQueue.h>Drop QHSpeechSynthesizerQueue.h and QHSpeechSynthesizerQueue.m in your project, then
#import "QHSpeechSynthesizerQueue.h"##Usage
QHSpeechSynthesizerQueue *synthesizerQueue = [[QHSpeechSynthesizerQueue alloc] init];[synthesizerQueue readLast:@"This message will be added to the end of the queue"
withLanguage:@"en_US"
andRate:@"0.2"];[synthesizerQueue readNext:@"This message will be read next"
withLanguage:@"en_US"
andRate:@"0.2"
andClearQueue:NO];If you set andClearQueue: to YES, the queue will be cleared and this will be the last message to be read.
[synthesizerQueue readImmediately:@"This message will be read next"
withLanguage:@"en_US"
andRate:@"0.2"
andClearQueue:NO];If you set andClearQueue: to YES, the queue will be cleared and this will be the last message to be read.
Stop the queue's playback and clear the queue immediately.
[synthesizerQueue stop];Stop the queue's playback and clear the queue. If something is currently being read, it will stop afterwards.
[synthesizerQueue stopAfterCurrent];Pause the queue's playback immediately.
[synthesizerQueue pause];Pause the queue's playback. If something is currently being read, it will pause afterwards.
[synthesizerQueue pauseAfterCurrent];Resume the queue's playback.
[synthesizerQueue resume];Clear the queue. If something is being read, it will not be interupted and future added messages will be read if not paused/stopped.
[synthesizerQueue clearQueue];Set this to YES to duck all the device's audio sessions when a string is being read. Defaults to YES.
synthesizerQueue.duckOthers = YES;The delay before reading a message. Default is 0.0
synthesizerQueue.preDelay = 1.0;The delay after reading a message. Default is 0.0
synthesizerQueue.postDelay = 1.0;You can set a QHSpeechSynthesizerQueueDelegate to be notified of playback events.
@protocol QHSpeechSynthesizerQueueDelegate <NSObject>
@optional
- (void)speechSynthesizerQueueDidStartTalking:(QHSpeechSynthesizerQueue *)queue;
- (void)speechSynthesizerQueueDidFinishTalking:(QHSpeechSynthesizerQueue *)queue;
- (void)speechSynthesizerQueueDidPauseTalking:(QHSpeechSynthesizerQueue *)queue;
- (void)speechSynthesizerQueueDidContinueTalking:(QHSpeechSynthesizerQueue *)queue;
- (void)speechSynthesizerQueueDidCancelTalking:(QHSpeechSynthesizerQueue *)queue;
- (void)speechSynthesizerQueueWillStartTalking:(QHSpeechSynthesizerQueue *)queue;
@end