适用于 iOS 的 OnlineScorer。
OnlineScorer 需要 iOS 8.0 或更高版本的开发目标。
OnlineScorer 可用作动态框架或静态库。有两种方式可以将 OnlineScorer 集成到您的项目中
我们强烈建议使用 CocoaPods 将 OnlineScorer 集成到项目中。
platform :ios, '8.0'
use_frameworks!
pod 'EZOnlineScorer'
您可以从 OnlineScorer-iOS 下载最新的库
将 OnlineScorer 克隆或下载到项目源目录后,将 EZOnlineScorer.xcodeproj
拖动到您的项目/工作空间中,然后按以下步骤操作。
进入目标设置中的“通用”选项卡。在“嵌入的二进制文件”部分,点击加号按钮并添加“EZOnlineScorer.framework”。
仍然在“通用”选项卡中,在“链接框架和库”部分,点击加号按钮并添加“libicucore.tbd”
要将 OnlineScorer 导入到 Obj-C 中,如果您的项目是用 swift 编写的,添加 #import <EZOnlineScorer/EZOnlineScorer.h>
到您的 swift 桥接头,或者只需在需要的位置使用 import EZOnlineScorer
EZOnlineScorer 的主要类是 EZOnlineScorerRecorder。在开始录音之前,配置 AppID 和 secret。如果需要,您还可以设置 socketURL。
EZOnlineScorerRecorder.configureAppID("test", secret: "test")
//set socket URL only when needed
EZOnlineScorerRecorder.setSocketURL(URL(string: "ws://test.test:1080/test")!)
要执行在线评分,首先创建一个评分有效负载对象(当前仅支持 EZReadAloudPayload),然后使用此有效负载创建 EZOnlineScorerRecorder。
let payload = EZReadAloudPayload(referenceText: "I will study Endlish very hard!")
let scorer = EZOnlineScorerRecorder(payload: payload)!
请注意,EZOnlineScorerRecorder 不管理 AVAudioSession。您需要请求录音权限,并在录音之前将 AVAudioSession 设置为正确的类别(录制或播放和录制)并激活 AVAudioSession。
guard AVAudioSession.sharedInstance().recordPermission() == .granted else {
//request record permission
return
}
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryRecord)
try AVAudioSession.sharedInstance().setActive(true)
//begin record
scorer.record(to: recordURL)
//or record to a temp file
scorer.record()
} catch {
//failed to configure AVAudioSession
let alert = UIAlertController(title: "未能开启录音", message: error.localizedDescription, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "好的", style: .default, handler: nil))
present(alert, animated: true, completion: nil)
}
录音完成后,调用 stopRecording()。EZOnlineScorerRecorder 需要一些时间来处理,您可以通过 isProcessing & isRecording 属性检查其状态。当评分状态更改或生成报告时,EZOnlineScorerRecorder 将调用其代理。
使用 OnlineScorer 需要 deployment target 为 iOS8.0 以上。
OnlineScorer 提供动态链接库和静态库两种版本,支持 CocoaPods 和手动安装两种集成方式。我们强烈推荐使用 CocoaPods 集成。
platform :ios, '8.0'
use_frameworks!
pod 'EZOnlineScorer'
您可以在 OnlineScorer-iOS 下载到最新版本的 OnlineScorer。
当您下载或克隆 OnlineScorer 至项目目录后,将 EZOnlineScorer.xcodeproj
文件拖入您的 project/workspace 中,然后按照以下说明进行配置。
在 ObjC 中使用 OnlineScorer,需要 #import <EZOnlineScorer/EZOnlineScorer.h>
。如果您该项目以 Swift 编写,您可以将 #import <EZOnlineScorer/EZOnlineScorer.h>
添加到您的 Swift 桥接头,也可以在 Swift 文件中使用 import EZOnlineScorer
。
EZOnlineScorer 的主类是 EZOnlineScorerRecorder。在开始录音之前,您需要配置好 AppID 和 secret。如果您需要,也可以配置 socketURL。
EZOnlineScorerRecorder.configureAppID("test", secret: "test")
//set socket URL only when needed
EZOnlineScorerRecorder.setSocketURL(URL(string: "ws://test.test:1080/test")!)
在线打分需要先创建一个 scorer payload 对象(目前只支持 EZReadAloudPayload),然后再使用这个 scorer payload 创建 EZOnlineScorerRecorder。
let payload = EZReadAloudPayload(referenceText: "I will study Endlish very hard!")
let scorer = EZOnlineScorerRecorder(payload: payload)!
请注意,EZOnlineScorerRecorder 不负责管理 AVAudioSession。您需要自行申请录音权限并设置正确的 AVAudioSession category,并在录音前激活 AVAudioSession,否则录音将直接失败。
guard AVAudioSession.sharedInstance().recordPermission() == .granted else {
//request record permission
return
}
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryRecord)
try AVAudioSession.sharedInstance().setActive(true)
//begin record
scorer.record(to: recordURL)
//or record to a temp file
scorer.record()
} catch {
//failed to configure AVAudioSession
let alert = UIAlertController(title: "未能开启录音", message: error.localizedDescription, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "好的", style: .default, handler: nil))
present(alert, animated: true, completion: nil)
}
当录音结束时调用 stopRecording(),EZOnlineScorerRecorder 需要一些时间和服务器交换数据。您可以通过 isProcessing 和 isRecording 属性来确定当前状态。当打分、录音状态变化或报告生成后,EZOnlineScorerRecorder 会通知其 delegate。
0 - 成功 -1 - 参数错误 -8 - 音频过长(目前限制120秒) -20 - 认证失败 -30 - 请求过于频繁 -31 - 余额不足 -40 - 并发不足,需要重试(仅限 WeChat) -41 - 排队超时(除 WeChat 外) -97 - 接收音频数据超时(超过15秒没有数据包) -99 - 计算资源不可用 -100 - 其他错误(例如从微信服务器下载音频失败)
EZReadAloudPayload 类型返回 json 示例
{
"fluency": 99,
"integrity": 100,
"locale": "en",
"overall": 100,
"pronunciation": 100,
"version": "2.1.0",
"words": [
{
"scores": {
"pronunciation": 100
},
"word": "i"
},
{
"scores": {
"pronunciation": 100
},
"word": "will"
},
{
"scores": {
"pronunciation": 100
},
"word": "study"
},
{
"scores": {
"pronunciation": 100
},
"word": "english"
},
{
"scores": {
"pronunciation": 100
},
"word": "very"
},
{
"scores": {
"pronunciation": 100
},
"word": "hard"
}
]
}