专栏名称: Cocoa开发者社区
CocoaChina苹果开发中文社区官方微信,提供教程资源、app推广营销、招聘、外包及培训信息、各类沙龙交流活动以及更多开发者服务。
目录
相关文章推荐
51好读  ›  专栏  ›  Cocoa开发者社区

iOS 10中如何搭建一个语音转文字框架

Cocoa开发者社区  · 公众号  · ios  · 2016-10-25 08:28

正文

请到「今天看啥」查看全文



让我们在 viewDidLoad 方法里授权语音识别。用户必须允许app使用话筒和语音识别。首先,声明一个speechRecognizer变量:


private let speechRecognizer = SFSpeechRecognizer(locale: Locale.init(identifier: "en-US"))  //1


然后按如下更新 viewDidLoad 方法:


override func viewDidLoad() {

super.viewDidLoad()

microphoneButton.isEnabled = false  //2

speechRecognizer.delegate = self  //3

SFSpeechRecognizer.requestAuthorization { (authStatus) in  //4

var isButtonEnabled = false

switch authStatus {  //5

case .authorized:

isButtonEnabled = true

case .denied:

isButtonEnabled = false

print("User denied access to speech recognition")

case .restricted:

isButtonEnabled = false

print("Speech recognition restricted on this device")

case .notDetermined:

isButtonEnabled = false

print("Speech recognition not yet authorized")

}

OperationQueue.main.addOperation() {

self.microphoneButton.isEnabled = isButtonEnabled

}

}

}


  1. 首先,我们创建一个带有标识符en-US 的 SFSpeechRecognizer实例,这样语音识别API就能知道用户说的是哪一种语言。这个实例就是处理语音识别的对象。

  2. 我们默认让microphone按钮失效直到语音识别功能被激活。

  3. 接下来,把语音识别的代理设置为 self 也就是我们的ViewController.

  4. 之后,我们必须通过调用SFSpeechRecognizer.requestAuthorization方法来请求语音识别的授权。

  5. 最后,检查验证的状态。如果被授权了,让microphone按钮有效。如果没有,打印错误信息然后让microphone按钮失效。


现在如果你认为app跑起来之后你会看到一个授权弹出窗口,那你就错了。如果运行,app会崩溃。好吧,既然知道结果为什么还要问呢?(别打我),看看下面解决方法。


提供授权消息


苹果要求app里所有的授权都要一个自定义的信息。例如语音授权,我们必须请求2个授权:


  1. 麦克风使用权。

  2. 语音识别。


为了自定义信息,你必须在info.plist 配置文件里提供这些自定义消息。


让我们打开 info.plist配置文件的源代码。首先,右键点击 info.plist。然后选择Open As > Source Code。最后,拷贝下面的XML代码然后在 标记前插入这段代码。



现在你已经在info.plist文件里添加了两个键值:


  • NSMicrophoneUsageDescription -为获取麦克风语音输入授权的自定义消息。注意这个语音输入授权仅仅只会在用户点击microphone按钮时发生。







请到「今天看啥」查看全文


推荐文章
潮人小罗  ·  小罗电话恶搞LOL游戏玩家~
8 年前
硕士博士读书会  ·  耶稣降生的时代
8 年前