有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
本文以 新建项目 视角进行说明,完整示例可以参考 Demo。

声明并定义对象

导入 TAISDK。
#import <TAISDK/TAIOralEvaluation.h>
声明对象。在"interface"中声明对象。
@property (strong, nonatomic) TAIOralEvaluation *oralEvaluation;
定义对象。在"viewDidLoad"中定义对象。
self.oralEvaluation = [[TAIOralEvaluation alloc] init]; self.oralEvaluation.delegate = self;
说明:
为了避免点击时创建多个对象,可以使用 if (!self.oralEvaluation) {} 来判断是否存在对象。如果为不存在,再进行创建。

销毁对象(可选)

将对象设置为 null,从而销毁对象。
self.oralEvaluation = NULL;

设置数据回调

用于监听数据是否回调。使用 NSLog 方法在控制台打印结果。
//二、数据回调 - (void)oralEvaluation:(TAIOralEvaluation *)oralEvaluation onEvaluateData:(TAIOralEvaluationData *)data result:(TAIOralEvaluationRet *)result error:(TAIError *)error { //数据和结果回调(只有data.bEnd为YES,result有效) NSLog (@"onEvaluateData:%@",result); NSLog (@"onEvaluateData:%@",error); } //检测到静音 - (void)oralEvaluation:(TAIOralEvaluation *)oralEvaluation onEndOfSpeechInOralEvaluation:(BOOL)isSpeak;{ // isSpeak ,true:录音开始到现在检测到声音,false:一直未检测到声音。 NSLog (@"onEndOfSpeechInOralEvaluation:%@",isSpeak?@"yes":@"no"); } //音量发生变化 - (void)oralEvaluation:(TAIOralEvaluation *)oralEvaluation onVolumeChanged:(NSInteger)volume{ //回调录音分贝大小[0-120] ,默认20 NSLog (@"onVolumeChanged:%@",volume?@"yes":@"no"); }
注意:
请在开始录制音频前设置回调函数,您将通过回调函数获取语音评测结果和错误信息。

设置初始化参数

初始化 TAIOraEvaluation 对象,并通过实例化对象 param 设置评测文本、客户 ID、密码等信息,详细参数信息请查看下文参数说明。
注意:
实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密。
代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见 云 API 密钥安全方案推荐
密钥可前往 官网控制台 进行获取。
//三、初始化参数
TAIOralEvaluationParam *param = [[TAIOralEvaluationParam alloc] init];
param.sessionId = [[NSUUID UUID] UUIDString];
param.appId = @"";
param.secretId = @"";
param.secretKey = @"";
param.token = @"";
param.soeAppId = @"";
param.workMode = TAIOralEvaluationWorkMode_Stream;
param.evalMode = TAIOralEvaluationEvalMode_Sentence;
param.storageMode = TAIOralEvaluationStorageMode_Disable;
param.serverType = TAIOralEvaluationServerType_English;
param.scoreCoeff = 1.0;
param.fileType = TAIOralEvaluationFileType_Mp3;
param.refText = @"";
param.keyword = @"";

设置超时重试(可选)

通过设置 serviceTimeoutTryTimes 和 serviceTimeoutWaitInterval,在评测超时的情况下进行重试。
// 每隔3000ms没有回调就会重试,一共重试5次。 param.serviceTimeoutTryTimes = 5; param.serviceTimeoutWaitInterval = 3000;

音频数据传输

本地音频数据

获取本地音频数据,由用户控制分片逻辑,对本地音频文件进行评测。
NSString *mp3Path = [[NSBundle mainBundle] pathForResource:@"hello_guagua" ofType:@"mp3"];
TAIOralEvaluationData *data = [[TAIOralEvaluationData alloc] init];
data.seqId = 1;
data.bEnd = YES;
data.audio = [NSData dataWithContentsOfFile:mp3Path];
__weak typeof(self) ws = self;
[self.oralEvaluation oralEvaluation:param data:data callback:^(TAIError *error) {
[ws setResponse:[NSString stringWithFormat:@"oralEvaluation:%@", error]];
}];

