声明并定义对象
导入 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"); }
注意:
请在开始录制音频前设置回调函数,您将通过回调函数获取语音评测结果和错误信息。
设置初始化参数
注意:
实例化一个认证对象,入参需要传入腾讯云账户 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 | 是 | |
timeout | NSInteger | 否 | 超时时间,默认30秒 |
secretId | NSString | 是 | |
secretKey | NSString | 是 | |
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 | 是 | |
soeAppId | NSString | 否 | |
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 | 否 |
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,用于订单唯一标识 |