|
|
@@ -5,6 +5,7 @@ import android.util.Log
|
|
|
import cn.i2edu.speech_plugin.audioUtils.audiotransfer.DecodeEngine
|
|
|
import cn.i2edu.speech_plugin.audioUtils.audiotransfer.DecodeOperateInterface
|
|
|
import com.tencent.taisdk.*
|
|
|
+import com.tencent.taisdk.TAIErrCode.SUCC
|
|
|
import java.io.File
|
|
|
import java.io.FileInputStream
|
|
|
import com.tencent.taisdk.TAIOralEvaluationFileType
|
|
|
@@ -12,10 +13,12 @@ import com.tencent.taisdk.TAIOralEvaluationServerType
|
|
|
import com.tencent.taisdk.TAIOralEvaluationStorageMode
|
|
|
import com.tencent.taisdk.TAIOralEvaluationEvalMode
|
|
|
import com.tencent.taisdk.TAIOralEvaluationWorkMode
|
|
|
-import java.util.UUID
|
|
|
import com.tencent.taisdk.TAIOralEvaluationParam
|
|
|
-
|
|
|
-
|
|
|
+import java.util.*
|
|
|
+import android.system.Os.close
|
|
|
+import java.io.InputStream
|
|
|
+import android.system.Os.close
|
|
|
+import java.io.IOException
|
|
|
|
|
|
interface SmartOralEvaluatorCallBack {
|
|
|
fun onResult(result: TAIOralEvaluationRet?)
|
|
|
@@ -43,27 +46,35 @@ class SmartOralAudioEvaluatorUtil private constructor(val context: Context) {
|
|
|
|
|
|
fun startEvaluator(en: String, filePath: String, decodedFilePath: String) {
|
|
|
oral = TAIOralEvaluation()
|
|
|
- oral?.setListener(object : TAIOralEvaluationListener {
|
|
|
- override fun onEvaluationData(data: TAIOralEvaluationData?, result: TAIOralEvaluationRet?, error: TAIError?) {
|
|
|
- if (data?.bEnd == true) {
|
|
|
- smartOralEvaluatorCallBack?.onResult(result)
|
|
|
+ oral?.setListener(object: TAIOralEvaluationListener {
|
|
|
+ override fun onVolumeChanged(p0: Int) {
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onEvaluationData(p0: TAIOralEvaluationData?, p1: TAIOralEvaluationRet?, p2: TAIError?) {
|
|
|
+ if (p0?.bEnd == true && p2?.code == SUCC) {
|
|
|
+ Log.d(TAG, "result: ${p1?.pronFluency}, ${p1?.pronCompletion}, ${p1?.pronAccuracy}")
|
|
|
+ smartOralEvaluatorCallBack?.onResult(p1)
|
|
|
} else {
|
|
|
- Log.e(TAG, "error code: ${error?.code} message: ${error?.desc}")
|
|
|
- smartOralEvaluatorCallBack?.onError(error?.desc ?: "")
|
|
|
+ Log.e(TAG, "error code: ${p2?.code} message: ${p2?.desc}")
|
|
|
+ smartOralEvaluatorCallBack?.onError(p2?.desc ?: "")
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ override fun onEndOfSpeech() {
|
|
|
+ }
|
|
|
})
|
|
|
val param = TAIOralEvaluationParam()
|
|
|
param.context = context
|
|
|
- param.appId = ""
|
|
|
- param.secretId = ""
|
|
|
- param.secretKey = ""
|
|
|
+ param.appId = "1301049120"
|
|
|
+ param.secretId = "AKIDUf0EEzc8NMpPmu4Po1zhXBZicKp5G7xZ"
|
|
|
+ param.secretKey = "WnsjKaqtgDVbV9cMtABwVptarwpWyBAt"
|
|
|
param.sessionId = UUID.randomUUID().toString()
|
|
|
param.workMode = TAIOralEvaluationWorkMode.ONCE
|
|
|
param.evalMode = TAIOralEvaluationEvalMode.SENTENCE
|
|
|
param.storageMode = TAIOralEvaluationStorageMode.DISABLE
|
|
|
param.serverType = TAIOralEvaluationServerType.ENGLISH
|
|
|
- param.fileType = TAIOralEvaluationFileType.MP3//只支持mp3
|
|
|
+ param.fileType = TAIOralEvaluationFileType.WAV// 只支持mp3
|
|
|
+ param.soeAppId = "soe_1002252"
|
|
|
param.scoreCoeff = 1.0
|
|
|
param.refText = en
|
|
|
Thread {
|
|
|
@@ -73,20 +84,19 @@ class SmartOralAudioEvaluatorUtil private constructor(val context: Context) {
|
|
|
|
|
|
override fun decodeSuccess() {
|
|
|
try {
|
|
|
+
|
|
|
val file = File(decodedFilePath)
|
|
|
- val fileInputStream = FileInputStream(file)
|
|
|
- val buffer = ByteArray(fileInputStream.available())
|
|
|
+ val bytes: ByteArray = file.readBytes()
|
|
|
|
|
|
val data = TAIOralEvaluationData()
|
|
|
data.seqId = 1
|
|
|
data.bEnd = true
|
|
|
- data.audio = buffer
|
|
|
+ data.audio = bytes
|
|
|
oral?.oralEvaluation(param, data, TAIOralEvaluationCallback {
|
|
|
//接口调用结果返回
|
|
|
Log.d(TAG, "oralEvaluation call result: ${it?.code ?: "error null"}")
|
|
|
})
|
|
|
file.delete()
|
|
|
- fileInputStream.close()
|
|
|
} catch (e: Exception) {
|
|
|
e.printStackTrace()
|
|
|
smartOralEvaluatorCallBack?.onError("failed ${e.message}")
|