我有一个程序从TCP / IP接收音频(单声道)比特流。我想知道Mac OS X中的语音(语音识别)API是否能够为我做一个语音到文本的转换。
(我不介意首先将音频保存到.wav中并将其视为反对动态进行转换)。
我已经在线阅读了官方文档,这有点令人困惑。我找不到关于这个话题的任何好例子。
另外,我应该在Cocoa / Carbon / Java或Objective-C中进行吗?
有人可以解释一下吗?
感谢。
答案 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!"];