最近在学习《AVFoundation开发秘籍》这本书,以前没有怎么接触过,学习之后瞬间感觉AVFoundation这个框架好强大,值得深入的学习。写点笔记以加强记忆和备忘。
AVFoundation入门
文本转语音
AVFoundation内置了文本到语音的转换功能,主要类是AVSpeechSynthesizer和AVSpeechUtterance,粗略的实现代码如下所示:
主要属性说明如下:
1. voice:指定在朗读时使用的声音
2. rate:指定在朗读时的语速,介于AVSpeechUtteranceMinimumSpeechRate 和 AVSpeechUtteranceMaximumSpeechRate之间
3. pitchMutiplier:指定朗读时的音调,一般介于0.5(低音调)和2.0(高音调)之间。
4. postUtteranceDelay:指定语音合成器在播放下一句之间的间隔,类似的可以设置preUtteranceDelay
5. volume:指定在朗读时的音量,介于0.0和1.0之间
播放和录制音频
音频会话分类
AVFoundation定义了7种分类来描述应用程序所使用的音频行为,如下表所示:
分类 | 作用 | 是否允许混音 | 音频输入 | 音频输出 |
Ambient | 游戏、效率应用程序 | ✔︎ | ✔︎ | |
Solo Ambient(默认) | 游戏、效率应用程序 | ✔︎ | ||
Playback | 音频和视频播放 | 可选 | ✔︎ | |
Record | 录音、音频捕捉 | ✔︎ | ||
Play and Record | VoIP、语音聊天 | 可选 | ✔︎ | ✔︎ |
Audio Processing | 离线会话和处理 | |||
Multi-Route | 使用外部硬件的高级A/V应用程序 | ✔︎ | ✔︎ |
配置音频会话
AVAudioSession提供了与应用程序音频会话交互的接口,所以开发者需要取得指向该单例的指针,通过设置合适的分类,开发者可为音频的播放指定需要的音频会话