译者:王悦
会上,苹果介绍了一个很好的语音识别API,那就是。事实上,这个 Kit 就是 Siri 用于语音识别的框架。今天有一些语音识别框架可用,但它们要么太贵要么不好。在今天的教程中,我将向您展示如何创建一个类似 Siri 的应用程序,该应用程序使用 Kit 进行语音转文本。
设计应用程序用户界面
先决条件:您需要 Xcode 8 beta 和运行 iOS 10 beta 的 iOS 设备。
首先创建一个名为 . 接下来,将 a、a 和 a 添加到 Main。你的应该是这样的:
接下来为 .swift 文件定义变量。在这个demo中,我设置的名字是“”,名字是“”。然后创建一个空按钮执行方法,该方法在单击按钮时触发。
@(:){
}
如果您不想从创建最原始的项目开始,您可以在此处下载原始项目并继续下面的指导说明。
采用
为了使用它,您必须先导入它,然后遵循协议。因此,让我们导入框架并将其协议添加到文件中。您的 .swift 文件现在应该如下所示:
:,{
@iew:!
@:!
加载(){
极好的。()
}
@(:){
}
}
用户授权
在使用它进行语音识别之前,你必须先获得用户的许可,因为不仅本地 ios 设备会识别它,苹果的服务器也会识别它。所有的语音数据都会传到苹果的后台进行处理。因此,必须获得用户授权。
让我们在方法中授权语音识别。用户必须允许应用使用麦克风和语音识别。首先语音识别转换文字软件mac,声明一个变量:
=(:.init(:'en-US'))//1
然后更新方法如下:
加载(){
极好的。()
.=假//2
.=自我//3
.{()in//4
=假
{//5
案子。:
=真
案子。:
=假
打印('')
案子。:
=假
打印('')
案子。:
=假
打印('')
}
。主要的。(){
自我..=
}
}
}
首先,我们创建一个标识符为 en-US 的实例,以便语音识别 API 可以知道用户说哪种语言。这个实例是处理语音识别的对象。
默认情况下,我们禁用该按钮,直到激活语音识别。
接下来,将语音识别代理设置为 self ,这是我们的 .
之后,我们必须通过调用 . 方法。
最后,检查验证的状态。如果授权,使按钮处于活动状态。如果没有,打印一条错误消息并禁用该按钮。
现在,如果您认为在应用程序启动并运行后会看到授权弹出窗口,那您就错了。如果运行,应用程序将崩溃。好吧,既然你知道了结果,为什么还要问呢?(不要打我),请参阅下面的解决方案。
提供授权消息
Apple 要求应用程序中的所有授权都具有自定义消息。例如语音授权语音识别转换文字软件mac,我们必须请求2个授权:
麦克风使用权。
语音识别。
对于自定义消息,您必须在 info.plist 配置文件中提供这些自定义消息。
让我们打开 info.plist 配置文件的源代码。首先,右键单击 info.plist。然后选择打开方式 > 代码。最后,复制以下 XML 代码,然后在
在标记前插入此代码。
现在您已向 info.plist 文件添加了两个键:
您可以自己更改这些消息的内容。现在点击运行按钮,您应该能够成功编译和运行应用程序而不会出现任何错误。
注意:如果后面工程运行完没有看到语音输入授权框,那是因为你是在模拟器上运行程序。iOS 模拟器无权访问您的 mac 计算机的麦克风。
处理语音识别
现在我们已经实现了用户授权,我们现在去实现语音识别功能。首先在里面定义以下对象:
:?
n任务:问?
e=()
该对象处理语音识别请求。它为语音识别提供语音输入。
任务对象告诉您语音识别对象的结果。拥有这个对象很方便,因为您可以使用它来删除或中断任务。
是您的语音引擎。它负责提供您的语音输入。
接下来,创建一个名为 () 的新方法。
(){
!=无{
?.()
=无
}
=.()
做{
.()
.()
.(真的,有:.)
}抓住{
打印(''。')
}
=()
=.{
('tnode')
}
=se{
('')
}
.=真
=.(with:,:{(,error)in
=假
!=无{
自我..文本=?..
=(?。)!
}
!=无||{
自我..停止()
.(onBus:0)
自我。=无
自我。=无
自我..=真
}
})
=.(:0)
.(onBus:0,:1024,:){(,when)in
自己。?。()
}
.()
做{
。开始()
}抓住{
打印(''或。')
}
.text=',我'!'
}
单击“开始”按钮时将调用此方法。它的主要功能是打开语音识别并收听您的麦克风。我们逐行分析上面的代码:
触发语音识别
我们需要确保在创建语音识别任务时语音识别是可用的,所以我们必须给它添加一个委托方法。如果语音输入不可用或其状态已更改,则 . 将设置属性。对于这种情况,我们实现了协议的 e 方法。实施见下文:
(:,:布尔){
{
.=真
}别的{
.=假
}
}
当可用性状态发生变化时,将调用此方法。如果语音识别可用,录制按钮将设置为启用。
最后一件事是我们必须更新响应方法 (:):
@(:){
.{
。停止()
?.()
.=假
。('',为了:。)
}别的{
()
。('',为了:。)
}
}
在这种方法中,我们必须检查它是否有效。如果是这样,应用程序应该停止,中止按钮的音频输入,使按钮不可用,并将按钮的标题设置为“开始”
如果它正在工作,应用程序应该调用 () 并将按钮的标题设置为“停止”。
很好!现在您已准备好测试应用程序。将应用程序部署到 iOS10 设备,然后单击“开始”按钮。去说点什么吧!
注意:
Apple 对每台设备的识别能力都有限制。确切的限制尚不清楚,但您可以联系 Apple 以获取更多信息。
苹果还对每个应用程序的识别能力有限制。
如果您经常遇到限制,请务必联系 Apple,他们应该能够解决问题。
语音识别非常耗电并且使用大量数据。
语音识别一次只持续大约一分钟。
总结
在本教程中,您学习了如何利用 Apple 向开发人员开放的令人惊叹的新语言 API 来进行语音识别和文本转换。使用与 Siri 相同的语音识别框架。这是一个相对较小的 API。但是,它非常强大,允许开发人员创建非凡的应用程序,例如将语音文件转换为文本。
我建议您观看 WWDC 2016 509 以获取更多有用信息。希望您喜欢这篇文章,并在探索这个新 API 时玩得开心。
作为参考,您可以在此处查看完整的项目
发表评论