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