diff --git a/dsLightRag/KeDaXunFei/XunFeiAudioEvaluator.py b/dsLightRag/KeDaXunFei/XunFeiAudioEvaluator.py index 467244aa..db12e875 100644 --- a/dsLightRag/KeDaXunFei/XunFeiAudioEvaluator.py +++ b/dsLightRag/KeDaXunFei/XunFeiAudioEvaluator.py @@ -61,13 +61,22 @@ class XunFeiAudioEvaluator: def on_message(self, ws, message): """WebSocket消息处理""" print(f"Received message: {message}") - data = json.loads(message) - - # 检查是否存在错误码 - if data.get("code") != 0: - print(f"API错误: {data.get('message', '未知错误')}") - ws.close() - return + try: + data = json.loads(message) + if data.get('code') != 0: + self.results = {'error': data.get('message', 'Unknown error')} + return + + # 修复:移除状态码为2的硬性检查,只要有数据就解析 + inner_data = data.get('data', {}) + xml_b64 = inner_data.get('data', '') + if xml_b64: + xml_data = base64.b64decode(xml_b64) + xml_content = xml_data.decode("utf-8") + self.parse_evaluation_results(xml_content) # 确保中文也能进入解析 + except Exception as e: + print(f"Error processing message: {e}") + self.results = {'error': str(e)} # 安全获取data字段 response_data = data.get("data", {}) @@ -158,8 +167,23 @@ class XunFeiAudioEvaluator: time.sleep(0.04) def parse_evaluation_results(self, xml_content): + root = ET.fromstring(xml_content) + # 兼容中英文不同的根节点 + read_node = root.find('.//read_sentence') or root.find('.//read_chapter') + if read_node is not None: + self.results = { + 'total_score': read_node.attrib.get('total_score', '0'), + 'accuracy': read_node.attrib.get('accuracy_score', '0'), + 'fluency': read_node.attrib.get('fluency_score', '0'), + 'integrity': read_node.attrib.get('integrity_score', '0') + } + else: + # 打印未匹配的XML结构用于调试 + print(f"No evaluation nodes found in XML: {xml_content}") + self.results = {'error': '未找到有效评分节点'} """解析评测结果XML并提取得分信息""" try: + print(xml_content) root = ET.fromstring(xml_content) # 查找read_chapter节点 diff --git a/dsLightRag/KeDaXunFei/__pycache__/XunFeiAudioEvaluator.cpython-310.pyc b/dsLightRag/KeDaXunFei/__pycache__/XunFeiAudioEvaluator.cpython-310.pyc index 428e6d43..4acba31c 100644 Binary files a/dsLightRag/KeDaXunFei/__pycache__/XunFeiAudioEvaluator.cpython-310.pyc and b/dsLightRag/KeDaXunFei/__pycache__/XunFeiAudioEvaluator.cpython-310.pyc differ diff --git a/dsLightRag/static/audio/audio_1b1c1b1f92584b55a5ffd2146989dda3.wav b/dsLightRag/static/audio/audio_1b1c1b1f92584b55a5ffd2146989dda3.wav new file mode 100644 index 00000000..cac384ff Binary files /dev/null and b/dsLightRag/static/audio/audio_1b1c1b1f92584b55a5ffd2146989dda3.wav differ diff --git a/dsLightRag/static/audio/audio_1b2f55ad68294cd7b7ad92855dc472a3.wav b/dsLightRag/static/audio/audio_1b2f55ad68294cd7b7ad92855dc472a3.wav new file mode 100644 index 00000000..8ba56799 Binary files /dev/null and b/dsLightRag/static/audio/audio_1b2f55ad68294cd7b7ad92855dc472a3.wav differ diff --git a/dsLightRag/static/audio/audio_20a9bf39f251448bbce03c28234add3d.wav b/dsLightRag/static/audio/audio_20a9bf39f251448bbce03c28234add3d.wav new file mode 100644 index 00000000..326b41de Binary files /dev/null and b/dsLightRag/static/audio/audio_20a9bf39f251448bbce03c28234add3d.wav differ diff --git a/dsLightRag/static/audio/audio_2df2cb8caf0d46ccaf3be5f5b37a26ce.wav b/dsLightRag/static/audio/audio_2df2cb8caf0d46ccaf3be5f5b37a26ce.wav new file mode 100644 index 00000000..c158dbea Binary files /dev/null and b/dsLightRag/static/audio/audio_2df2cb8caf0d46ccaf3be5f5b37a26ce.wav differ diff --git a/dsLightRag/static/audio/audio_8986c1cb60234f7692a3fbfacdb920e6.wav b/dsLightRag/static/audio/audio_8986c1cb60234f7692a3fbfacdb920e6.wav new file mode 100644 index 00000000..b5284c32 Binary files /dev/null and b/dsLightRag/static/audio/audio_8986c1cb60234f7692a3fbfacdb920e6.wav differ diff --git a/dsLightRag/static/audio/audio_8e7bdfb77bbb4acdb4ae385a195a40f4.wav b/dsLightRag/static/audio/audio_8e7bdfb77bbb4acdb4ae385a195a40f4.wav new file mode 100644 index 00000000..e5c72a4a Binary files /dev/null and b/dsLightRag/static/audio/audio_8e7bdfb77bbb4acdb4ae385a195a40f4.wav differ diff --git a/dsLightRag/static/audio/audio_929659d30cb54668b76185956a0481eb.wav b/dsLightRag/static/audio/audio_929659d30cb54668b76185956a0481eb.wav new file mode 100644 index 00000000..a5f092bc Binary files /dev/null and b/dsLightRag/static/audio/audio_929659d30cb54668b76185956a0481eb.wav differ diff --git a/dsLightRag/static/audio/audio_9d87bc5df79847608cb985e3ed119330.wav b/dsLightRag/static/audio/audio_9d87bc5df79847608cb985e3ed119330.wav new file mode 100644 index 00000000..267e651d Binary files /dev/null and b/dsLightRag/static/audio/audio_9d87bc5df79847608cb985e3ed119330.wav differ diff --git a/dsLightRag/static/audio/audio_d2169f26cad44f7097d4a761dbc26325.wav b/dsLightRag/static/audio/audio_d2169f26cad44f7097d4a761dbc26325.wav new file mode 100644 index 00000000..4f4851ad Binary files /dev/null and b/dsLightRag/static/audio/audio_d2169f26cad44f7097d4a761dbc26325.wav differ diff --git a/dsLightRag/static/audio/audio_e6905469ec344cc1adb4555c1b90f3cd.wav b/dsLightRag/static/audio/audio_e6905469ec344cc1adb4555c1b90f3cd.wav new file mode 100644 index 00000000..c2f0a731 Binary files /dev/null and b/dsLightRag/static/audio/audio_e6905469ec344cc1adb4555c1b90f3cd.wav differ