1.导入依赖库

SystemConfiguration.framework

AudioToolbox.framework

UIkit.framework

AVFoundation.framework

Foundation.framework

libz.tbd

Security.framework

QuartzCore.framework

CoreText.framework

GLKit.framework

OpenGLES.framework

CoreLocation.framework

CFNetwork.framework

CoreGraphics.framework

注意还要导入依赖库:CoreTelephony.framework

2.需要包含的SDK文件有:

从开放平台下载的包里面的

Headers文件夹、Third Part文件夹、还有..resources文件夹(tone和scheme)、还有.a静态库文件

3.将工程的bitcode设置为NO

4.build Setting里面设置other linker flags为-ObjC

示例Demo:

#import "ViewController.h"

#import "BDVoiceRecognitionClient.h"

@interface ViewController ()<MVoiceRecognitionClientDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

}

- (void)viewWillDisappear:(BOOL)animated

{

[super viewWillDisappear:animated];

//取消监听语音音量

[[BDVoiceRecognitionClient sharedInstance] cancelListenCurrentDBLevelMeter];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

- (IBAction)inputBtnClick:(id)sender {

BDVoiceRecognitionClient * client = [BDVoiceRecognitionClient sharedInstance];

[client setApiKey:@"Au2wN2SaDOpYZHgGqrIymMkU" withSecretKey:@"a0212d1fa0f28699aa5d1162a1bcbf1c"];

//设置识别垂类

//[client setPropertyList:@[[NSNumber numberWithInt:EVoiceRecognitionPropertyVideo]]];

//设置识别语言为普通话

[client setLanguage:EVoiceRecognitionPropertyMusic];

//禁用标点符号<默认不禁用>

[client disablePuncs:YES];

//设置是否对语音进行端点检测,即SDK会自动判断说话是否结束<默认开启>

[client setNeedVadFlag:YES];

//设置是否对上传的语音进行压缩<默认压缩>

[client setNeedCompressFlag:YES];

//设置在线识别的响应等待时间,如果超时,触发同步离线识别

[client setOnlineWaitTime:5];

//开启自然语言理解结果

[client setConfig:@"nlu" withFlag:YES];

//开始说话开始提示音

[client setPlayTone:EVoiceRecognitionPlayTonesRecStart isPlay:YES];

//开始说话结束提示音

[client setPlayTone:EVoiceRecognitionPlayTonesRecEnd isPlay:YES];

//打开语音音量功能

[client listenCurrentDBLevelMeter];

//获取当前语音音量级别

[client getCurrentDBLevelMeter];

int startStatus = [client startVoiceRecognition:self];

switch (startStatus) {

case EVoiceRecognitionStartWorking:

self.label.text = @"启动成功!";

break;

default:

self.label.text = [NSString stringWithFormat:@"启动失败 - 错误码:%d",startStatus];

break;

}

}

- (void)VoiceRecognitionClientWorkStatus:(int)aStatus obj:(id)aObj {

switch (aStatus) {

case EVoiceRecognitionClientWorkStatusFlushData: {

// 该状态值表示服务器返回了中间结果,如果想要将中间结果展示给用户(形成连续上屏的效果), // 可以利用与该状态同时返回的数据,每当接到新的该类消息应当清空显示区域的文字以免重复

NSMutableString *tmpString = [[NSMutableString alloc] initWithString:@""]; [tmpString appendFormat:@"%@",[aObj objectAtIndex:0]];

NSLog(@"result: %@", tmpString);

break; }

case EVoiceRecognitionClientWorkStatusFinish: {

// 该状态值表示语音识别服务器返回了最终结果,结果以数组的形式保存在 aObj 对象中 // 接受到该消息时应当清空显示区域的文字以免重复

if ([[BDVoiceRecognitionClient sharedInstance] getRecognitionProperty] != EVoiceRecognitionPropertyInput)

{

NSMutableArray *resultData = (NSMutableArray *)aObj;  //解析结果,并显示

NSMutableString *tmpString = [[NSMutableString alloc] initWithString:@""];

// 获取识别候选词列表

for (int i=0; i<[resultData count]; i++) {

[tmpString appendFormat:@"%@\r\n",[resultData objectAtIndex:i]]; }

self.label.text = tmpString;

} else {

NSMutableString *sentenceString = [[NSMutableString alloc] initWithString:@""]; for (NSArray *result in aObj)// 此时 aObj 是 array,result 也是 array

{

// 取每条候选结果的第 条,进 组合

// result 的元素是 dictionary,对应 个候选词和对应的可信度

NSDictionary *dic = [result objectAtIndex:0];

NSString *candidateWord = [[dic allKeys] objectAtIndex:0];

[sentenceString appendString:candidateWord];

}

NSLog(@"result: %@", sentenceString);

}

break; }

case EVoiceRecognitionClientWorkStatusReceiveData: {

// 此状态只在输入模式下发生,表示语音识别正确返回结果,每个子句会通知一次(全量, // 即第二次收到该消息时所携带的结果包含第一句的识别结果),应用程序可以

// 逐句显示。配合连续上屏的中间结果,可以进一步 升语音输入的体验

NSMutableString *sentenceString = [[NSMutableString alloc] initWithString:@""];

for (NSArray *result in aObj)// 此时 aObj 是 array,result 也是 array

{

// 取每条候选结果的第 条,进 组合

// result 的元素是 dictionary,对应 个候选词和对应的可信度

NSDictionary *dic = [result objectAtIndex:0];

NSString *candidateWord = [[dic allKeys] objectAtIndex:0];

[sentenceString appendString:candidateWord];

}

NSLog(@"result: %@", sentenceString); break;

}

case EVoiceRecognitionClientWorkStatusNewRecordData: {

// 有音频数据输出,音频数据格式为 PCM,在有 WiFi 连接的条件下为 16k16bit,非 WiFi

// 为 8k16bit break;

}

case EVoiceRecognitionClientWorkStatusEnd: {

// 用户说话完成,但服务器尚未返回结果

break; }

case EVoiceRecognitionClientWorkStatusCancel: {

// 用户主动取消

break; }

case EVoiceRecognitionClientWorkStatusError: {

// 错误状态

self.label.text = @"没有语音输入";

break; }

case EVoiceRecognitionClientWorkPlayStartTone:

case EVoiceRecognitionClientWorkPlayStartToneFinish:

case EVoiceRecognitionClientWorkStatusStartWorkIng:

case EVoiceRecognitionClientWorkStatusStart:

case EVoiceRecognitionClientWorkPlayEndToneFinish:

case EVoiceRecognitionClientWorkPlayEndTone:

break;

}

}

接入百度语音SDK的步骤的更多相关文章

  1. BaiduSpeechDemo【百度语音SDK集成】(基于v3.0.7.3)

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 本Demo将百度语音SDK(其中一部分功能)和自定义的UI对话框封装到一个module中,便于后续的SDK版本更新以及调用. 本De ...

  2. BaiduSpeechDemo【百度语音SDK集成】(基于v3.0.8.1)

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 上一篇集成的是V3.0.7.3版本的SDK<BaiduSpeechDemo[百度语音SDK集成](基于v3.0.7.3)> ...

  3. 关于几个主流语音SDK的接入问题

    这两周都在忙着游戏上线还有接入游戏语音,两周分别接了腾讯语音和百度语音!!! 关于腾讯语音的一些问题 由于发现腾讯语音的在录完音频后的数据是编过码的所以出现了一些问题: *不能解码(腾讯方不提供解码算 ...

  4. Android接入百度自动更新SDK

    一:前言 公司的app,上传到百度应用市场,然后说必须要接入百度的自动更新sdk才能上架,于是从百度官网上去下载jar包,下载的时候必须要带上数据统计,如果使用自动的jar包,还需要带上广告联盟,坑爹 ...

  5. iOS百度地图SDK集成详细步骤

    1.iOS百度地图下载地址 http://developer.baidu.com/map/index.php?title=iossdk/sdkiosdev-download 根据需要选择不同的版本  ...

  6. Android 通过调用系统,如接口 谷歌语音、百度语音、科大讯飞语音等语音识别方法对话框

    现在app在发展过程中会集成一些语音识别功能,不具有其自己的显影剂一般正在开发的语音识别引擎,所以在大多数情况下,它是选择一个成熟的语音识别引擎SDK集成到他们的app在. 平时,这种整合被分成两个, ...

  7. GJM:Unity导入百度地图SDK [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  8. 利用百度语音API进行语音识别。

    由于项目需要,这几天都在试图利用百度语音API进行语音识别.但是识别到的都是“啊,哦”什么的,我就哭了. 这里我只是分享一下这个过程,错误感觉出现在Post语音数据那一块,可能是转换问题吧. API请 ...

  9. cocos2d-x + Lua接入iOS原生SDK的实现方案[转]

    相信很多朋友在使用cocos2d-x+lua开发游戏时都遇到过接入iOS原生SDK的问题,比如常见的接应用内支付SDK,广告SDK或是一些社交平台SDK等等,我也没少接过这类SDK.这篇文章主要是对我 ...

随机推荐

  1. 【练习】oracel获取当前session的id方法

    1. :: SYS; SID ---------- 2. :: SYS@ORA11GR2>SELECT USERENV('SID') FROM DUAL; USERENV('SID') ---- ...

  2. oracle安装不容易啊

    oracle 配置方面,电脑端使用的是ORALE 10G 64位,PLSQL DEVELOPER使用32位,ORACLE CLIENT使用11.5版本.之前一直因为ORACLE 使用32位,导致在电脑 ...

  3. JS传参中文乱码

    在传参的时候给中文参数加上两个encodeURI即可,类似这样: encodeURI(encodeURI(balanceUnit)) 写法二 escape(encodeURI(tmplItem.hyz ...

  4. This kind of launch is configured to open the Debug perspective when it suspends.

    This kind of launch is configured to open the Debug perspective when it suspends. 因为设置了断点才会弹出这个,不需要调 ...

  5. 习课省市区的三级联动(cxselect的使用)

    1,api:http://www.jq22.com/jquery-info32382,demo:http://blog.csdn.net/luo201227/article/details/38844 ...

  6. 用ionic快速开发hybird App(已附源码,在下面+总结见解)

    1.ionic简介 ionic 是用于敏捷开发APP的解决方案.核心思路是:利用成熟的前端开发技术,来写UI和业务逻辑.也就是说,就是一个H5网站,这个区别于react-native,native.即 ...

  7. CXF发布webService服务以及客户端调用

    这篇随笔内容是CXF发布webService服务以及客户端调用的方法 CXF是什么? 开发工作之前需要下载CXF和安装 下载地址:http://cxf.apache.org 安装过程: <1&g ...

  8. RunTime的简单使用

    Runtime也就是运行时,是苹果官方提供的一套C语音库,那有什么作用呢?简单的来说,Runtime可以做很多的底层操作,比如说访问隐藏的一些成员变量,成员方法,当然包括了私有的成员变量,成员方法. ...

  9. Windows转到linux中,文件乱码,文件编码转换 & 解决sqlplus连接oracle乱码

    转载:http://www.cnblogs.com/wanyao/p/3399269.html 最近,学习又重新开始Linux学习,所以一直在Centos中,昨天一朋友把他在Windows下写的C程序 ...

  10. 关于Linux:chmod和chown知识

    将vendor下的root权限递归更改为user命令:sudo chown -R user:user fujitsu 指令名称 : chmod 使用权限 : 所有使用者 使用方式 : chmod [- ...