原文: http://www.raywenderlich.com/64623/make-narrated-book-using-avspeechsynthesizer-ios-7 随着 PageViewController 当你制作自己的有声书时, 你将学习到: 怎样使用 AVSpeechSynthesizer 和 AVSpeechUtterance 让 iOS 设备朗读文本 How to make this synthesized 怎样改动 AVSpeechUtterance 属性比如 pitch 和 rate,使合成的语音更自然 AVSpeechSynthesizer当然比不上真人语音。 能够将 ViewController 中定义的AVSpeechSynthesizer 对象想象成一个会说话的人。而 AVSpeechUtterance 则能够想象成一张小纸条。 你会听到AVSpeechSynthesizer 发出的天籁之音。 注意:假设你什么也没听到,请检查 Mac 或者 iOS 设备的音量设置(看你是在什么地方执行这个 app 的)。
添加引用 import AVFoundation 播放语音 //播放器 let player = AVSpeechSynthesizer(); player.delegate = self; let u player.speakUtterance(u); 在iPhone6以下rate设置为0.1否则会读的很快 iOS的坑啊 代理方法 //开始播放 func speechSynthesizer(synthesizer: AVSpeechSynthesizer didStartSpeechUtterance utterance: AVSpeechUtterance) { print("开始播放") } //播放中 func speechSynthesizer(synthesizer: AVSpeechSynthesizer utterance.speechString.characters.count); print("播放中,播放进度为:\(process)") } //播放完毕 func speechSynthesizer(synthesizer: AVSpeechSynthesizer
- 文本转语音 iOS提供了一个类AVSpeechSynthesizer来实现文本到语音的功能, 即读出文字 直接上代码: AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init]; NSArray *speechStrings = @[@"Hello AV Foundation.
iOS 12.0之前,后台播放音频未被限制,直接使用Notification Service Extension (iOS 10.0以后才支持) 功能使用系统提供的功能AVSpeechSynthesizer 在系统播放类AVSpeechSynthesizer的代理方法中,有播放完成的回掉speechSynthesizer:didFinishSpeechUtterance:,把呼出通知栏的代码self.contentHandler = AVSpeechUtteranceDefaultSpeechRate; [self.speechSynthesizer speakUtterance:utterance]; } - (AVSpeechSynthesizer voiceWithLanguage:@"zh-CN"]; } return _speechSynthesisVoice; } - (void)speechSynthesizer:(AVSpeechSynthesizer 仔细看控制台,会发现,报错如下 Ps: iOS 12.0之后,在Notification Service Extension调用系统播放AVSpeechSynthesizer时报的错误。
现在你应该对AVFoundation有了比较深入的了解,并且对数字媒体的细节也有了一定认识,下面介绍一下 AVFoundation的文本转语音功能 AVSpeechSynthesizer 开发者可以使用 AVFoundation中的AVSpeechSynthesizer类向iOS应用程序中添加类似功能,这个类用来播放一个或多个语音内容,这些语音内容都是名为AVSpeechUtterance的类的实例。 具体的实现代码如下所示: let synthesizer = AVSpeechSynthesizer() synthesizer.speak(AVSpeechUtterance(string: "Hello 常用的delegate //开始朗读 func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer, didStart utterance: AVSpeechUtterance) { } //结束朗读 func speechSynthesizer(_ synthesizer: AVSpeechSynthesizer,
下面是这本书的扫描版:链接: https://pan.baidu.com/s/1miy0K7A 密码: ateq (仅供学习使用) AVFoundation 相关知识 涉及类: AVSpeechSynthesizer init]; }); return speechController; } -(void)bulidSettings{ _speechSynthesizer = [AVSpeechSynthesizer long)self.page]]; [_speechController begainSpeakWitnIndex:self.page]; } -(void)speechSynthesizer:(AVSpeechSynthesizer
设置音量(0.0~1.0)默认为1.0 // utterance.pitchMultiplier = 1.0; //设置语调 (0.5-2.0) // AVSpeechSynthesizer *synth = [[AVSpeechSynthesizer alloc] init]; // [synth speakUtterance:utterance]; 在后台实现语音播报
,拍摄、保存视频,本章将以音频AVFAudio为重点,主要知识点有: AVAudioSession 音频会话处理类 AVAudioRecorder 音频录制类 AVAudioPlayer 音频播放类 AVSpeechSynthesizer AVSpeechSynthesizer AVSpeechSynthesizer属于AVFAudio的一份子,整体上比较简单。 它可以很方便的在iOS应用中实现”将文本转换成语音”的功能,设计到AVSpeechSynthesisVoice、AVSpeechUtterance以及AVSpeechSynthesizer等重要概念,这块暂时涉及的比较少 ,不做过多讲解,提供一段代码供参考: let synthesizer = AVSpeechSynthesizer() let voice = AVSpeechSynthesisVoice
使用到的类是 :AVSpeechSynthesizer 里面包括 开始、暂停、继续朗读等功能。 AVSpeechSynthesisVoice *voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"]; // 创建语音合成器 AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init]; // 实例化发声的对象 AVSpeechUtterance *utterance = [AVSpeechUtterance
AVFoundation框架: import ApiAI import AVFoundation 我们需要导入AVFoundation框架,因为我们需要bot与用户交谈,该框架附带了能够从文本转为合成语音的“AVSpeechSynthesizer ”类别,为了让装置与我们的用户交谈,在ViewController类中插入以下几行代码: let speechSynthesizer = AVSpeechSynthesizer() func 首先,我们定义一个常数speechSynthesizer,并初始化一个 AVSpeechSynthesizer的实例。 AVSpeechSynthesizer是一个提供自文本转换为语音的object,并允许存取控制正在进行的访问,然后创建一个新的函数speechAndText(text: String),根据用户输入的内容执行更改
AVSpeechSynthesizer ---- 在书中最开始的时候简单的介绍了一下AVSpeechSynthesizer,它可以很方便的在iOS应用中添加“文本到语音”的功能,我们在Demo 整理的一些基本的用法以及一些属性的意义都在代码的注释中: // 简单的语音测试 -(void)speakHintMessage{ // 这样子可以简单的播放一段语音 AVSpeechSynthesizer * synthesizer = [[AVSpeechSynthesizer alloc]init]; // Utterance 表达方式 AVSpeechSynthesisVoice
UILayoutFittingCompressedSize).height + 1; return textHeight + minHeight - 10; } TTS let player = AVSpeechSynthesizer
系列第一篇地址:AVFoundation 框架初探究(一) 在第一篇的文章中,我们总结了主要有下面几个点的知识: 1、对AVFoundation框架整体的一个认识 2、AVSpeechSynthesizer