1.将SogouSpeech,Speex.a,include加入项目中
2.将include拖入TARGETS-Build Settings下的Header Search path中
3.引用C++写的三方类库导致在pch文件中的声明被.mm引用了,才引起NSObjCRuntime的错误)
解决方案:就是在引用文件的前后加上一个判断
[objc] view plain copy
1. #ifdef __OBJC__
2. 引用头文件
3. #endif
以后用NSLOG建议用
[objc] view plain copy
1. #ifdef DEBUG
2. # define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
3. #else
4. # define DLog(...)
5. #endif
这样就不会引起那个错误了
4.引入:
AudioToolBox.framework,
AVFoundation.framework,
libc++.dylib, libz.dylib(Xcode7.x时更改为liz.tbd)
- 主要方法说明
- 设置语音识别账号和密码
在使用语音识别功能前首先需要在调用识别函数之前设置您在搜狗开放平台申请的ID和Key(建议在程序的入口处调用),在设置完该项后,您便可通过控制方法(参见下一小节)来使用语音识别功能了。在未进行其余参数配置的情况下,系统将以默认的设置来进行识别。您可以在调用控制方法前根据自身的需求对语音识别功能进行其余参数的设置。
- 语音识别控制
在设置完基本参数后,便可以调用startListening方法开始语音识别了,每次智能同时进行一个语音识别,不能同时开启多个语音识别。
语音识别在默认参数设置情况下,会自动判断说话人说话的终止点并停止继续录音,同时向服务器请求本次识别结果。您也可以利用stopListening手动控制语音停止点。
调用cancel方法会取消本次的语音识别。
- 返回结果或错误提示
识别结果和错误提示以协议方式定义,通过委托来实现回调。您需要实现这两个方法来传递语音识别的结果。
举例说明:
- 连续语音识别
假如语音内容为“搜狗连续语音识别”:
返回结果回调方法(- (void)onResults:(NSArray*)results withConfidence:(NSArray*)confidences isLastPart:(BOOL)isLastPart;)将被调用多次,可能结果如下:
1). results=(搜);confidences=(“117.1654”);isLastPart=NO;
2). results=(搜狗);confidences=(“217.6039”);isLastPart=NO;
3). results=(搜狗连续);confidences=(“297.1698”);isLastPart=NO;
4). results=(搜狗连续语音);confidences=(“350.1224”);isLastPart=NO;
5). results=(搜狗连续语音识别);confidences=(“484.54”);isLastPart=YES;
连续语音识别逐字返回,后面的结果不断更新前面的结果。
- 非连续语音识别
假如语音内容也为“我忘做饭了,你带饭了吗?一起下去吃吧。” ,那么由识别结果构成的resultsArray数组如下
("我忘做饭了,你带饭了吗?一起下去吃吧!","我忘做饭啦,你带饭了吗?一起下去吃了!","我忘做饭啦,你带饭了吗?一起下去吃哈!")
回调方法(- (void)onResults:(NSArray*)results withConfidence:(NSArray*)confidences isLastPart:(BOOL)isLastPart;)将被调用一次,结果将包含所有识别内容,同时isLastPart=YES。