iOS SDK接入(旧)
该技术服务已迁移至思必驰开放平台,本文档于2020年8月25日停止更新。最新版请查看:https://cloud.aispeech.com/docs/lasr_rt_iOS
一 功能介绍
实时语音转写通过与服务端建立websocket长连接,对连续的音频流进行实时识别,获取返回的文字流识别结果,达到“边说边出文字”的效果,内置智能断句,可用于大会演讲投屏、实时直播字幕、实时法庭庭审记录等场景。整个识别过程是实时的,支持:
- 支持wav, ogg, opus, mp3, pcm格式的音频文件转写;
- 支持中文普通话
- 支持自定义热词和敏感词配置、语言模型自训练功能,请联系商务或项目经理进行定制。
二 调用限制
集成实时长语音转写SDK时,需要注意以下内容:
内容 |
说明 |
---|---|
字符编码 | UTF-8 |
语言种类 | 中文普通话,中英文混合 |
服务鉴权 | 长语音服务使用需要进行授权,详见:授权说明 |
音频属性 | 采样率16k、单声道 |
音频格式 |
wav, ogg, opus, mp3, pcm |
服务开通 | 调用长语音服务需要先购买时长, 您可以领取免费时长资源或购买付费资源包 |
三 集成流程
3.1 产品创建与授权
产品创建
产品授权
授权详见:基础技术iOS授权说明
3.2 SDK集成准备
下载SDK
请前往:这里是下载页面的链接, 下载最新版本的SDK。
SDK准备
集成SDK前,需要有:
libDUILiteAuth.a 及头文件
libDUILite_ios_LASR_realtime.a 及头文件
3.3 集成SDK
SDK包说明
libs ------------------- 库文件
sample --------------- demo
SDK集成流程
SDK集成整体流程如下图:
SDK导入
- 建立工程
- 将头文件和 libDUILiteAuth.a,libDUILite_ios_LASR_realtime.a库导入工程
- 添加依赖库
使用cocoapod 导入使用到的第三方库(或直接下载导入源码到工程中):
pod 'Reachability', '~> 3.2'
pod 'SocketRocket', :git => 'https://github.com/facebook/SocketRocket.git'
四 SDK使用说明
4.1 初始化
参数设置
AICloudLASRRealtimeIntent部分设置参数如下:
AICloudLASRRealtimeIntent *intent = [[AICloudLASRRealtimeIntent alloc] init];
intent.use_txt_smooth = 0; // 口语顺滑,去掉 嗯、啊 这些词
intent.use_tprocess = 1; // 逆文本,识别出的数字转成阿拉伯数字
intent.use_alignment = 0; // 是否输出词级别时间对齐信息
intent.use_sensitive_wds_norm = 0; // 是否使用内置敏感词
intent.audioType = @"wav"; // 设置音频格式
intent.use_custom_feed = YES; // 设置是否自行feed数据
示例代码
//初始化引擎
AICloudLASRRealtimeIntent *intent = [[AICloudLASRRealtimeIntent alloc] init];
asrEngine = [AICloudLASRRealtimeEngine sharedInstance];
[asrEngine engineInit:self intent:intent];
//回调接口
/**
引擎初始化成功回调
*/
-(void)onAICloudASREngineInitSuccess{}
/**
开始语音识别成功回调
*/
-(void)onAICloudASREngineStartSuccess{}
/**
实时反馈,result为透传json,具体json结构如下部分
*/
-(void)onRealbackResults:(NSString *)result{}
/**
音量变化
*/
-(void)onRmsChanged:(NSNumber*)rmsdB{}
/**
错误回调
*/
-(void)onError:(NSString *)error{}
/**
录音数据
*/
-(void)onBufferReceived:(NSData *)buffer{}
回调结果
-(void)onRealbackResults:(NSString *)result 回调方法,result数据结构及说明:
errno = 7,start响应成功
{
"errno": 7,
"error": "",
"data": {
"current state": "feeding"
}
}
errno = 8, 表示本次返回为识别中间var结果
{
"errno": 8,
"error": "",
"data": {
"sessionId": "94aadbaa39f046c1b2889dac9ccb1cff",
"var": "这个 工业化 时代",
"speaker": 0,
"bg":160
}
}
errno = 0,表示本次返回为识别中间rec结果
{
"errno": 0,
"error": "",
"data": {
"sessionId": "94aadbaa39f046c1b2889dac9ccb1cff",
"bg": 160,
"end": 8380,
"onebest": "这个工业化时代,人越来越像机器。现在很多人研究技术是为了让机器越来越像人,而机器做人。",
"speaker": 0
}
}
errno = 9,表示为客户端发完空帧后的最后一个rec,客户端可以断开链接
{
"errno": 9,
"error": "",
"data": {
"sessionId": "94aadbaa39f046c1b2889dac9ccb1cff",
"bg": 8380,
"ed": 10331,
"onebest": "会做的事情并不稀奇,",
"speaker": 0
}
}
4.2 开始识别
asrEngine = [AICloudLASRRealtimeEngine sharedInstance];
[asrEngine startEngine];
如为外部feed音频数据,调用startEngine方法之后,等onRealbackResults:回调接口返回的结果errno为7时,代表可以feed,然后调用如下接口feed音频数据。
NSData *data = 音频数据;
[asrEngine feedData:data];
4.3 停止识别
asrEngine = [AICloudLASRRealtimeEngine sharedInstance];
[asrEngine stopEngine];
4.3 取消识别
asrEngine = [AICloudLASRRealtimeEngine sharedInstance];
[asrEngine cancel];
4.4 销毁引擎
[AICloudLASRRealtimeEngine dellocInstance];
五 SDK错误码说明
授权时可能遇见的错误码,参考 基础技术授权说明 3.3
识别时可能遇到的错误码,参考 在线语音识别 3.5