iPhone:iOS SDK中是否可用语音识别?

26

有人知道Siri中使用的"语音转文字"和"文字转语音"API是否可在IOS 5或IOS 6 SDK中访问吗?

我做了研究,但在文档中未找到相关信息。如果SDK中未包括此功能,那么市场上是否有任何" Siri "质量的库可用呢?


1
我知道在Mac上有NSSpeechSynthesizer和NSSpeechRecognizer可用,但在iOS上没有。http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Speech/Speech.html#//apple_ref/doc/uid/10000178i - jbat100
9个回答

14

Siri目前还没有提供API形式的接口,但是可以使用内置的语音转文字选项来对任何UITextField或UITextArea进行语音输入。


谢谢。你能再详细解释一下吗?我该如何使用它? - Spring
4
您无需“使用”它-对于启用此选项的用户,它会自动显示。您只需将文本输入字段设置为可键入状态,用户必须轻触键盘的语音识别按钮即可。除非您告诉用户要口述命令并让文本字段解析它,否则不能直接控制语音。但是,这种方法可能会影响应用商店的提交资格,因为它会与Siri过于相似并且使用户感到困惑。 - Tim

12

请查看Openears:http://www.politepix.com/openears 我已经进行了实验,它的效果很好。它可以很好地识别预设的词汇表。在识别单词之前会有约半秒的轻微暂停,在声音较多的环境(比如拥挤的餐厅)中会出现混淆,但是在相对安静的环境中我发现它的效果很好。


Openears也能处理语音转文本吗?例如,您按下一个按钮,讲话后它会将所说的话转换为文本框中的字符串吗? - jcrowson
3
我有段时间没用它了,我建立了一个快速原型来识别一组定义好的单词。它工作得非常出色。我相信它也支持语音转文字,但我没有直接使用过。当初看它的时候,我联系了项目所有者,他非常积极响应并提供了帮助。抱歉回复晚了,我有一段时间没回Stack了。 - neils4fun
OpenEars在配置文件中包含了全面的单词集合时,可以很好地工作。但是如果在配置文件中找不到单词,则无法正常工作。因此问题是 - 如何创建或导入一个包含足够单词的全面性配置文件以产生令人满意的结果?是否有可用于配置的所有会话单词列表? - CoolDocMan
@CoolDocMan 他们建议你将“词汇表”限制在大约300个单词左右。这似乎不是一个硬性限制,但随着词汇量的增加(更强大的设备不太受此影响),性能会开始下降。OpenEars在设备上进行所有处理...Siri和大多数其他语音SDK都在服务器端进行处理。如果你需要识别非结构化语言,那么它可能不是你的工具。 - Reid
OpenEars看起来非常棒,因为它内部使用了自由开源的Carnegie Mellon University Sphinx语言识别项目,称为CMU pocketSphinx。该pocketSphinx文件可以被适应(尽管我猜需要一些努力)以适应特定口音,如印度口音等。 - Bharat Mallapur

5

3

Siri目前仅在iPhone 4S上作为测试版提供,不确定计划是否将其扩展到所有支持iOS 5的设备。语音识别的开源库很难找到。您可以了解一下Nuance (Dragon) 开发者门户这里


2
给那个踩了我回答的人,我知道现在不是这样了,但在2011年十月时是这样的。因此提供额外信息或许会更好些。 - jbat100

3

您可能还想了解iSpeech的文本转语音语音识别API。它们已经可以让您轻松地将其包含在应用程序中,并且实际上比Siri更好一些。Siri的主要优势在于自然语言处理(NLP),而不是底层的语音技术。


3

iOS 10之后,你可以使用

Speech.framework

这非常简单易用。只需在你的类中导入Speech即可。

import Speech

let speechRecogizer = SFSpeechRecognizer(locale: Locale.init(identifier: "en-US"))!  //locale whatever you want to use
let recognitionRequest = SFSpeechAudioBufferRecognitionRequest()
let recognitionTask:SFSpeechRecognitionTask = speechRecogizer.recognitionTask(with: recognitionRequest, resultHandler: { (result, error) in 
    print(result?.bestTranscription.formattedString) //here you can get your text 
})

您也可以查看https://github.com/PKrupa94/SpeechManager了解相关信息。

2
我们开发了一个用于识别单个单词(或短语)的软件开发工具包 SDK,名为 CeedVocal SDK。我们在自己的应用 Vocalia 中使用它。虽然它不是免费的(但有免费试用版),更多信息请查看: http://www.creaceed.com/ceedvocal

2

对于语音识别,您可以使用OpenEars (http://www.politepix.com/openears/),它可以离线使用并提供良好的准确性。OpenEars在iPhone或iPad应用程序中免费使用。是的,OpenEars处理语音转文本功能。


2

Siri目前还未对开发者开放使用。


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