在
2016
年的
WWDC
上,
Apple
介绍了一个十分有用的语音识别
API
,那就是
Speech
框架。事实上,
Siri
的语音识别正是由
Speech Kit
提供支持。就目前来说,可用的语音识别框架并非没有,但是它们要么太贵,要么不够好。在本
iOS教程中,我将会向你演示如何使用
Speech Kit
来创建一个像
Siri
一样的应用来进行语音到文本的转换。
应用界面设计
事前准备: Xcode 8 beta
版和一台运行
iOS 10 beta
版的设备
.
首先,让我们来创建一个
iOS Single View Application
工程,并将其命名为
SpeechToTextDemo
。然后在Main.storyboard
上添加
UILabel
、
UITextView
和
UIButton
各一个。
此时
storyboard
应该看起来像这样:
下一步,在
ViewController.swift
文件中为
UITextView
和
UIButton
定义
outlet
变量,将
UITextView
命名为
“textView”
,
UIButton
命名为
“microphoneButton”
之后,再创建一个空
action
方法来监听麦克风按钮
(microphoneButton)
的点击事件:
@IBAction func microphoneTapped(_ sender: AnyObject) {
}
使用
Speech
框架
要使用
Speech
框架,第一件要做的事自然是引入这个框架,并遵循
SFSpeechRecognizerDelegate
协议。所以,我们先引入该框架,然后将它的协议添加到
ViewController.swift
类中。此时
ViewController.swift
应该是这样的:
import UIKitimport Speech
class ViewController: UIViewController, SFSpeechRecognizerDelega
te {
}
用户权限
在使用
Speech
框架进行语音识别之前,你必须先请求用户许可,原因是识别不仅发生在
iOS
设备本地,还需要依赖
Apple
的服务器。具体来说,所有音频数据都会被传输到苹果后台进行处理。因此需要获取用户的权限。
我们将在
ViewDidLoad
方法中处理授权。其中包括用户必须允许应用使用的音频输入和语音识别权限。首先,声明一个名为
speechRecognizer
的变量:
private let speechRecognizer = SFSpeechRecognizer(locale: Locale.init(identifier: "en-US"))
//1
然后将
ViewDidLoad
方法修改为下面这样:
override func viewDidLoad() {