本地音频文件路径(可选)

获取本地音频文件路径,由 SDK 内部控制分片逻辑,对本地音频文件进行评测。
NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp3"];
NSLog(@"path = %@", path);
__weak typeof(self) ws = self;
[self.oralEvaluation oralEvaluation:param path:path callback:^(TAIError *error) {
[ws setResponse:[NSString stringWithFormat:@"oralEvaluation:%@", error]];
}];

请求参数说明

TAIOralEvaluationParam 参数说明

参数
类型
必填
说明
appid
NSString
账号应用 ID,参考账号信息
timeout
NSInteger
超时时间,默认30秒
secretId
NSString
您在控制台获取的密钥 ID,临时授权凭证的 TmpSecretId
secretKey
NSString
您在控制台获取的密钥 Key,临时授权凭证的 TmpSecretKey
token
NSString
临时授权凭证的 Token,仅在使用临时授权凭证时需要设置此参数
fileType
TAIOralEvaluationFileType
语音文件类型。
TAIOralEvaluationFileType_Raw: raw
TAIOralEvaluationFileType_Wav:wav
TAIOralEvaluationFileType.MP3:mp3
sessionId
NSString
语音段唯一标识
refText
NSString
被评估语音对应的文本。参考 评估文本介绍
workMode
TAIOralEvaluationWorkMode
语音输入模式
TAIOralEvaluationWorkMode.STREAM:流式分片
TAIOralEvaluationWorkMode.ONCE:非流式一次性评估
evalMode
TAIOralEvaluationEvalMode
评测模式。
TAIOralEvaluationEvalMode.WORD :单词模式
TAIOralEvaluationEvalMode.SENTENCE:句子模式
TAIOralEvaluationEvalMode.PARAGRAPH:段落模式
TAIOralEvaluationEvalMode.FREE:自由说模式
TAIOralEvaluationEvalMode.WORD_FIX:单词音素纠错模式
TAIOralEvaluationEvalMode.SCENE:情景评测模式
TAIOralEvaluationEvalMode.MULTI_BRANCH:句子多分支评测模式
TAIOralEvaluationEvalMode.WORD_REALTIME:单词实时评测模式
TAIOralEvaluationEvalMode.SPELLING:拼音评测模式
scoreCoeff
Float
评价苛刻指数,取值为[1.0 - 4.0]范围内的浮点数,用于平滑不同年龄段的分数。参考苛刻指数介绍
soeAppId
NSString
业务应用 ID,与账号应用 AppID 无关,是用来方便客户管理服务的参数。具体参考业务应用 ID 介绍
serverType
TAIOralEvaluationServerType
评估语言
TAIOralEvaluationServerType.ENGLISH:英文(默认)
TAIOralEvaluationServerType.CHINESE:中文
sentenceInfoEnable
Bool
输出断句中间结果标识。
Keyword
NSString
textMode
NSInteger
输入文本模式。
TAIOralEvaluationTextMode.NORMAL: 普通文本
TAIOralEvaluationTextMode.PHONEME:音素结构文本,参考音素标注
isFixOn
Bool
用于设置是否开启单词映射
isQuery
BOOL
查询标识。true:查询请求
isAsync
BOOL
异步模式标识。false:同步模式;true:异步模式
serviceTimeoutTryTimes
NSInteger
重试次数。使用查询标识的查询次数
serviceTimeoutWaitInterval
NSInteger
重试时间间隔。使用查询标识的重试时间间隔
cosBuketUrl
NSString
音频存储路径,将音频存储到cos桶中(1.2.3.112及以上版本支持)。使用参考音频存储路径

TAIOralEvaluationData 参数说明

参数
类型
必填
说明
seqId
NSInteger
流式数据包的序号。取值范围[1,3000]。
bEnd
BOOL
是否传输完毕标志
audio
NSData
音频数据

返回结果参数

TAIOralEvaluationRet 参数说明

