我有一个程序从 TCP/IP 接收音频(单声道)比特流。我想知道 Mac OS X 中的语音(语音识别)API 是否能够为我进行语音到文本的转换。
(我不介意先将音频保存到 .wav 中,然后将其读取为反对即时进行转换)。
我已经在线阅读了官方文档,这有点令人困惑。我找不到任何关于这个话题的好例子。
另外,我应该用 Cocoa/Carbon/Java 还是 Objective-C 来做呢?
有人可以阐明一下吗?
谢谢。
我有一个程序从 TCP/IP 接收音频(单声道)比特流。我想知道 Mac OS X 中的语音(语音识别)API 是否能够为我进行语音到文本的转换。
(我不介意先将音频保存到 .wav 中,然后将其读取为反对即时进行转换)。
我已经在线阅读了官方文档,这有点令人困惑。我找不到任何关于这个话题的好例子。
另外,我应该用 Cocoa/Carbon/Java 还是 Objective-C 来做呢?
有人可以阐明一下吗?
谢谢。
安装 XCode 时,在 /Developer/Examples/Speech/Recognition 下复制了许多示例。
用于语音识别的 Cocoa 类是NSSpeechRecognizer。我没有使用过它,但据我所知,语音识别需要您构建一个语法来帮助引擎从多个选项中进行选择,而不是允许您传递自由格式的输入。这在上面提到的例子中都有解释。
这可能有点晚了,但我还是会插话的。
OS X 中的语音识别工具(在 Carbon 和 Cocoa 方面)用于语音命令识别,这意味着它们将识别已加载到语音系统语言模型中的单词(或短语、命令)。我用小字典做了一些东西,效果很好,但如果你想识别任意语音,事情可能会变得更复杂。
还有一点要记住的是,OS X 中的语音 API 提供的功能不是一对一的。Carbon 的东西提供了尚未实现的功能NSSpeechRecognizer
(文档对此有所提及)。
我不了解 Cocoa,但 Carbon 语音识别管理器确实允许您指定麦克风以外的输入,因此声音流可以正常工作。
这是一篇很好的 O'Reilly 文章,可以帮助您入门。
您可以使用 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!"];