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