# 一、简介

把语音(≤60秒)转换成对应的文字信息,适用于较短的语音交互场景,如语音搜索、语音输入、语音控制等。

目前支持语种:中文、英语、粤语、四川话。

# 1.1 接口调用流程图

# 二、集成指南

支持静态库或者动态库两种集成方式,可以根据目标项目需求选择其中一种。

# 2.1 动态库方式

2.1.1 将 SDK 中的 UniSoundSDKDynamic.xcframework 文件添加到目标工程。

2.1.2 配置 Embeded framework,选择 ‘Embed & Sign’,同时添加系统依赖库 CFNetwork.framework、Security.framework 和 icucore。

2.1.3 Info.plist 增加 Privacy-Microphone Usage Description

2.1.4 Clean + Build。

# 2.2 静态库方式

2.2.1 将 SDK 中 UniSoundSDK/ 目录添加到目标工程。

2.2.2 配置Header Search Paths 和 Library Search Paths。

2.2.3 添加系统依赖库 CFNetwork.framework、Security.framework 和 icucore。

2.2.4 Info.plist 增加 Privacy-Microphone Usage Description

2.2.5 Clean + Build。

# 三、 使用说明

# 3.1 创建识别对象

USCSpeechRecognizer *recognizer = [USCSpeechRecognizer sharedInstance];
1

# 3.2 配置代理和识别参数

recognizer.delegate = self;
[recognizer setParameter:[USCSpeechRecognizerConstant AUDIO_SOURCE_INNER_MIC]
forKey:[USCSpeechRecognizerConstant AUDIO_SOURCE_KEY]];
1
2
3

# 3.3 开始识别

SDK支持调用内部麦克风传入语音,也支持外部输入音频片进行识别,一般二者使用一种方式即可。

# 3.3.1 使用麦克风采集音频

// 配置音频输入源为内部麦克风
[recognizer setParameter:[USCSpeechRecognizerConstant AUDIO_SOURCE_INNER_MIC]
forKey:[USCSpeechRecognizerConstant AUDIO_SOURCE_KEY]];
// 开始识别
BOOL result = [recognizer startListening];
1
2
3
4
5

# 3.3.2 外部输入音频片段识别

// 配置音频输入源为 外部输入
[recognizer setParameter:[USCSpeechRecognizerConstant AUDIO_SOURCE_INPUT_DATA]
forKey:[USCSpeechRecognizerConstant AUDIO_SOURCE_KEY]];
// 配置输入文件音频格式为 opus
[recognizer setParameter:[USCSpeechRecognizerConstant FORMAT_OPUS]
forKey:[USCSpeechRecognizerConstant FORMAT_KEY]];
// 开始识别
BOOL result = [recognizer startListening];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test"
ofType:@"opus"];
NSData *fileData = [NSData dataWithContentsOfFile:filePath];
for (int i = 0; i < fileData.length; i = i + 1024) {
    int length = MIN(1024, (int)fileData.length - i);
    NSData *subData = [fileData subdataWithRange:NSMakeRange(i, length)];
    // 写入音频片段
    [recognizer writeAudio:subData];
    usleep(5000);
}
// 识别结束等待结果回调
[recognizer stopListening];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 3.4 获取识别结果

// 识别过程中事件回调。事件类型请阅读USCSpeechRecognizerEvent.h
- (void)onEvent:(USCSpeechRecognizerEvent)event {

}

// 麦克风采集过程音量回调,范围0-100
- (void)onVolumeChanged:(int)volume {

}

// 识别过程中结果回调。isLast = YES,表示最终识别结果。
- (void)onResult:(NSString *)result isLast:(BOOL)isLast {

}

// 识别过程中异常回调。
- (void)onCompleted:(USCSpeechRecognizerError *)error {

}

finished = false 代表识别未结束,是中间可变识别结果
finished = true 代表识别未结束,代表识别结果,是最终识别结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 四、接口文档

下载SDK获取接口文档 (opens new window)

SDK下载路径:AI开放平台 - 控制台 - 我的应用 - 应用详情 - 一句话识别最下方

# 五、识别结果说明

识别结果通过 USCSpeechRecognizerDelegate 返回。

// 识别过程中结果回调。isLast = YES,表示最终识别结果。
- (void)onResult:(NSString *)result isLast:(BOOL)isLast {

}
1
2
3
4
参数 类型 说明
result NSString 识别结果文本
isLast BOOL 是否是最终结果。 isLast = NO,表示过程结果; isLast = YES,表示最终识别结果。

# 六、错误码

错误类型 错误码 描述
USCSpeechRecognizerErrorTypeRecordFail -10100 开启录音失败
USCSpeechRecognizerErrorTypeMicDenied -10102 麦克风权限禁用
USCSpeechRecognizerErrorTypeConnectFail -10103 网络连接失败
USCSpeechRecognizerSignatureFail 401 签名验证失败
USCSpeechRecognizerInvalidTimestamp 403 时钟偏移校验失败
USCSpeechRecognizerInvalidParam 20201 参数错误
USCSpeechRecognizerTimeout 20202 超过10s没有上传语音
USCSpeechRecognizerNotEnoughService 20203 服务资源不足
USCSpeechRecognizerInternalError 20204 服务内部错误
USCSpeechRecognizerLengthExceedMax 20205 音频长度超过1分钟
USCSpeechRecognizerConcurrencyExceedLimit 20206 并发超过限制
USCSpeechRecognizerTimesUsedUp 20207 套餐次数用完
USCSpeechRecognizerAppKeyNotExist 20208 appKey 不存在
USCSpeechRecognizerIPNotInWhitelist 20209 客户端ip不在白名单