您不能選擇超過 %s 個話題 話題必須以字母或數字為開頭,可包含連接號 ('-') 且最長為 35 個字
 
 
 
 
 
 

74 行
2.0 KiB

  1. // ignore: camel_case_types
  2. import 'dart:convert';
  3. class Xunfei_AudioTranslation_Result_Text_Item {
  4. final int sn;
  5. final String pgs;
  6. final List<int> rg;
  7. final List<dynamic> ws;
  8. Xunfei_AudioTranslation_Result_Text_Item({
  9. required this.sn,
  10. required this.pgs,
  11. required this.rg,
  12. required this.ws,
  13. });
  14. }
  15. //同声翻译 返回的 文本结果处理对象
  16. // ignore: camel_case_types
  17. class Xunfei_AudioTranslation_Result_Text {
  18. final Map<int, Xunfei_AudioTranslation_Result_Text_Item> results = {};
  19. Xunfei_AudioTranslation_Result_Text();
  20. void add(String result) {
  21. print("添加文本结果:$result");
  22. var resultMap = json.decode(result);
  23. int sn = resultMap["sn"] as int;
  24. String pgs = resultMap["pgs"] as String;
  25. List<int> rg = resultMap["rg"] != null
  26. ? List<int>.from(resultMap["rg"])
  27. : []; // 默认值为空列表
  28. List<dynamic> ws = resultMap["ws"] as List<dynamic>;
  29. var item = Xunfei_AudioTranslation_Result_Text_Item(
  30. sn: sn, pgs: pgs, rg: rg, ws: ws);
  31. results[sn] = item;
  32. }
  33. String result() {
  34. if (results.isNotEmpty) {
  35. String resultStr = "";
  36. Map<int, Xunfei_AudioTranslation_Result_Text_Item> _results = {};
  37. var sortedKeys = results.keys.toList()..sort();
  38. for (var key in sortedKeys) {
  39. var item = results[key];
  40. if (item != null) {
  41. if (item.pgs == "rpl") {
  42. var start = item.rg[0];
  43. var end = item.rg[1];
  44. for (int i = start; i <= end; i++) {
  45. _results.remove(i);
  46. }
  47. }
  48. _results[item.sn] = item;
  49. }
  50. }
  51. var keys = _results.keys.toList()..sort();
  52. for (var key in keys) {
  53. var item = results[key];
  54. if (item != null) {
  55. for (var ws in item.ws) {
  56. var it = ws as Map<String, dynamic>;
  57. var cw = it["cw"] as List<dynamic>;
  58. for (var ct in cw) {
  59. resultStr += ct["w"] as String;
  60. }
  61. }
  62. }
  63. }
  64. return resultStr;
  65. }
  66. return "";
  67. }
  68. }