-3

我想将麦克风图标添加到我的应用程序中并开始听写。有没有办法在 Swift 中以编程方式开始听写?除了解析编辑菜单并获得正确的菜单项?

我做了这个解决方法并且它有效但是......:

@IBAction func startDictation(sender: AnyObject) {
    if wordInputField.acceptsFirstResponder {
        self.makeFirstResponder(wordInputField)
    }

    if let menuItem = dictationMenuItem("startDictation:") {
        NSTimer.scheduledTimerWithTimeInterval(0, target: menuItem.target!, selector: menuItem.action, userInfo: nil, repeats: false)
    }
}

func dictationMenuItem(selectorName : String) -> NSMenuItem? {
    var edit = NSApplication.sharedApplication().mainMenu?.itemWithTitle("Edit")
    if let count = edit?.submenu?.numberOfItems {
        let lastItem = edit?.submenu?.itemAtIndex(count - 2)
        if lastItem?.action == NSSelectorFromString(selectorName) {
            return edit?.submenu?.itemAtIndex(count - 2)
        }
    }
    return nil
}
4

1 回答 1

2

更新

我认为您需要启动 SpeechRecognitionServer ...

osascript -e 'tell application "SpeechRecognitionServer"
   set theResponse to listen for {"yes", "no"} with prompt "Hello. Do you like me?"
   if theResponse is "yes" then
       say "I like you, too."
   else
       say "Am I bovvered?"
   end if
end tell'

原始答案

你可以从 Applescript 开始听写,也可以从 Swift 开始 Applescript,所以有一种迂回的方式可以让你继续前进,直到比我聪明的人找到“正确”的方式:-)

#!/usr/bin/env xcrun swift

import Foundation

let task = NSTask()
task.launchPath = "/usr/bin/osascript"
task.arguments = ["-e","tell app \"System Events\" to key code {63,63}"]

task.launch()

相当于fn在键盘上按了两次键——keycode 63。

于 2015-04-16T08:09:20.743 回答