iOS SDK 接入(旧)

该技术服务已迁移至思必驰开放平台,本文档于2020年8月25日停止更新。最新版请查看:https://cloud.aispeech.com/docs/asr_sentence_ios

一、功能介绍

一句话识别对时长较短(60秒以内)的语音进行识别,非实时的返回识别结果。适用于较短的语音交互场景,如语音搜索、语音指令、语音短消息等,可集成在各类App、智能家电、智能助手等产品中。支持:

  • 可用于基于协议开发的:轻量级嵌入式设备;
  • 支持pcm,wav, ogg(speex), ogg_opus, mp3格式的音频识别;
  • 支持语言模型等特殊配置,请联系商务或项目经理进行定制,或联系:asrsupport_service@aispeech.com(邮件中请提供联系方式和需求详细描述)。

二、调用限制

集成实时长语音转写SDK时,需要注意以下内容:

内容

说明

字符编码 UTF-8
语言种类 支持格式以server文档为主:一句话Server接入
服务鉴权 一句话转写服务使用需要进行授权,详见:基础技术iOS授权说明
音频属性 采样率16k、单声道
音频格式

支持格式以server文档为主:一句话Server接入

服务开通 调用服务需要先购买时长

三、集成流程

3.1 产品创建与授权

产品创建

前往DUI控制台创建基础技术产品,并开通一句话识别服务。

产品授权

授权详见:基础技术iOS授权说明

 

3.2 SDK集成准备

下载SDK

请前往:这里下载最新版的SDK。

SDK准备

集成SDK前,需要有:

libDUILiteAuth.a 及头文件

libDUILite_ios_ASR_sentence.a 及头文件

 

3.3 集成SDK

SDK包说明

libs  ------------------- 库文件

sample --------------- demo

SDK集成流程

SDK集成整体流程如下图:

SDK导入

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

    使用cocoapod 导入使用到的第三方库(或直接下载导入源码到工程中):

      pod 'Reachability', '~> 3.2'

      pod 'AFNetworking', '~> 3.2.1'

     

四、SDK 使用说明

4.1 初始化

AICloudASRSentenceConfig部分设置参数如下:

AICloudASRSentenceConfig *config = [[AICloudASRSentenceConfig alloc]init];


config.audioType = @"wav";      // 音频类型,必填。 默认:wav,支持:pcm,wav,ogg,ogg_opus,mp3,opus
config.sampleRate = 16000;      // 音频采样率,默认16000
config.sampleBytes = 2;         // 取样字节数,默认2
config.channel = 1;             // 音频通道数,默认1


config.lang = @"cn";            // 可选值: cn(默认值, 中文)
config.use_vad = YES;           // 是否启用VAD功能。 默认:true。如果关闭,会跳过音频分割,直接进入识别流程。
config.vad_pause = 500;         // 切割间隔时间,默认值:500,单位:毫秒。
config.use_fullstop = NO;       // 开启后处理时,是否使用中文句号来进行分句。 默认:false。
config.use_segment = NO;        // 是否返回详细的分词结果。默认:false。如果开启,返回的result会以词为单位返回。

 

4.2 开始请求识别

/初始化配置参数类,按需求自行调配参数。
AICloudASRSentenceConfig *config = [[AICloudASRSentenceConfig alloc]init];
//识别音频路径
NSString *audioPath = [[NSBundle mainBundle] pathForResource:@"audio.wav" ofType:nil];


//请求识别
[[AIASRSentenceEngine shareInstance] asrSentence:audioPath config:config Progress:^(float progress) {
    NSLog(@"%f",progress);
} Success:^(NSDictionary * _Nonnull succeedInfo) {
    NSLog(@"%@",succeedInfo);
} Failure:^(NSDictionary * _Nonnull errorInfo) {
    NSLog(@"%@",errorInfo);
}];

 

4.3 响应结果

{
  errno: 0,
  error: "",
  data: {
    session_id: "5e548cf5d992b626aceea8e5",                //服务器响应唯一ID
    request: {
      audio: {
        audio_type: "wav",
        channel: 1,
        sample_bytes: 2,
        sample_rate: 16000
      },
      duration: 91718,                                      // 音频时长
      length: 2935034,                                      // 音频文件长度
      request_id: "92634b3b04dd41e3bcd966758dcc8d3c"
    },
    result: [                 //正常的识别分句结果
      {
        bg: 1850,             //开始时间(ms)
        ed: 12980,            //结束时间(ms)
        onebest: ""           //识别文本
      },
      {
        bg: 1850,
        ed: 12980,
        onebest: ""
      },
      ...
    ],
    segments: [               //当打开use_segment参数,会额外返回分词后的结果
      {
        bg: 1850,
        ed: 12980,
        onebest: ""
      },
      {
        bg: 1850,
        ed: 12980,
        onebest: ""
      },
      ...
    ]
  }
}

 

4.4 销毁引擎

[AIASRSentenceEngine  deallocInstance];

五、SDK 错误码说明

授权时可能遇见的错误码,参考 基础技术授权说明 3.3

识别时可能遇到的错误码,参考 在线语音识别 3.5