文档中心>口语评测(基础版)

音频数据评测说明

最近更新时间:2026-01-16 17:21:52
我的收藏
本文以 新建项目 视角进行说明,完整示例可以参考 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
否
重试时间间隔。使用查询标识的重试时间间隔

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/*>
单词详细发音评估结果
suggestScore
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,用于订单唯一标识