Mac OS X语音识别API。怎么使用?

9
我有一个程序,它从TCP/IP接收单声道比特流的音频。我想知道Mac OS X中的语音(语音识别)API是否能够为我执行文本转换。
(我不介意先将音频保存为.wav文件,然后再读取它,而不是即时进行转换)。
我已经阅读了官方在线文档,但有点令人困惑。我也找不到关于这个主题的好示例。
另外,我应该在Cocoa/Carbon/Java或Objective-C中完成吗?
能否有人请帮我解释一下?
谢谢。
4个回答

6
这可能有点晚了,但我还是要发表一下意见。在OS X中的语音识别设施(无论是Carbon还是Cocoa)都是用于语音命令识别的,这意味着它们会识别已经加载到语音系统语言模型中的单词(或短语、命令)。我尝试过使用小型词典进行一些操作,效果还不错,但如果你想识别任意语音,情况可能会更加复杂。还要记住的另一件事是,OS X中语音API提供的功能并不是一对一的。Carbon提供的功能还没有被NSSpeechRecognizer实现(文档中有提到)。我不知道Cocoa是怎么样的,但Carbon语音识别管理器允许您指定除麦克风以外的输入,因此声音流也可以正常工作。

6

在安装XCode时,会将许多示例复制到/Developer/Examples/Speech/Recognition下。

与语音识别相关的Cocoa类是NSSpeechRecognizer。我没有使用过它,但据我所知,语音识别需要构建语法以帮助引擎从一系列选择中进行选择,而不是允许您传递自由形式的输入。所有这些都在上述示例中有所解释。


1

您可以使用ApplicationServices的SpeechSynthesis(10.0+)

CFStringRef cfstr = CFStringCreateWithCString(NULL,"Hello World!", kCFStringEncodingMacRoman);
Str255 pstr;    
CFStringGetPascalString(cfstr, pstr, 255, kCFStringEncodingMacRoman);   
SpeakString(pstr);

或者使用AppKit的NSSpeechSynthesizer(10.3+)

NSSpeechSynthesizer *synth = [[NSSpeechSynthesizer alloc] initWithVoice:@"com.apple.speech.synthesis.voice.Alex"];
[synth startSpeakingString:@"Hello world!"];

这是用于合成语音(文本转语音),而不是识别语音(语音转文本)。 - Peter Hosey
看起来我是想回答另一个问题的,但现在我找不到那个问题了。 - valexa

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接