Queue management system for AVSpeechSynthesizer
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
QHSpeechSynthesizerQueue.xcodeproj
QHSpeechSynthesizerQueue
QHSpeechSynthesizerQueueTests
.gitignore
.travis.yml
LICENSE
QHSpeechSynthesizerQueue.podspec
README.md

README.md

QHSpeechSynthesizerQueue

Build Status
Queue management system for AVSpeechSynthesizer

Installation

Cocoapods

Add this to your Podfile:

pod 'QHSpeechSynthesizerQueue'

Run a pod install and import the header where you need it:

#import <QHSpeechSynthesizerQueue.h>

Manually

Drop QHSpeechSynthesizerQueue.h and QHSpeechSynthesizerQueue.m in your project, then

#import "QHSpeechSynthesizerQueue.h"

##Usage

Initialization

QHSpeechSynthesizerQueue *synthesizerQueue = [[QHSpeechSynthesizerQueue alloc] init];

Adding messages to the queue

Add a message at the end of the queue
[synthesizerQueue readLast:@"This message will be added to the end of the queue" 
                  withLanguage:@"en_US"
                  andRate:@"0.2"];
Insert a message to be read immediatly after the current message being read
[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.

Interrupt the current message and read this one immediately
[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.

Playback actions

Stop

Stop the queue's playback and clear the queue immediately.

[synthesizerQueue stop];
Stop after current

Stop the queue's playback and clear the queue. If something is currently being read, it will stop afterwards.

[synthesizerQueue stopAfterCurrent];
Pause

Pause the queue's playback immediately.

[synthesizerQueue pause];
Pause after current

Pause the queue's playback. If something is currently being read, it will pause afterwards.

[synthesizerQueue pauseAfterCurrent];
Resume

Resume the queue's playback.

[synthesizerQueue resume];
Clear queue

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];

Properties

BOOL duckOthers

Set this to YES to duck all the device's audio sessions when a string is being read. Defaults to YES.

synthesizerQueue.duckOthers = YES;
NSTimeInterval preDelay

The delay before reading a message. Default is 0.0

synthesizerQueue.preDelay = 1.0;
NSTimeInterval postDelay

The delay after reading a message. Default is 0.0

synthesizerQueue.postDelay = 1.0;

Delegate

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