iOS SDK 说明

最近更新时间:2024-07-25 16:32:21

我的收藏

接入准备

SDK 获取

口语评测 iOS SDK 以及 Demo 的下载地址:接入 SDK 下载

接入须知

开发者在调用前请先查看智聆口语评测(新版)相关接口,了解接口的使用要求使用步骤
该接口需要手机能够连接网络(GPRS、3G 或 Wi-Fi 网络等),且系统为 iOS 12.0 及以上版本。
运行 Demo 必须设置 AppID、SecretID、SecretKey,可在 API 密钥管理 中获取。

SDK 导入

1. 下载并解压 iOS SDK 压缩包,压缩包包含 demo、sdk 和 doc,其中 sdk/QCloudSOE.xcframework 为口语评测的 SDK。
2. 在工程中添加依赖库,在 build Phases Link Binary With Libraries 中添加以下库:
QCloudSOE.xcframework

快速接入

完整代码请参考压缩包中的 demo 文件夹。
...

id<TAIOralController> _ctl;

...

TAIOralConfig* config = [[TAIOralConfig alloc] init];
config.appID = kQDAppId;
config.secretID = kQDSecretId;
config.secretKey = kQDSecretKey;
config.token = kQDToken;
[config setApiParam:TAIServerEngineTypeKey value:self.engineSeg.selectedSegmentIndex == 0 ? @"16k_en" : @"16k_zh"];
[config setApiParam:TAIEvalModeKey value:[@(self.evalModeSeg.selectedSegmentIndex) stringValue]];
[config setApiParam:TAIRefTextKey value:self.refText.text];
[config setApiParam:TAIScoreCoeffKey value:[@(self.coeffSlider.value) stringValue]];
[config setApiParam:TAISentenceInfoEnabledKey value:[@(self.sentenceInfoSeg.selectedSegmentIndex) stringValue]];
if (_keywordText.text.length) {
[config setApiParam:TAIKeywordKey value:_keywordText.text];
}
config.audioFile = [NSString stringWithFormat:@"%@/temp.pcm", NSTemporaryDirectory()];
config.vadInterval = _vadSlider.value;
config.vadVolume = _vadVolumeSlider.value;
config.connectTimeout = 1000;
if ([_sourceSeg selectedSegmentIndex] == 0) {
_source = [[RecordDataSource alloc] init];
} else {
NSString* path = [NSString stringWithFormat:@"%@/%@", [[NSBundle mainBundle]bundlePath], @"hello_guagua.pcm"];
_source = [[FileDataSource alloc] init:path];
}
_ctl = [config build:_source listener:self];

...

[_ctl stop]

接口说明

接口示例代码为 demo 部分代码,完整代码请参考 demo 目录。

TAIOralConfig

口语评测配置项,用于配置并创建 TAIOralController。

属性

类型
名称
说明
NSString*
appID
腾讯云 appID
NSString*
secretID
腾讯云 secretID
NSString*
secretKey
腾讯云 secretKey
NSString*
token
腾讯云临时 token,设置为nil或空字符不生效
NSString*
audioFile
数据文件,不为 nil 时会将从数据源读取的数据保存在此文件中
int
vadInterval
静音检测时长,小于等于0时关闭静音检测,单位为 ms
int
vadVolume
静音检测音量阈值,音量阈值为0 - 120,默认为20,只有静音检测开启时生效
int
connectTimeout
websocket 连接超时设置,大于0时生效,单位为 ms
说明:
静音检测说明:
SDK 内部根据音量大小和时间来判断是否静音,再音量小于 vadVolume 超过 vadInterval 的时长后判断为静音。
静音检测仅对 voice_format 为 pcm(格式为单通道 s16le)生效,其余格式不支持。

方法

setApiParam
设置 websocket 连接时传给后台的参数。
(TAIOralConfig*)setApiParam:(NSString*)key value:(NSString*)value;
build
创建 TAIOralController。
(id<TAIOralController>)build:(id<TAIOralDataSource>)source listener:(id<TAIOralListener>)listener;
说明:
TAIOralController 会强引用 source,但不会强引用 listener。
TAIOralController 自创建后会开始评测。

TAIOralController

口语评测控制器,用于停止或取消评测。

方法

cancel
取消评测任务。
(void)cancel;
说明:
取消任务成功后 SDK 会回调 SOECANCELERROR 类型的错误。
stop
停止评测任务。
(void)stop;
说明:
停止评测会向服务器发送结束评测信息,收到服务器成功的信息会回调任务结束。

TAIOralListener

口语评测消息回调协议。

方法

onFinish
评测成功。
(void)onFinish;
onError
评测失败。
(void)onError:(NSError*)error;
说明:
一次评测任务一定会回调一次成功或失败的信息。
onMessage
评测中收到的服务端信息。
(void)onMessage:(NSString*)value;
说明:
回调 websocket 连接后从服务端收到的所有信息。
onVad
静音回调。
(void)onVad:(BOOL)value;
说明:
静音检测的规则参考 TAIOralConfig 说明。
静音检测为边缘触发,仅在 SDK 判断静音状态改变时回调。
检测到静音为 Flase。
onVolume
音量回调。
(void)onVolume:(int)value;
说明:
音量范围为0 - 120。
音量回调仅对 voice_format 为 pcm(格式为单通道 s16le)生效。
onLog
日志回调。
(void)onLog:(NSString*)value level:(int)level;
说明:
目前 level 均为0。

TAIOralDataSource

口语评测数据源协议。
方法
start
开始读取。
(nullable NSError*)start;
说明:
SDK 内部开始读取数据源时回调该方法。
该方法返回不为 nil 时,评测失败,SDK 回调 SOEDATASOURCESTARTERROR 错误。
stop
停止读取。
(nullable NSError*)stop;
说明:
SDK 结束评测时回调该方法。
SDK 在评测中发生错误时结束时,不会主动调用 stop 方法,即使已经调用 start 方法。
该方法返回不为 nil 时,评测失败,SDK 回调 SOEDATASOURCESTOPERROR 错误。
read
读取数据
(NSData*)read:(int)ms error:(NSError**)error;
说明:
SDK 会通过不断调用该方法获取音频数据并发送给后端。
该方法返回的数据为 ms 毫秒产生的数据,当 voice_format 为 pcm 时,此时 read 需要返回 ms * 16 * 2 字节的数据。
该方法产生错误时可通过 error 参数传递到 SDK,评测失败,SDK 回调 SOEDATASOURCEERROR 错误。
具体实现可以参考 demo 中 RecordDataSource 和 FileDataSource。
empty
数据是否为空。
(bool)empty;
说明:
SDK 读取数据前会调用该方法判断数据源是否还有数据。
该方法返回为 True 时,SDK 会停止读取数据并向服务器发送结束信息。

错误码

名称
数值
说明
SOEPARAMETERERROR
2000
SDK 检测到参数不合法
SOEWEBSOCKETERROR
2001
Websocket 错误
SOEDATASOURCESTARTERROR
2002
调用数据源 start 失败
SOEDATASOURCESTOPERROR
2003
调用数据源 stop 失败
SOEDATASOURCEERROR
2004
调用数据源 read 失败
SOECANCELERROR
2005
参考 cancel 说明
SOESERVERERROR
2006
服务器返回错误,服务端返回的数据 code 不为0时,返回此错误
SOEFILEWRITERERROR
2007
当 audioFile 不为空,但 SDK 无法正常打开文件时,返回此错误
说明:
调用数据源方法失败时,数据源返回的错误在 InnerError 中。