9

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

(我不介意先将音频保存到 .wav 中,然后将其读取为反对即时进行转换)。

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

另外,我应该用 Cocoa/Carbon/Java 还是 Objective-C 来做呢?

有人可以阐明一下吗?

谢谢。

4

4 回答 4

6

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

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

于 2009-05-08T19:03:28.237 回答
6

这可能有点晚了,但我还是会插话的。

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

还有一点要记住的是,OS X 中的语音 API 提供的功能不是一对一的。Carbon 的东西提供了尚未实现的功能NSSpeechRecognizer(文档对此有所提及)。

我不了解 Cocoa,但 Carbon 语音识别管理器确实允许您指定麦克风以外的输入,因此声音流可以正常工作。

于 2009-11-03T05:07:21.920 回答
1

这是一篇很好的 O'Reilly 文章,可以帮助您入门。

于 2009-05-07T23:47:30.957 回答
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!"];
于 2010-07-07T12:58:51.453 回答