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. Oracle创建表空间、创建用户以及授权、查看权限

    常用的,留着备用 1.创建临时表空间 CREATE TEMPORARY TABLESPACE test_tempTEMPFILE 'C:\oracle\product\10.1.0\oradata\o ...

  2. extends 和 implements

    extends是继承类与类的 implements是实现接口的 类与类之间只支持单继承 接口与接口之间支持多继承

  3. HTML 浏览器显示控制

    //强制浏览器以最高版本运行页面 <meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1" ...

  4. mongoDB学习笔记:了解与安装

    初次使用mongoDB是在2013年,项目组为了新产品的研发,使用了mongoDB,作为项目组的一名测试员,也就跟着学起来了. 1.了解mongoDB Mongo DB ,是目前在IT行业非常流行的一 ...

  5. appium + maven +jenkins 基本入门之二 新建maven 的java项目

    1: 下载maven : 1.0 :设置maven的环境变量: 1.1: 设置maven本地仓库: 在下载好的maven文件夹找到 apache-maven-3.3.9/conf 文件夹下的setti ...

  6. Ubuntu ssh 服务

    安装ssh-serversudo apt-get install openssh-server安装ssh-clientsudo apt-get install openssh-client 修改ssh ...

  7. python 序列化 json pickle

    python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件 ...

  8. matplotlib 显示中文 与 latex冲突

    如果在使用中文之前包含了使用latex的语法: mpl.rcParams['text.usetex'] = True 将不能正确显示含有中文的图片. 附 显示中文的方法: from matplotli ...

  9. arcgis制作风或水流速流向图

    制作风或水流速流向图 风速风向图或流速流向图相信大家都已经见过不少,但不知道有多少人会制作这样炫的专题图,下面这边文章向我们展示了当基本数据U和V矢量被存储时,怎样计算风或水流的速度和方向和对其进行符 ...

  10. Tomcat安装后,远程IP无法访问的问题。

    我在使用阿里云与聚石塔的时候,发现Tomcat启动后,本地可以访问,但是外网无法访问,即使关闭防火墙也无法访问. 原因是 云平台的网络拦截. 阿里云:有一个入网规则 和 出网规则 ,流入数据端口  流 ...