如何以编程方式开始听写?

时间:2015-04-15 21:24:27

标签: macos swift dictation

我想将麦克风图标添加到我的应用中并开始使用它进行口述。有没有办法在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
}

1 个答案:

答案 0 :(得分: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,所以有一种迂回的方式来到那里可能会让你继续前进,直到有人比我聪明的人&#34;本身&#34 ; 方式: - )

#!/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键 - 键码63。