e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
//
// XSMessageMehtodChannel.swift
// Runner
//
// Created by MacBook Pro on 2023/6/28.
//
import UIKit
class XSMessageMehtodChannel: NSObject,SSOralEvaluatingManagerDelegate {
var resultData:Dictionary<String, Any>?
var messageChannel:FlutterMethodChannel?
init(message:FlutterBinaryMessenger) {
super.init()
resultData = Dictionary()
|
53e9e6db
吴启风
feat:绘本语音评测逻辑
|
16
|
messageChannel = FlutterMethodChannel.init(name: "wow_english/sing_sound_method_channel", binaryMessenger: message)
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
17
18
19
20
21
22
23
|
messageChannel!.setMethodCallHandler { call, result in
self.handle(call, result)
}
}
//配置评测信息
func setEvaluateConfig(dict:Dictionary<String, Any>) {
|
997ea0d6
liangchengyou
feat:绘本闪退问题修复
|
24
25
26
27
28
29
30
31
32
|
var appKey = "a418"
var secretKey = "c11163aa6c834a028da4a4b30955be99"
var service = "wss://api.cloud.ssapi.cn"
var userId = "guest"
var frontTime = "3"
var backTime = "3"
if (!dict.keys.isEmpty) {
appKey = dict["appKey"] as? String ?? ""
secretKey = dict["secretKey"] as? String ?? ""
|
31d42f06
liangchengyou
feat:视频跟读录音修改
|
33
|
service = dict["service"] as? String ?? ""
|
997ea0d6
liangchengyou
feat:绘本闪退问题修复
|
34
35
36
|
userId = dict["userId"] as? String ?? "guest"
frontTime = dict["frontTime"] as? String ?? "3"
backTime = dict["frontTime"] as? String ?? "3"
|
997ea0d6
liangchengyou
feat:绘本闪退问题修复
|
37
|
}
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
38
|
let config = SSOralEvaluatingManagerConfig.init()
|
b90a1518
liangchengyou
feat:练习接口逻辑完成
|
39
40
|
config.vad = true
config.isOutputLog = false
|
997ea0d6
liangchengyou
feat:绘本闪退问题修复
|
41
42
|
config.appKey = appKey
config.secretKey = secretKey
|
b90a1518
liangchengyou
feat:练习接口逻辑完成
|
43
44
|
config.frontTime = Double(frontTime)!
config.backTime = Double(backTime)!
|
997ea0d6
liangchengyou
feat:绘本闪退问题修复
|
45
|
config.setValue(service, forKey: "service")
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
46
47
48
49
50
51
|
SSOralEvaluatingManager.register(config)
SSOralEvaluatingManager.share().register(.line, userId: userId)
SSOralEvaluatingManager.share().delegate = self
}
//开始评测
|
3c1d5c64
liangchengyou
feat:练习功能完成
|
52
|
func evaluateVoice(dict:Dictionary<String, Any>) {
|
b90a1518
liangchengyou
feat:练习接口逻辑完成
|
53
54
55
|
let text = dict["word"] as? String ?? ""
let type = dict["type"] as? String ?? "0"
let userId = dict["userId"] as? String ?? "guest"
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
56
57
|
let config = SSOralEvaluatingConfig()
config.oralContent = text
|
b90a1518
liangchengyou
feat:练习接口逻辑完成
|
58
|
if (type == "0") {
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
59
60
61
62
|
config.oralType = .word
} else {
config.oralType = .sentence
}
|
3c1d5c64
liangchengyou
feat:练习功能完成
|
63
|
config.oralType = .kidSent
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
64
65
66
67
|
config.userId = userId
SSOralEvaluatingManager.share().startEvaluateOral(with: config)
}
|
37b78a15
liangchengyou
feat:添加录音插件
|
68
69
70
71
72
73
74
75
76
77
78
79
80
|
//开始评测(本地音频文件)
func evaluateLocalVoice(dict:Dictionary<String, Any>) {
let text = dict["word"] as? String ?? ""
let type = dict["type"] as? String ?? "0"
let userId = dict["userId"] as? String ?? "guest"
let voicePath = dict["voicePath"] as? String ?? ""
let config = SSOralEvaluatingConfig()
config.oralContent = text
if (type == "0") {
config.oralType = .word
} else {
config.oralType = .sentence
}
|
9efff6ae
liangchengyou
feat:视频跟读逻辑修改
|
81
|
config.oralType = .sentence
|
37b78a15
liangchengyou
feat:添加录音插件
|
82
83
84
85
|
config.userId = userId
SSOralEvaluatingManager.share().startEvaluateOral(withWavPath: voicePath, config: config)
}
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
86
87
88
89
90
|
func handle(_ call: FlutterMethodCall,_ result: @escaping FlutterResult) {
if (call.method == "initVoiceSdk") {
self.setEvaluateConfig(dict:call.arguments as! Dictionary<String, Any>)
return
}
|
3c1d5c64
liangchengyou
feat:练习功能完成
|
91
92
|
if (call.method == "startVoice") {
self.evaluateVoice(dict: call.arguments as! Dictionary<String, Any>)
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
93
94
95
|
return
}
|
dae7f2fd
吴启风
feat:增加android端先声...
|
96
|
if (call.method == "startLocalVoice") {
|
37b78a15
liangchengyou
feat:添加录音插件
|
97
98
99
100
|
self.evaluateLocalVoice(dict: call.arguments as! Dictionary<String, Any>)
return
}
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
101
102
103
104
|
if (call.method == "stopVoice") {
SSOralEvaluatingManager.share().stopEvaluate();
return
}
|
31d42f06
liangchengyou
feat:视频跟读录音修改
|
105
106
107
108
109
|
if (call.method == "cancelVoice") {
SSOralEvaluatingManager.share().cancelEvaluate();
return;
}
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
110
111
112
113
114
115
116
117
118
119
120
121
122
|
}
//评测结果回调
func evaluateResult() {
messageChannel!.invokeMethod("voiceResult", arguments: resultData)
}
//SSOralEvaluatingManagerDelegate
/**
评测开始
*/
func oralEvaluatingDidStart() {
print("评测开始")
|
45390cfc
liangchengyou
feat:失败回调
|
123
|
messageChannel!.invokeMethod("voiceStart", arguments: nil)
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
124
125
126
127
128
129
130
|
}
/**
评测停止
*/
func oralEvaluatingDidStop() {
print("评测结束")
|
45390cfc
liangchengyou
feat:失败回调
|
131
|
messageChannel!.invokeMethod("voiceEnd",arguments: nil)
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
132
133
134
135
136
137
|
}
/**
评测完成后的结果
*/
func oralEvaluatingDidEnd(withResult result: [AnyHashable : Any]?, requestId request_id: String?) {
|
45390cfc
liangchengyou
feat:失败回调
|
138
|
let resultDict:Dictionary<String, Any> = result as! Dictionary
|
cb38bc90
liangchengyou
feat:视频跟读逻辑处理
|
139
|
resultData! = resultDict;
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
140
141
142
143
144
145
146
|
self.evaluateResult()
}
/**
评测失败回调
*/
func oralEvaluatingDidEndError(_ error: Error?, requestId request_id: String?) {
|
45390cfc
liangchengyou
feat:失败回调
|
147
148
149
150
151
|
let nsError = error as? NSError
var map = Dictionary<String, Any>()
map["code"] = nsError?.code
map["message"] = error?.localizedDescription
messageChannel!.invokeMethod("voiceFail", arguments:map)
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
152
153
154
155
156
157
|
}
/**
VAD(前置时间)超时回调
*/
func oralEvaluatingDidVADFrontTimeOut() {
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
158
|
SSOralEvaluatingManager.share().cancelEvaluate()
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
159
160
161
162
163
164
|
}
/**
VAD(后置时间)超时回调
*/
func oralEvaluatingDidVADBackTimeOut() {
|
e3c2820c
liangchengyou
feat:先声SDK逻辑调整
|
165
166
167
168
|
///结束回调
SSOralEvaluatingManager.share().stopEvaluate();
}
}
|