提交 2830ee85 作者: 王苏进

feat: 语音识别相关

上级 49603dc4
......@@ -53,6 +53,7 @@ class AivoicePlugin: FlutterPlugin, MethodCallHandler, EventChannel.StreamHandle
asrConfig = call.arguments as Map<String, String>?
// 现有的实现
asrCenter.initEngineBtnClicked()
asrCenter.startEngineBtnClicked()
}
"stopEngine" -> {
// 现有的实现
......@@ -63,12 +64,16 @@ class AivoicePlugin: FlutterPlugin, MethodCallHandler, EventChannel.StreamHandle
asrCenter.uninitEngineBtnClicked()
}
"startOrStopEngine" -> {
// 现有的实现
asrCenter.startEngineBtnClicked()
if(call.arguments == true) {
asrCenter.startEngineBtnClicked()
} else {
asrCenter.stopEngineBtnClicked()
}
}
"prepareEnvironment" -> {
val re = SpeechEngineGenerator.PrepareEnvironment(context, context as Application?)
println("prepare:===>$re")
}
"ttsStartEngineBtnClick" -> {
println("来自安卓")
......@@ -106,6 +111,7 @@ class AivoicePlugin: FlutterPlugin, MethodCallHandler, EventChannel.StreamHandle
}
"destoryAsrVoice" -> {
// 空实现
asrCenter.destroy();
result.success(null)
}
else -> {
......@@ -128,8 +134,9 @@ class AivoicePlugin: FlutterPlugin, MethodCallHandler, EventChannel.StreamHandle
this.events = null
}
fun sendMessageToFlutter(message: Map<*, *>?) {
private fun sendMessageToFlutter(message: Map<*, *>?) {
if (events != null) {
context.run { }
events?.success(message)
}
}
......
......@@ -10,6 +10,7 @@ import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Environment;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
//import androidx.lifecycle.LifecycleObserver;
//import androidx.lifecycle.ProcessLifecycleOwner;
......@@ -122,7 +123,7 @@ public class AsrCenter implements SpeechEngine.SpeechListener {
}
public void onDestroy() {
public void destroy() {
Log.i(SpeechDemoDefines.TAG, "Asr onDestroy");
uninitEngine();
......@@ -324,6 +325,7 @@ public class AsrCenter implements SpeechEngine.SpeechListener {
public void startEngineBtnClicked() {
Log.i(SpeechDemoDefines.TAG, "配置启动参数.");
configStartAsrParams();
//【可选配置】是否启用云端自动判停,仅一句话识别场景生效
Log.i(SpeechDemoDefines.TAG, "开启 ASR 云端自动判停");
......@@ -488,29 +490,37 @@ public class AsrCenter implements SpeechEngine.SpeechListener {
mFinishTalkingTimestamp = 0;
}
final long response_delay = delay;
try {
// 从回调的 json 数据中解析 ASR 结果
JSONObject reader = new JSONObject(data);
if (!reader.has("result")) {
return;
}
String text = reader.getJSONArray("result").getJSONObject(0).getString("text");
if (text.isEmpty()) {
return;
}
text = "result: " + text;
if (isFinal) {
text += "\nreqid: " + reader.getString("reqid");
text += "\nresponse_delay: " + response_delay;
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
try {
// 从回调的 json 数据中解析 ASR 结果
JSONObject reader = new JSONObject(data);
if (!reader.has("result")) {
return;
}
String text = reader.getJSONArray("result").getJSONObject(0).getString("text");
if (text.isEmpty()) {
return;
}
text = "result: " + text;
if (isFinal) {
text += "\nreqid: " + reader.getString("reqid");
text += "\nresponse_delay: " + response_delay;
}
Map<String, Object> map = new HashMap<>();
map.put("text",text);
map.put("isFinal", isFinal);
_callback.onRevive(map);
setResultText(text);
} catch (JSONException e) {
e.printStackTrace();
}
}
Map<String, Object> map = new HashMap<>();
map.put("text",text);
map.put("isFinal", isFinal);
_callback.onRevive(map);
setResultText(text);
} catch (JSONException e) {
e.printStackTrace();
}
});
}
public void speechError(final String data) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论