banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

iOS开发之类Siri的语言识别程序的开发与实践(Nuance技术)

相信 Iphone4s 之后 Siri 技术又火了一把,不过 Siri 的成功除了归于苹果公司 Steve Jobs 的领导之外,Siri 的语音识别技术提供商 Nuance 公司的才是功不可没的。 Nuance 是最大的专门从事语音识别软件、图像处理软件及输入法软件研发、销售的公司。除了已经红得发紫的 Siri,Nuance 还有一项破记录的产品,T9 输入法,相信在苹果 iphone 流行之前,用过 Nokia 神机等品牌手机的用户一定很熟悉这个。 我们这里实现的语言识别功能正是基于 Nuance 的 ASR 技术,Siri 只是 Nuance 技术的一种实现而已,Nuance 的语音识别技术远远不止如此。 除了英语,法语,德语等西欧语言,中文,广东话,日语等东亚语言也包含在其中。

在开始之前,首先需要到 Nuance 注册一个开发者账户,获取一个 ApplicationKey,并下载 SDK,下面是 SDK 的说明。 http://www.nuance.com/for-developers/dragon-mobile-sdk/index.htm

在这之后就可以运用和开发语言识别程序,SDK 主要包括 ios 和 Android 两个版本,ios 版本发行较早,目前比较稳定,并有很多 ios App 基于开发,目前分别提供免费和商业版本,如果要商业开发的话,建议购买他的商业解决方案。

以下是开发语言识别的基本步骤和代码片段 1,导入语音识别 framework SpeechKit.framework

2,设置 SpeechKitApplicationKey

// 请从 Nuance 的邮件中复制
const unsigned char SpeechKitApplicationKey[] =
{0x47, 0xbe, 0x50, 0x57, 0x05, 0xde, 0x0f, 0x0e,
0x70, 0x63, 0x10, 0x4b, 0xb2, 0xad, 0xfb, 0xab,
0x14, 0x96, 0x99, 0x0d, 0x8e, 0x50, 0x2c, 0x1a,
0xb2, 0x5b, 0xf6, 0x76, 0x7d, 0xd8, 0xd5, 0xc5,
0x97, 0x25, 0x1c, 0x9c, 0x03, 0x2c, 0xaa, 0x74,
0x8f, 0xba, 0xbf, 0x42, 0x67, 0xba, 0xed, 0x7b,
0x50, 0x87, 0x88, 0xde, 0xd7, 0xb4, 0xf8, 0x89,
0x10, 0xef, 0xff, 0x8d, 0xc7, 0xd5, 0x52, 0x51};

NSString *const SpeechKitID =@"XXXX";
NSString *const SpeechHost = @"sandbox.nmdp.nuancemobility.net";

3,实例化语音识别对象,并设置参数

// 检测类型,用于识别并停止录音,可以是短暂停顿,手动控制等方式,
detectionType = SKShortEndOfSpeechDetection;
// 识别类型,通常分为搜索和听写两种方式
recoType = SKSearchRecognizerType;
// 识别日语,可以是 en,de,fr,zh_CN 等
langType = @"ja_JP";

if (_voiceSearch) [_voiceSearch release];

_voiceSearch = [[SKRecognizer alloc] initWithType
detection
language
delegate];

4,实现委托方法

// 录音开始,这里是录音开始和录音录制过程中调用

  • (void)recognizerDidBeginRecording:(SKRecognizer *)recognizer

// 录音完成,语言输入完成被识别,录音完成

  • (void)recognizerDidFinishRecording:(SKRecognizer *)recognizer

// 识别解析完成,服务端请求完成,并获得结果

  • (void)recognizer:(SKRecognizer *)recognizer didFinishWithResults:(SKRecognition *)results

// 识别发生错误

  • (void)recognizer:(SKRecognizer *)recognizer didFinishWithError:(NSError *)error suggestion:(NSString *)suggestion
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。