Mac OS X语音到文本API。如何?

时间:2009-05-07 23:39:09

标签: objective-c cocoa macos audio speech-recognition

我有一个程序从TCP / IP接收音频(单声道)比特流。我想知道Mac OS X中的语音(语音识别)API是否能够为我做一个语音到文本的转换。

(我不介意首先将音频保存到.wav中并将其视为反对动态进行转换)。

我已经在线阅读了官方文档,这有点令人困惑。我找不到关于这个话题的任何好例子。

另外,我应该在Cocoa / Carbon / Java或Objective-C中进行吗?

有人可以解释一下吗?

感谢。

4 个答案:

答案 0 :(得分:6)

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

用于语音识别的Cocoa类是NSSpeechRecognizer。 我没有用它,但据我所知,语音识别需要你构建一个语法来帮助引擎从众多选择中进行选择,而不是让你传递自由形式的输入。这些都在上面提到的例子中解释过。

答案 1 :(得分:6)

或许有点晚了,但无论如何我都会说话。

OS X中的语音识别工具(在Carbon和Cocoa方面)用于语音命令识别,这意味着它们将识别已加载到语音系统语言模型中的单词(或短语,命令) 。我已经用小字典做了一些东西并且效果很好,但如果你想识别任意语音,事情可能会变得更加毛躁。

要记住的其他事项是OS X中的语音API提供的功能不是一对一的。 Carbon的功能提供的功能还没有达到NSSpeechRecognizer(文档提到了这一点)。

我不知道Cocoa,但Carbon语音识别管理器允许您指定麦克风以外的输入,这样声音流就可以正常工作。

答案 2 :(得分:1)

这是一个让你入门的good O'Reilly article

答案 3 :(得分: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!"];