使用语音框架的自定义语音交互器
步骤2:设计UI
现在,在我们的默认视图控制器中添加一些UI元素。
TextView:显示语音输入的文本输出,并接受文本输入进行语音合成。
“听我的家伙”按钮 :开始收听。
“可以说”按钮 :将您输入的文本合成为语音消息。
步骤3:申请权限
为了安全起见,要访问任何硬件,该应用必须获得用户的许可。
只需转到Info.plist文件>>添加新行>>搜索“隐私-语音识别用法说明” >>提供一些获得用户许可的有效理由。 只是忽略我的理由😉
重复上述步骤,这一次是“隐私-麦克风使用说明”。
步骤4:添加语音框架
下一步,也许是最重要的步骤是在我们的项目中添加Speech Framework。
为此,只需单击项目文件>>向下滚动到“链接的框架和库” >>单击微小的“ +”按钮>>搜索“语音” >>单击“添加”按钮。
现在我们已经完成了配置和UI工作。 让我们开始编码。
步骤5:定义对象
为了使我们的应用能够进行语音输入,我们必须初始化以下四个属性。
让我们看看它们的作用是什么。
- ognitionRequest: 音频缓冲区将传递给RecognitionTask对象。
- ognitionTask :执行语音识别并检索结果的任务。
- audioEngine : 连接的AVAudioNode组(稍后再讨论)。
步骤6:添加方法StartListening()
现在,创建一个名称为“ startListening”的方法。
在方法startListening()中添加以下行
在第一行中,我们正在创建SFSpeechRecognizer类的实例。
它基本上告诉RecognitionTask 识别本地/语言的语音输入。
在下一行中,我们正在初始化我们的RecognitionRequest。
第三行,我们正在检查是否成功初始化了ognitionRequest ,如果没有成功则返回致命错误。
步骤7:添加节点
让我们继续前进,并在我们的startListening()方法中添加更多行。
audioEngine!.inputNode返回引擎的单例输入节点。
现在什么是“ inputNode ”?
简单来说,它是用于执行音频信号生成,处理或输入/输出任务的缓冲区。
步骤8:启动音频引擎
让我们添加更多代码。
您在上面的代码中所做的就是准备您的audioEngine实例。
然后启动它以接受来自RecognitionTask的语音输入。 如果失败,则打印错误消息。
步骤9:开始任务识别
RecognitionRequestabove的shouldReportPartialResults属性用于告知每种话语的报告结果。
在第二行中,我们将使用RecognitionRequest和完成处理程序初始化识别任务。
完成处理程序将返回结果和错误。
结果将包含语音输入,而错误将包含错误(如果发生)。
现在,我们完成了startListening()方法,在“ Listen To Me Dude”按钮上单击它。
步骤10:添加方法StartSpeaking()
现在,让我们继续进行项目“语音合成器”的第二部分。
此方法将使用文本视图文本作为输入并产生其语音输出。
这种方法很小,因此我们将一口气讨论它。
在第一行中,我们使用字符串消息创建AVSpeechUtterance类的实例( 话语 )。 它将作为对AVSpeechSynthesizer类实例的请求而工作。
在第二行中,我们定义语音输出语言。 (本文将相应地进行综合)。
在第三行中,我们设置发声率。 速率越高,语音输出越慢。
在第四行中,我们将创建AVSpeechSynthesizer类的实例,该类将产生语音输出。
在最后一行中,我们通过将话语作为参数来调用对象合成的语音方法。
我们都完成了..恭喜..
编码愉快…。
- 带animation的popToRootViewController然后切换选项卡
- 自定义标记性能iOS,崩溃结果“((null)”为false:达到纹理图集的最大数量,不能分配更多。“
- iOS 6多行标签行距
- iOSnetworking应用程序:防止屏幕变暗/locking
- 苹果validation电子邮件请求沙盒testing仪用户ID
- 如果不使用CoreAnimation,如何避免“CoreAnimation警告已删除的线程与未提交的CATransaction”
- 使用Xcode 9更改组织以在iTunes Connect上上传二进制文件
- cachingWKWebView
- 使用约束来保持两个表视图相同的高度和相同的距离