iOS语音合成,语音阅读《AVFoundation》->AVSpeechSynthesizer使用方法介绍
一:写在前面
相关源代码已经上传到网上,里面该有的注释也都有了,感兴趣的同学可以直接上Github下载: AVFoundation相关代码下载地址:点击我就可以了。
二:正文
我们有时候在读书软件上可以发现语音朗读功能(读起来好像没什么感情)。其实这个利用iOS系统api就可以实现。下面就通过一个语音朗读文字的demo来讲解该功能的实现步骤。
2.1:AVSpeechSynthesizer介绍
实现该功能核心的部件就是AVSpeechSynthesizer。
NS_CLASS_AVAILABLE_IOS(7_0)
@interface AVSpeechSynthesizer : NSObject
大家看到了么,iOS7.0之后才出现了AVSpeechSynthesizer。AVSpeechSynthesizer具有以下属性:
//代理方法
@property(nonatomic, weak, nullable) id<AVSpeechSynthesizerDelegate> delegate;
//是否正在朗读(只读)
@property(nonatomic, readonly, getter=isSpeaking) BOOL speaking;
//是否已经暂停(只读)
@property(nonatomic, readonly, getter=isPaused) BOOL paused;
支持的方法如下:
//朗读方法,需要一个AVSpeechUtterance类型参数
- (void)speakUtterance:(AVSpeechUtterance *)utterance;
//停止朗读,会清理掉当前正在执行朗读操作的队列
- (BOOL)stopSpeakingAtBoundary:(AVSpeechBoundary)boundary;
//暂停朗读,这里面需要传递一个AVSpeechBoundary类型参数,两种选择,是立即停止还是读完这个单词再停止。
- (BOOL)pauseSpeakingAtBoundary:(AVSpeechBoundary)boundary;
//继续朗读
- (BOOL)continueSpeaking;
上面提到代理方法,还记得不?下面就是相关的代理方法:
//开始朗读的代理方法
- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didStartSpeechUtterance:(AVSpeechUtterance *)utterance;
//结束朗读的代理方法
- (void)speechSynthesizer:(AVSpeechSynthesizer *)synthesizer didFinishSpeechUtterance:(AVSpeechUtterance *)ut