有没有办法检查用户是否在系统偏好设置中启用了语音识别(口头命令)? (Mac OS X)。如果用户启用了它,我想支持其他语音命令。不幸的是NSSpeechRecognizer
中没有任何方法来检查这个,我似乎也找不到任何碳函数来检查它。
其中一个问题是,每当我实例化NSSpeechRecognizer
时,圆形语音命令窗口(其上带有麦克风的窗口)似乎会间歇性地出现。此外,它经常会冻结我的应用程序大约半秒左右,同时创建对象(可能它正在启动语音识别服务)。
实质上,如果语音识别器尚未运行和使用,我不想启动它。但如果用户主动使用语音识别器,我想为它提供额外的支持。
提前致谢。
答案 0 :(得分:1)
我也不知道公共API;但圆形麦克风窗口由SpeakableItems.app
控制,至少在OS X 10.6上。您可以检查进程列表和/或正在运行的应用程序列表,看看它是否存在。
答案 1 :(得分:1)
受@ Yuji
的回答启发,看起来唯一的方法是检查语音识别服务器是否正在运行。这是代码片段,以防任何人也需要它。
+(BOOL) speakableItemsEnabled {
NSString* speechServerBundleName = @"com.apple.speech.recognitionserver";
NSArray* apps = [NSRunningApplication runningApplicationsWithBundleIdentifier:speechServerBundleName];
NSRunningApplication* speechServerApp = [apps lastObject];
return speechServerApp && !speechServerApp.terminated;
}
希望这不会破坏10.7“狮子”。