You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

75 line
2.0 KiB

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