参数
类型
说明
sessionId
NSString
语音段唯一标识
requestId
NSString
唯一请求 ID,每次请求都会返回
pronAccuracy
Float
发音精准度,取值范围[-1, 100],当取-1时指完全不匹配
pronFluency
Float
发音流利度,取值范围[0, 1],当为词模式时,取值无意义
pronCompletion
Float
发音完整度,取值范围[0, 1],当为词模式时,取值无意义
words
NSArray<taioralevaluationword/*>
单词详细发音评估结果
SuggestedScore
Float
建议评分,取值范围[0,100]
sentenceInfoSet
NSArray<TAIOralEvaluationSentenceInfo/*>
断句中间结果,待用户发音完全结束后,系统会给出一个综合所有句子的整体结果
refTextId
NSInteger
匹配候选文本的序号,在句子多分支、情景对 话、段落模式下表示匹配到的文本序号
注意:
此字段可能返回 null,表示取不到有效值。

KeyWordHits
NSArray<NSInteger>
主题词命中标志,0表示没命中,1表示命中
注意:
此字段可能返回 null,表示取不到有效值。

UnKeyWordHits
NSArray<NSInteger>
负向主题词命中标志,0表示没命中,1表示命中
注意:
此字段可能返回 null,表示取不到有效值。


TAIOralEvaluationWord 参数说明

参数
类型
说明
beginTime
Int
当前单词语音起始时间点,单位为ms
endTime
Int
当前单词语音终止时间点,单位为ms
pronAccuracy
Float
单词发音精准度,取值范围[-1, 100],当取-1时指完全不匹配
pronFluency
Float
单词发音流利度,取值范围[0, 1]
word
NSString
当前词
matchTag
Int
当前词与输入语句的匹配情况,0:匹配单词、1:新增单词、2:缺少单词、3:错读的词、4:未录入单词。
phoneInfos
NSArray<TAIOralEvaluationPhoneInfo/*>
音节评估详情
注意:
在 EvalMode 为2、3、5时,此参数为空。

referenceWord
NSString
读音评估对应的单词
KeywordTag
NSInteger
主题词命中标志,0表示没命中,1表示命中
注意:
此字段可能返回 null,表示取不到有效值。


SentenceInfoSet 参数说明

参数
类型
说明
sentenceId
Int
句子序号
words
NSArray<taioralevaluationword *>
单词粒度详细发音评估结果
pronAccuracy
Float
音素发音精准度,取值范围[-1, 100],当取-1时指完全不匹配
pronFluency
Float
单词发音流利度,取值范围[0, 1]
pronCompletion
BOOL
发音完整度,取值范围[0, 1],当为词模式时,取值无意义
suggestScore
Float
建议评分,取值范围[0,100]
refTextId
NSInteger
匹配候选文本的序号,在句子多分支、情景对 话、段落模式下表示匹配到的文本序号
注意:
此字段可能返回 null,表示取不到有效值。

KeyWordHits
NSArray<NSInteger>
主题词命中标志,0表示没命中,1表示命中
注意:
此字段可能返回 null,表示取不到有效值。

UnKeyWordHits
NSArray<NSInteger>
负向主题词命中标志,0表示没命中,1表示命中
注意:
此字段可能返回 null,表示取不到有效值。


TAIOralEvaluationPhoneInfo 参数说明

参数
类型
说明
beginTime
Int
当前音素语音起始时间点,单位为ms
endTime
Int
当前音素语音终止时间点,单位为ms
pronAccuracy
Float
音素发音精准度,取值范围[-1, 100],当取-1时指完全不匹配
detectedStress
BOOL
当前音素是否检测为重音
phone
NSString
用户实际发音音素
stress
BOOL
用户实际发音音素是否应为重音
rLetter
NSString
音素对应的字母
referencePhone
NSString
参考音素,在单词诊断模式下,代表标准音素

TAIError 参数说明

参数
类型
说明
Code
TAIErrCode
返回错误码
0:成功
1:参数错误
2:json 解析错误
3:http 请求错误
4:服务器错误详细错误信息请查看 desc 参数
desc
NSString
详细错误描述
requestId
NSString
请求 ID,用于订单唯一标识