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导入

  1. 建立工程
  2. 将头文件和 libDUILiteAuth.a,libDUILite_ios_LASR_realtime.a库导入工程
  3. 添加依赖库

    使用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