From d8ecfd0d91d5c84efae55d1e14f538327f9a4341 Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Fri, 5 Sep 2025 20:28:18 +0800 Subject: [PATCH] 'commit' --- dsLightRag/KeDaXunFei/1.mp3 | Bin 0 -> 7677 bytes dsLightRag/KeDaXunFei/XunFeiAudioEvaluator.py | 269 +++++++++++++++ .../XunFeiAudioEvaluator.cpython-310.pyc | Bin 0 -> 7210 bytes dsLightRag/KeDaXunFei/参数说明.txt | 240 +++++++++++++ dsLightRag/KeDaXunFei/文档.txt | 8 + dsLightRag/KeDaXunFei/评测结果.txt | 55 +++ dsLightRag/Routes/XunFeiRoute.py | 140 ++++++++ .../__pycache__/XunFeiRoute.cpython-310.pyc | Bin 0 -> 3875 bytes dsLightRag/Start.py | 2 + .../static/XunFei/audio_evaluation.html | 318 ++++++++++++++++++ 10 files changed, 1032 insertions(+) create mode 100644 dsLightRag/KeDaXunFei/1.mp3 create mode 100644 dsLightRag/KeDaXunFei/XunFeiAudioEvaluator.py create mode 100644 dsLightRag/KeDaXunFei/__pycache__/XunFeiAudioEvaluator.cpython-310.pyc create mode 100644 dsLightRag/KeDaXunFei/参数说明.txt create mode 100644 dsLightRag/KeDaXunFei/文档.txt create mode 100644 dsLightRag/KeDaXunFei/评测结果.txt create mode 100644 dsLightRag/Routes/XunFeiRoute.py create mode 100644 dsLightRag/Routes/__pycache__/XunFeiRoute.cpython-310.pyc create mode 100644 dsLightRag/static/XunFei/audio_evaluation.html diff --git a/dsLightRag/KeDaXunFei/1.mp3 b/dsLightRag/KeDaXunFei/1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..d0e6901380eaa1a8c547156ab784aa0382c0d003 GIT binary patch literal 7677 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 "entirety" +ise_unite string 否 返回结果控制 +0:不控制(默认值) +1:控制(extra_ability参数将影响全维度等信息的返回) "0" +plev string 否 在rst="entirety"(默认值)且ise_unite="0"(默认值)的情况下plev的取值不同对返回结果有影响。 +plev:0(给出全部信息,汉语包含rec_node_type、perr_msg、fluency_score、phone_score信息的返回;英文包含accuracy_score、serr_msg、 syll_accent、fluency_score、standard_score、pitch信息的返回) "0" +请求参数示例: + +第一次数据发送: + +{ + "common": { + "app_id": "xxxxxxx" + }, + "business": { + "aue": "raw", + "auf": "audio/L16;rate=16000", + "category": "read_sentence", + "cmd": "ssb", + "ent": "en_vip", + "sub": "ise", + "text": "[content]When you don't know what you're doing, it's helpful to begin by learning about what you should not do. ", + "ttp_skip": true + }, + "data": { + "status": 0 + } +} +#请求数据音频参数(data) +参数名 类型 必传 描述 示例 +data string 是 音频数据,base64编码 音频数据,base64编码后作为值 +status string 是 发送数据的状态 +第一次为0 +中间数据为1 +最后一次为2 根据发送数据的状态改变值 +后续数据发送 + +{ + "business": { + "cmd": "auw", + "aus":1 + }, + "data": { + "status": 1, + "data":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4K" + } +} + +#返回参数 +#请求数据音频返回参数说明 +返回参数名称 类型 描述 +sid string 本次会话的id,同一次会话返回的sid相同 +code int 返回码,0 表示请求成功,遇到其他的错误码时表示请求失败,客户端应该立即断开连接结束会话, +错误码列表详情见错误码 +message string 出错时具体的错误描述类型 +data object 返回的数据 +data.data string 评测结果,base64字符串,解析后为xml格式 +status int 返回结果的状态,当status=2时,表示所有结果全部返回,客户端应该以status=2时的结果为最终结果。 +返回示例: + +{ + "code": 0, + "message": "success", + "sid": "isexxxxxxxxxxxxxxxxxxxxxxxxx", + "data": { + "status": 2, + "data": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KICA8eG1sX3Jlc3VsdD4KICAgICAgPHJlYWRfc2VudGVuY2UgbGFuPSJjbiIgdHlwZT0ic3R1ZHkiIHZlcnNpb249IjcsMCwwLDEwMjQiPgogICAgICAgICAgPHJlY19wYXBlcj4KICAgICAgICAgICAgICA8cmVhZF9zZW50ZW5jZSBhY2N1cmFjeV9zY29yZT0iMTAwLjAwMDAwMCIgYmVnX3Bvcz0iMCIgY29udGVudD0i5LuK5aSp5aSp5rCU5oCO5LmI5qC344CCIiBlbW90aW9uX3Njb3JlPSI4Ny4zMTUzNjEiIGVuZF9wb3M9IjE1MCIgZXhjZXB0X2luZm89IjAiIGZsdWVuY3lfc2NvcmU9Ijg3LjYyMDMwMCIgaW50ZWdyaXR5X3Njb3JlPSIxMDAuMDAwMDAwIiBpc19yZWplY3RlZD0iZmFsc2UiIHBob25lX3Njb3JlPSIxMDAuMDAwMDAwIiB0aW1lX2xlbj0iMTUwIiB0b25lX3Njb3JlPSIxMDAuMDAwMDAwIiB0b3RhbF9zY29yZT0iOTIuNTExMjAwIj4KICAgICAgICAgICAgICAgICAgPHNlbnRlbmNlIGJlZ19wb3M9IjAiIGNvbnRlbnQ9IuS7iuWkqeWkqeawlOaAjuS5iOagtyIgZW5kX3Bvcz0iMTUwIiBmbHVlbmN5X3Njb3JlPSIwLjAwMDAwMCIgcGhvbmVfc2NvcmU9IjEwMC4wMDAwMDAiIHRpbWVfbGVuPSIxNTAiIHRvbmVfc2NvcmU9IjEwMC4wMDAwMDAiIHRvdGFsX3Njb3JlPSI4Ni45NTk5ODQiPgogICAgICAgICAgICAgICAgICAgICAgPHdvcmQgYmVnX3Bvcz0iMCIgY29udGVudD0i5LuKIiBlbmRfcG9zPSIyMiIgc3ltYm9sPSJqaW4xIiB0aW1lX2xlbj0iMjIiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzeWxsIGJlZ19wb3M9IjAiIGNvbnRlbnQ9ImZpbCIgZHBfbWVzc2FnZT0iMzIiIGVuZF9wb3M9IjEiIHJlY19ub2RlX3R5cGU9ImZpbCIgdGltZV9sZW49IjEiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGhvbmUgYmVnX3Bvcz0iMCIgY29udGVudD0iZmlsIiBkcF9tZXNzYWdlPSIzMiIgZW5kX3Bvcz0iMSIgcmVjX25vZGVfdHlwZT0iZmlsIiB0aW1lX2xlbj0iMSI+PC9waG9uZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N5bGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN5bGwgYmVnX3Bvcz0iMSIgY29udGVudD0i5LuKIiBkcF9tZXNzYWdlPSIwIiBlbmRfcG9zPSIyMiIgcmVjX25vZGVfdHlwZT0icGFwZXIiIHN5bWJvbD0iamluMSIgdGltZV9sZW49IjIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBob25lIGJlZ19wb3M9IjEiIGNvbnRlbnQ9ImoiIGRwX21lc3NhZ2U9IjAiIGVuZF9wb3M9IjQiIGlzX3l1bj0iMCIgcGVycl9sZXZlbF9tc2c9IjIiIHBlcnJfbXNnPSIwIiByZWNfbm9kZV90eXBlPSJwYXBlciIgdGltZV9sZW49IjMiPjwvcGhvbmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwaG9uZSBiZWdfcG9zPSI0IiBjb250ZW50PSJpbiIgZHBfbWVzc2FnZT0iMCIgZW5kX3Bvcz0iMjIiIGlzX3l1bj0iMSIgbW9ub190b25lPSJUT05FMSIgcGVycl9sZXZlbF9tc2c9IjEiIHBlcnJfbXNnPSIwIiByZWNfbm9kZV90eXBlPSJwYXBlciIgdGltZV9sZW49IjE4Ij48L3Bob25lPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3lsbD4KICAgICAgICAgICAgICAgICAgICAgIDwvd29yZD4KICAgICAgICAgICAgICAgICAgICAgIDx3b3JkIGJlZ19wb3M9IjIyIiBjb250ZW50PSLlpKkiIGVuZF9wb3M9IjQwIiBzeW1ib2w9InRpYW4xIiB0aW1lX2xlbj0iMTgiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzeWxsIGJlZ19wb3M9IjIyIiBjb250ZW50PSLlpKkiIGRwX21lc3NhZ2U9IjAiIGVuZF9wb3M9IjQwIiByZWNfbm9kZV90eXBlPSJwYXBlciIgc3ltYm9sPSJ0aWFuMSIgdGltZV9sZW49IjE4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBob25lIGJlZ19wb3M9IjIyIiBjb250ZW50PSJ0IiBkcF9tZXNzYWdlPSIwIiBlbmRfcG9zPSIzMCIgaXNfeXVuPSIwIiBwZXJyX2xldmVsX21zZz0iMSIgcGVycl9tc2c9IjAiIHJlY19ub2RlX3R5cGU9InBhcGVyIiB0aW1lX2xlbj0iOCI+PC9waG9uZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBob25lIGJlZ19wb3M9IjMwIiBjb250ZW50PSJpYW4iIGRwX21lc3NhZ2U9IjAiIGVuZF9wb3M9IjQwIiBpc195dW49IjEiIG1vbm9fdG9uZT0iVE9ORTEiIHBlcnJfbGV2ZWxfbXNnPSIxIiBwZXJyX21zZz0iMCIgcmVjX25vZGVfdHlwZT0icGFwZXIiIHRpbWVfbGVuPSIxMCI+PC9waG9uZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N5bGw+CiAgICAgICAgICAgICAgICAgICAgICA8L3dvcmQ+CiAgICAgICAgICAgICAgICAgICAgICA8d29yZCBiZWdfcG9zPSI0MCIgY29udGVudD0i5aSpIiBlbmRfcG9zPSI1OCIgc3ltYm9sPSJ0aWFuMSIgdGltZV9sZW49IjE4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3lsbCBiZWdfcG9zPSI0MCIgY29udGVudD0i5aSpIiBkcF9tZXNzYWdlPSIwIiBlbmRfcG9zPSI1OCIgcmVjX25vZGVfdHlwZT0icGFwZXIiIHN5bWJvbD0idGlhbjEiIHRpbWVfbGVuPSIxOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwaG9uZSBiZWdfcG9zPSI0MCIgY29udGVudD0idCIgZHBfbWVzc2FnZT0iMCIgZW5kX3Bvcz0iNDYiIGlzX3l1bj0iMCIgcGVycl9sZXZlbF9tc2c9IjEiIHBlcnJfbXNnPSIwIiByZWNfbm9kZV90eXBlPSJwYXBlciIgdGltZV9sZW49IjYiPjwvcGhvbmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwaG9uZSBiZWdfcG9zPSI0NiIgY29udGVudD0iaWFuIiBkcF9tZXNzYWdlPSIwIiBlbmRfcG9zPSI1OCIgaXNfeXVuPSIxIiBtb25vX3RvbmU9IlRPTkUxIiBwZXJyX2xldmVsX21zZz0iMSIgcGVycl9tc2c9IjAiIHJlY19ub2RlX3R5cGU9InBhcGVyIiB0aW1lX2xlbj0iMTIiPjwvcGhvbmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zeWxsPgogICAgICAgICAgICAgICAgICAgICAgPC93b3JkPgogICAgICAgICAgICAgICAgICAgICAgPHdvcmQgYmVnX3Bvcz0iNTgiIGNvbnRlbnQ9IuawlCIgZW5kX3Bvcz0iNzQiIHN5bWJvbD0icWk5IiB0aW1lX2xlbj0iMTYiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzeWxsIGJlZ19wb3M9IjU4IiBjb250ZW50PSLmsJQiIGRwX21lc3NhZ2U9IjAiIGVuZF9wb3M9Ijc0IiByZWNfbm9kZV90eXBlPSJwYXBlciIgc3ltYm9sPSJxaTAiIHRpbWVfbGVuPSIxNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwaG9uZSBiZWdfcG9zPSI1OCIgY29udGVudD0icSIgZHBfbWVzc2FnZT0iMCIgZW5kX3Bvcz0iNjYiIGlzX3l1bj0iMCIgcGVycl9sZXZlbF9tc2c9IjEiIHBlcnJfbXNnPSIwIiByZWNfbm9kZV90eXBlPSJwYXBlciIgdGltZV9sZW49IjgiPjwvcGhvbmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwaG9uZSBiZWdfcG9zPSI2NiIgY29udGVudD0iaSIgZHBfbWVzc2FnZT0iMCIgZW5kX3Bvcz0iNzQiIGlzX3l1bj0iMSIgbW9ub190b25lPSJUT05FMCIgcGVycl9sZXZlbF9tc2c9IjEiIHBlcnJfbXNnPSIwIiByZWNfbm9kZV90eXBlPSJwYXBlciIgdGltZV9sZW49IjgiPjwvcGhvbmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zeWxsPgogICAgICAgICAgICAgICAgICAgICAgPC93b3JkPgogICAgICAgICAgICAgICAgICAgICAgPHdvcmQgYmVnX3Bvcz0iNzQiIGNvbnRlbnQ9IuaAjiIgZW5kX3Bvcz0iODQiIHN5bWJvbD0iemVuMyIgdGltZV9sZW49IjEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3lsbCBiZWdfcG9zPSI3NCIgY29udGVudD0i5oCOIiBkcF9tZXNzYWdlPSIwIiBlbmRfcG9zPSI4NCIgcmVjX25vZGVfdHlwZT0icGFwZXIiIHN5bWJvbD0iemVuMyIgdGltZV9sZW49IjEwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBob25lIGJlZ19wb3M9Ijc0IiBjb250ZW50PSJ6IiBkcF9tZXNzYWdlPSIwIiBlbmRfcG9zPSI3OSIgaXNfeXVuPSIwIiBwZXJyX2xldmVsX21zZz0iMSIgcGVycl9tc2c9IjAiIHJlY19ub2RlX3R5cGU9InBhcGVyIiB0aW1lX2xlbj0iNSI+PC9waG9uZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBob25lIGJlZ19wb3M9Ijc5IiBjb250ZW50PSJlbiIgZHBfbWVzc2FnZT0iMCIgZW5kX3Bvcz0iODQiIGlzX3l1bj0iMSIgbW9ub190b25lPSJUT05FMyIgcGVycl9sZXZlbF9tc2c9IjIiIHBlcnJfbXNnPSIwIiByZWNfbm9kZV90eXBlPSJwYXBlciIgdGltZV9sZW49IjUiPjwvcGhvbmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zeWxsPgogICAgICAgICAgICAgICAgICAgICAgPC93b3JkPgogICAgICAgICAgICAgICAgICAgICAgPHdvcmQgYmVnX3Bvcz0iODQiIGNvbnRlbnQ9IuS5iCIgZW5kX3Bvcz0iOTMiIHN5bWJvbD0ibWU1IiB0aW1lX2xlbj0iOSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN5bGwgYmVnX3Bvcz0iODQiIGNvbnRlbnQ9IuS5iCIgZHBfbWVzc2FnZT0iMCIgZW5kX3Bvcz0iOTMiIHJlY19ub2RlX3R5cGU9InBhcGVyIiBzeW1ib2w9Im1lMCIgdGltZV9sZW49IjkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGhvbmUgYmVnX3Bvcz0iODQiIGNvbnRlbnQ9Im0iIGRwX21lc3NhZ2U9IjAiIGVuZF9wb3M9Ijg4IiBpc195dW49IjAiIHBlcnJfbGV2ZWxfbXNnPSIxIiBwZXJyX21zZz0iMCIgcmVjX25vZGVfdHlwZT0icGFwZXIiIHRpbWVfbGVuPSI0Ij48L3Bob25lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGhvbmUgYmVnX3Bvcz0iODgiIGNvbnRlbnQ9ImUiIGRwX21lc3NhZ2U9IjAiIGVuZF9wb3M9IjkzIiBpc195dW49IjEiIG1vbm9fdG9uZT0iVE9ORTAiIHBlcnJfbGV2ZWxfbXNnPSIxIiBwZXJyX21zZz0iMCIgcmVjX25vZGVfdHlwZT0icGFwZXIiIHRpbWVfbGVuPSI1Ij48L3Bob25lPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3lsbD4KICAgICAgICAgICAgICAgICAgICAgIDwvd29yZD4KICAgICAgICAgICAgICAgICAgICAgIDx3b3JkIGJlZ19wb3M9IjkzIiBjb250ZW50PSLmoLciIGVuZF9wb3M9IjE1MCIgc3ltYm9sPSJ5YW5nNCIgdGltZV9sZW49IjU3Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3lsbCBiZWdfcG9zPSI5MyIgY29udGVudD0i5qC3IiBkcF9tZXNzYWdlPSIwIiBlbmRfcG9zPSIxMTIiIHJlY19ub2RlX3R5cGU9InBhcGVyIiBzeW1ib2w9Inlhbmc0IiB0aW1lX2xlbj0iMTkiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGhvbmUgYmVnX3Bvcz0iOTMiIGNvbnRlbnQ9Il9pIiBkcF9tZXNzYWdlPSIwIiBlbmRfcG9zPSI5NiIgaXNfeXVuPSIwIiBwZXJyX2xldmVsX21zZz0iMSIgcGVycl9tc2c9IjAiIHJlY19ub2RlX3R5cGU9InBhcGVyIiB0aW1lX2xlbj0iMyI+PC9waG9uZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBob25lIGJlZ19wb3M9Ijk2IiBjb250ZW50PSJpYW5nIiBkcF9tZXNzYWdlPSIwIiBlbmRfcG9zPSIxMTIiIGlzX3l1bj0iMSIgbW9ub190b25lPSJUT05FNCIgcGVycl9sZXZlbF9tc2c9IjEiIHBlcnJfbXNnPSIwIiByZWNfbm9kZV90eXBlPSJwYXBlciIgdGltZV9sZW49IjE2Ij48L3Bob25lPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3lsbD4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3lsbCBiZWdfcG9zPSIxMTIiIGNvbnRlbnQ9InNpbCIgZHBfbWVzc2FnZT0iMCIgZW5kX3Bvcz0iMTUwIiByZWNfbm9kZV90eXBlPSJzaWwiIHRpbWVfbGVuPSIzOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwaG9uZSBiZWdfcG9zPSIxMTIiIGNvbnRlbnQ9InNpbCIgZW5kX3Bvcz0iMTUwIiB0aW1lX2xlbj0iMzgiPjwvcGhvbmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zeWxsPgogICAgICAgICAgICAgICAgICAgICAgPC93b3JkPgogICAgICAgICAgICAgICAgICA8L3NlbnRlbmNlPgogICAgICAgICAgICAgIDwvcmVhZF9zZW50ZW5jZT4KICAgICAgICAgIDwvcmVjX3BhcGVyPgogICAgICA8L3JlYWRfc2VudGVuY2U+CiAgPC94bWxfcmVzdWx0Pg==" + } +} +#中文评测返回参数说明 +题型 节点 字段信息 +字、词题型(小学、成人) read_syllable +或者 +read_word phone_score:声韵分 +tone_score:调型分 +total_score:总分 【(phone_score + tone_score)/2】 +字、词题型(小学、成人) sentence 无重要信息 +字、词题型(小学、成人) word 无重要信息 +字、词题型(小学、成人) syll dp_message:0正常;16漏读;32增读;64回读;128替换; +字、词题型(小学、成人) phone dp_message:0正常;16漏读;32增读;64回读;128替换(当dp_message不为0时,perr_msg可能出现与dp_message值保持一致的情况); +mono_tone:调型 +perr_level_msg:返回检错结果的置信度(共1,2,3三个数值,1最好,3最差。如果出现为0的情况可以不考虑) +is_yun:0声母,1韵母: +当is_yun=0时:perr_msg有两种状态:0 声母正确 ;1 声母错误 +当is_yun=1时:perr_msg有四种状态:0韵母和调型均正确1韵母错误;2调型错误;3韵母和调型均错误; +句篇题型(小学) read_sentence 或者 read_chapter accuracy_score:准确度 +emotion_score:整体印象分(朗读是否清晰流畅,是否富有感情等) +fluency_score:流畅度分 +integrity_score:完整度分 +phone_score:声韵分 +tone_score:调型分 +total_score:总分【总分 = 准确度分*0.4 + 流畅度分*0.4 + 整体印象分*0.2】 +句篇题型(小学) sentence phone_score:声韵分 +tone_score:调型分 +total_score:总分【模型回归】 +句篇题型(小学) word 无重要信息 +句篇题型(小学) syll dp_message:0正常;16漏读;32增读;64回读;128替换; +句篇题型(小学) phone dp_message:0正常;16漏读;32增读;64回读;128替换(当dp_message不为0时,perr_msg可能出现与dp_message值保持一致的情况); +mono_tone:调型 +perr_level_msg:返回检错结果的置信度(共1,2,3三个数值,1最好,3最差。如果出现为0的情况可以不考虑) +is_yun:0声母,1韵母: +当is_yun=0时:perr_msg有两种状态:0 声母正确 ;1 声母错误 +当is_yun=1时:perr_msg有四种状态:0韵母和调型均正确1韵母错误;2调型错误;3韵母和调型均错误; +句篇题型(成人) read_sentence 或者 read_chapter fluency_score:流畅度分 +integrity_score:完整度分 +phone_score:声韵分 +tone_score:调型分 +total_score:总分【模型回归】 +句篇题型(成人) sentence phone_score:声韵分 +tone_score:调型分 +total_score:总分【模型回归】 +句篇题型(成人) word 无重要信息 +句篇题型(成人) syll dp_message:0正常;16漏读;32增读;64回读;128替换; +句篇题型(成人) phone dp_message:0正常;16漏读;32增读;64回读;128替换(当dp_message不为0时,perr_msg可能出现与dp_message值保持一致的情况); +mono_tone:调型 +perr_level_msg:返回检错结果的置信度(共1,2,3三个数值,1最好,3最差。如果出现为0的情况可以不考虑) +is_yun:0声母,1韵母: +当is_yun=0时:perr_msg有两种状态:0 声母正确 ;1 声母错误 +当is_yun=1时:perr_msg有四种状态:0韵母和调型均正确1韵母错误;2调型错误;3韵母和调型均错误; +#英文评测返回参数说明 +题型 节点 字段信息 +单词题型(成人) read_word 【成人单词】total_score:总分【模型回归】 +单词题型(成人) sentence 无重要信息 +单词题型(成人) word dp_message:0正常;16漏读;32增读;64回读;128替换; +total_score:每个词的分 +单词题型(成人) syll syll_score:每个音节的得分 +serr_msg:音节检错【1或者2049,则表示朗读错误;当serr_msg=2049时,表示音节和重音皆错】 +syll_accent:重读检错【如果为0,表明该音节无需重读,引擎也不做检测;为1,表明该音节需要重读,同时再去解析serr_msg,如果为2048或者2049,则表示朗读错误,效果优化中,可以不关注此情况】 +单词题型(成人) phone dp_message:0正常;16漏读;32增读;64回读;128替换; +句子、篇章题型(成人) read_sentence 或者 read_chapter accuracy_score:准确度分 +standard_score:标准度分 +fluency_score:流利度分 +integrity_score:完整度分 +【成人句子】 +total_score:总分 = (0.6*accuracy_score + fluency_score*0.3 + standard_score*0.1)* integrity_score/100 +【成人篇章】 +total_score:总分 = (0.5*accuracy_score + fluency_score*0.3 + standard_score*0.2)* integrity_score/100 +句子、篇章题型(成人) sentence accuracy_score:准确度分 +standard_score:标准度分 +fluency_score:流利度分 +【成人句子】 +total_score:总分 = (0.6*accuracy_score + fluency_score*0.3 + standard_score*0.1) +【成人篇章】 +total_score:总分 = (0.5*accuracy_score + fluency_score*0.3 + standard_score*0.2) +句子、篇章题型(成人) word dp_message:0正常;16漏读;32增读;64回读;128替换; +total_score:每个词的分 +停顿、连读、重读、句末升降调检错: +1. 将xml中word层property值的2进制与右表中Property值的2进制进行与运算。(效果优化中,无需关注) +2. 如果运算结果与上表Property值相等,说明此处进行了该类型的检测。若运算结果与上表Property值不等,则说明这里未进行任何检测。(效果优化中,无需关注) +3. 判断xml中word层是否出现werr_msg,若未出现,说明朗读正确。(效果优化中,无需关注) +4. 若出现,则将xml中werr_msg的值与上表Werr_msg对应的值进行与运算,若仍等于该类型的值,则说明该类型朗读错误。(效果优化中,无需关注) +句子、篇章题型(成人) syll syll_score:每个音节的得分 +serr_msg:音节检错【1或者2049,则表示朗读错误,效果优化中,可以不关注此情况】 +句子、篇章题型(成人) phone dp_message:0正常;16漏读;32增读;64回读;128替换; +情景反应 rec_paper total_score:总分【模型回归】 +故事复述-topic rec_paper total_score:总分【模型回归】 +复述题、口头翻译、要点题、看图说话 rec_paper accuracy_score:准确度分 +standard_score:标准度分 +fluency_score:流利度分 +integrity_score:完整度分 +total_score:总分【模型回归】 +口头作文 rec_paper total_score:总分【模型回归】 +# \ No newline at end of file diff --git a/dsLightRag/KeDaXunFei/文档.txt b/dsLightRag/KeDaXunFei/文档.txt new file mode 100644 index 00000000..e8d6d8db --- /dev/null +++ b/dsLightRag/KeDaXunFei/文档.txt @@ -0,0 +1,8 @@ +Websocket服务接口认证信息 +APPID +5b83f8d6 +APISecret +604fa6cb9c5ab664a0d153fe0ccc6802 +APIKey +5beb887923204000bfcb402046bb05a6 +*SDK调用方式只需APPID。APIKey或APISecret适用于WebAPI调用方式。 \ No newline at end of file diff --git a/dsLightRag/KeDaXunFei/评测结果.txt b/dsLightRag/KeDaXunFei/评测结果.txt new file mode 100644 index 00000000..a4be9c77 --- /dev/null +++ b/dsLightRag/KeDaXunFei/评测结果.txt @@ -0,0 +1,55 @@ +D:\anaconda3\envs\py310\python.exe D:\dsWork\dsProject\dsLightRag\KeDaXunFei\TestAudio.py +AnOp6W+XdH5vjjQRb+NQDtPD02VqtNCkfz8jAdi/rPI= +YXBpX2tleT0iNWJlYjg4NzkyMzIwNDAwMGJmY2I0MDIwNDZiYjA1YTYiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJlcXVlc3QtbGluZSIsIHNpZ25hdHVyZT0iQW5PcDZXK1hkSDV2ampRUmIrTlFEdFBEMDJWcXROQ2tmejhqQWRpL3JQST0i +WebSocket connection opened,,ws连接建立成功... +发送最后一帧 +Received message: {"code":0,"message":"success","sid":"ise000d05f4@gz19919aba9995095812","data":{"status":1,"data":null}} +Received message: {"code":0,"message":"success","sid":"ise000d05f4@gz19919aba9995095812","data":{"status":1,"data":null}} +Received message: {"code":0,"message":"success","sid":"ise000d05f4@gz19919aba9995095812","data":{"data":null,"status":1}} +Received message: {"code":0,"message":"success","sid":"ise000d05f4@gz19919aba9995095812","data":{"status":1,"data":null}} +Received message: {"code":0,"message":"success","sid":"ise000d05f4@gz19919aba9995095812","data":{"status":1,"data":null}} +Received message: {"code":0,"message":"success","sid":"ise000d05f4@gz19919aba9995095812","data":{"data":null,"status":1}} +Received message: {"code":0,"message":"success","sid":"ise000d05f4@gz19919aba9995095812","data":{"status":1,"data":null}} +Received message: {"code":0,"message":"success","sid":"ise000d05f4@gz19919aba9995095812","data":{"status":1,"data":null}} +Received message: {"code":0,"message":"success","sid":"ise000d05f4@gz19919aba9995095812","data":{"status":2,"data":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KICA8eG1sX3Jlc3VsdD4KICAgICAgPHJlYWRfc2VudGVuY2UgbGFuPSJlbiIgdHlwZT0ic3R1ZHkiIHZlcnNpb249IjcuMC4wLjEwMjAiPgogICAgICAgICAgPHJlY19wYXBlcj4KICAgICAgICAgICAgICA8cmVhZF9jaGFwdGVyIGFjY3VyYWN5X3Njb3JlPSI0Ljk5MTkxNSIgYmVnX3Bvcz0iMCIgY29udGVudD0ibmljZSB0byBtZWV0IHlvdS4iIGVuZF9wb3M9IjI0NiIgZXhjZXB0X2luZm89IjAiIGZsdWVuY3lfc2NvcmU9IjUuMDAwMDAwIiBpbnRlZ3JpdHlfc2NvcmU9IjUuMDAwMDAwIiBpc19yZWplY3RlZD0iZmFsc2UiIHJlamVjdF90eXBlPSIwIiBzY29yZV9wYXR0ZXJuPSJsb29zZSIgc3RhbmRhcmRfc2NvcmU9IjQuNDE1MTQyIiB0b3RhbF9zY29yZT0iNC45OTQzNDEiIHdvcmRfY291bnQ9IjQiPgogICAgICAgICAgICAgICAgICA8c2VudGVuY2UgYWNjdXJhY3lfc2NvcmU9IjQuNzQxOTE1IiBiZWdfcG9zPSIwIiBjb250ZW50PSJuaWNlIHRvIG1lZXQgeW91IiBlbmRfcG9zPSIyNDYiIGZsdWVuY3lfc2NvcmU9IjQuODI2MTA5IiBpbmRleD0iMCIgc3RhbmRhcmRfc2NvcmU9IjQuMTY1MTQyIiB0b3RhbF9zY29yZT0iNC43NjcxNzMiIHdvcmRfY291bnQ9IjQiPgogICAgICAgICAgICAgICAgICAgICAgPHdvcmQgYmVnX3Bvcz0iMzgiIGNvbnRlbnQ9Im5pY2UiIGRwX21lc3NhZ2U9IjAiIGVuZF9wb3M9Ijk2IiBnbG9iYWxfaW5kZXg9IjAiIGluZGV4PSIwIiBwaXRjaD0iICAxMjkuMjYgIDEyOS4yNiAgMTI4LjQ3ICAxMjkuMjMgIDEzMC41MSAgMTMxLjU0ICAxMzIuNjYgIDEzMy42MyAgMTM1LjA5ICAxMzYuNTQgIDEzNy45NSAgMTM5LjE2ICAxNDAuMTIgIDE0MS4xOCAgMTQyLjIzICAxNDMuMTQgIDE0My42NSAgMTQzLjUxICAxNDMuMTcgIDE0My43NCAgMTQ1LjYyIiBwaXRjaF9iZWc9IjYxIiBwaXRjaF9lbmQ9IjgyIiBwcm9wZXJ0eT0iMCIgdG90YWxfc2NvcmU9IjQuODQ2OTA1Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICA8c3lsbCBiZWdfcG9zPSIzOCIgY29udGVudD0ibiBheSBzIiBlbmRfcG9zPSI5NiIgc2Vycl9tc2c9IjAiIHN5bGxfYWNjZW50PSIwIiBzeWxsX3Njb3JlPSI0LjY0MTkzNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwaG9uZSBiZWdfcG9zPSIzOCIgY29udGVudD0ibiIgZHBfbWVzc2FnZT0iMCIgZW5kX3Bvcz0iNjIiIGd3cHA9Ii0wLjQ2MDU3MCI+PC9waG9uZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBob25lIGJlZ19wb3M9IjYyIiBjb250ZW50PSJheSIgZHBfbWVzc2FnZT0iMCIgZW5kX3Bvcz0iODAiIGd3cHA9Ii0wLjAwMTExOCI+PC9waG9uZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBob25lIGJlZ19wb3M9IjgwIiBjb250ZW50PSJzIiBkcF9tZXNzYWdlPSIwIiBlbmRfcG9zPSI5NiIgZ3dwcD0iLTAuNDg2NTAyIj48L3Bob25lPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3lsbD4KICAgICAgICAgICAgICAgICAgICAgIDwvd29yZD4KICAgICAgICAgICAgICAgICAgICAgIDx3b3JkIGJlZ19wb3M9Ijk2IiBjb250ZW50PSJ0byIgZHBfbWVzc2FnZT0iMCIgZW5kX3Bvcz0iMTE5IiBnbG9iYWxfaW5kZXg9IjEiIGluZGV4PSIxIiBwaXRjaD0iICAxMjguNzggIDEyOC43OCAgMTI5LjcwICAxMzIuNTMgIDEzMi45MSAgMTMyLjQ0ICAxMzEuMDAgIDEyOS42OCAgMTI2LjIxICAxMjUuNDQgIDEyNi45MCAgMTMxLjE5IiBwaXRjaF9iZWc9IjEwNyIgcGl0Y2hfZW5kPSIxMTkiIHByb3BlcnR5PSIwIiB0b3RhbF9zY29yZT0iNC44ODExNjYiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzeWxsIGJlZ19wb3M9Ijk2IiBjb250ZW50PSJ0IHV3IiBlbmRfcG9zPSIxMTkiIHNlcnJfbXNnPSIwIiBzeWxsX2FjY2VudD0iMCIgc3lsbF9zY29yZT0iNC43ODUyMTgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGhvbmUgYmVnX3Bvcz0iOTYiIGNvbnRlbnQ9InQiIGRwX21lc3NhZ2U9IjAiIGVuZF9wb3M9IjEwOSIgZ3dwcD0iLTAuMjA3MTk0Ij48L3Bob25lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGhvbmUgYmVnX3Bvcz0iMTA5IiBjb250ZW50PSJ1dyIgZHBfbWVzc2FnZT0iMCIgZW5kX3Bvcz0iMTE5IiBnd3BwPSItMC40NTMxOTUiPjwvcGhvbmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zeWxsPgogICAgICAgICAgICAgICAgICAgICAgPC93b3JkPgogICAgICAgICAgICAgICAgICAgICAgPHdvcmQgYmVnX3Bvcz0iMTE5IiBjb250ZW50PSJtZWV0IiBkcF9tZXNzYWdlPSIwIiBlbmRfcG9zPSIxNDYiIGdsb2JhbF9pbmRleD0iMiIgaW5kZXg9IjIiIHBpdGNoPSIgIDEzMi43MSAgMTMyLjcxICAxMzMuMDUgIDEzMy44MiAgMTM0LjY0ICAxMzUuNTggIDEzNy4wMyAgMTM4LjI1ICAxMzkuMzMgIDEzOS43MiAgMTQwLjIyICAxNDAuNjkgIDE0MC44MSAgMTQwLjYxICAxMzguMDYgIDEzNS44NSAgMTMxLjk3ICAxMzEuMTAgIDEzMC44NSAgMTMzLjIyICAxMzUuNjAgIDEzNy45OCAgMTM3LjQ4ICAxMzUuMzMgIDEzMS4zMiAgMTI4LjUxICAxMjUuNjgiIHBpdGNoX2JlZz0iMTE5IiBwaXRjaF9lbmQ9IjE0NiIgcHJvcGVydHk9IjAiIHRvdGFsX3Njb3JlPSI0Ljk2MzE3NyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgPHN5bGwgYmVnX3Bvcz0iMTE5IiBjb250ZW50PSJtIGl5IHQiIGVuZF9wb3M9IjE0NiIgc2Vycl9tc2c9IjAiIHN5bGxfYWNjZW50PSIwIiBzeWxsX3Njb3JlPSI0Ljk5NzM2NiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwaG9uZSBiZWdfcG9zPSIxMTkiIGNvbnRlbnQ9Im0iIGRwX21lc3NhZ2U9IjAiIGVuZF9wb3M9IjEyNiIgZ3dwcD0iLTAuMDAyMTkyIj48L3Bob25lPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGhvbmUgYmVnX3Bvcz0iMTI2IiBjb250ZW50PSJpeSIgZHBfbWVzc2FnZT0iMCIgZW5kX3Bvcz0iMTM2IiBnd3BwPSItMC4wMDAwMzgiPjwvcGhvbmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwaG9uZSBiZWdfcG9zPSIxMzYiIGNvbnRlbnQ9InQiIGRwX21lc3NhZ2U9IjAiIGVuZF9wb3M9IjE0NiIgZ3dwcD0iLTAuMDA2MDk3Ij48L3Bob25lPgogICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3lsbD4KICAgICAgICAgICAgICAgICAgICAgIDwvd29yZD4KICAgICAgICAgICAgICAgICAgICAgIDx3b3JkIGJlZ19wb3M9IjE0NiIgY29udGVudD0ieW91IiBkcF9tZXNzYWdlPSIwIiBlbmRfcG9zPSIxNzIiIGdsb2JhbF9pbmRleD0iMyIgaW5kZXg9IjMiIHBpdGNoPSIgIDEyMi41NSAgMTIyLjU1ICAxMjEuNzMgIDEyMS4yNyAgMTIxLjE2ICAxMjAuODcgIDEyMC40NyAgMTIwLjE4ICAxMjAuMTcgIDEyMC41OCAgMTIxLjI0ICAxMjIuMDYgIDEyMi43MyAgMTIzLjE3ICAxMjMuMzIgIDEyMy4yMCAgMTIyLjg5ICAxMjIuMTIgIDEyMS4yMCAgMTE5LjQ4ICAxMTcuMzYgIDExNS4yMyAgMTEzLjczIiBwaXRjaF9iZWc9IjE0NiIgcGl0Y2hfZW5kPSIxNjkiIHByb3BlcnR5PSIwIiB0b3RhbF9zY29yZT0iNC45NjM4NzgiPgogICAgICAgICAgICAgICAgICAgICAgICAgIDxzeWxsIGJlZ19wb3M9IjE0NiIgY29udGVudD0ieSB1dyIgZW5kX3Bvcz0iMTcyIiBzZXJyX21zZz0iMCIgc3lsbF9hY2NlbnQ9IjAiIHN5bGxfc2NvcmU9IjQuOTk5MzIxIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBob25lIGJlZ19wb3M9IjE0NiIgY29udGVudD0ieSIgZHBfbWVzc2FnZT0iMCIgZW5kX3Bvcz0iMTY2IiBnd3BwPSItMC4wMDAzMDUiPjwvcGhvbmU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwaG9uZSBiZWdfcG9zPSIxNjYiIGNvbnRlbnQ9InV3IiBkcF9tZXNzYWdlPSIwIiBlbmRfcG9zPSIxNzIiIGd3cHA9Ii0wLjAwMjA3NCI+PC9waG9uZT4KICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N5bGw+CiAgICAgICAgICAgICAgICAgICAgICA8L3dvcmQ+CiAgICAgICAgICAgICAgICAgIDwvc2VudGVuY2U+CiAgICAgICAgICAgICAgPC9yZWFkX2NoYXB0ZXI+CiAgICAgICAgICA8L3JlY19wYXBlcj4KICAgICAgPC9yZWFkX3NlbnRlbmNlPgogIDwveG1sX3Jlc3VsdD4="}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +WebSocket connection closed, +评测耗时: 0:00:01.489215 + +进程已结束,退出代码为 0 \ No newline at end of file diff --git a/dsLightRag/Routes/XunFeiRoute.py b/dsLightRag/Routes/XunFeiRoute.py new file mode 100644 index 00000000..e914d1d0 --- /dev/null +++ b/dsLightRag/Routes/XunFeiRoute.py @@ -0,0 +1,140 @@ +import logging +import os +import uuid +import time +from fastapi import APIRouter, HTTPException, BackgroundTasks, Query, UploadFile, File +from pydantic import BaseModel +from typing import Optional +import tempfile +from Util.ObsUtil import ObsUploader +from Config.Config import OBS_BUCKET, OBS_SERVER +from fastapi.responses import StreamingResponse +import requests + +# 导入讯飞语音评测类 +from KeDaXunFei.XunFeiAudioEvaluator import XunFeiAudioEvaluator + +# 配置日志 +logger = logging.getLogger(__name__) +router = APIRouter(prefix="/api/xunFei", tags=["讯飞"]) + +# 请求模型 +class AudioEvaluationRequest(BaseModel): + language: str = "chinese" # chinese 或 english + text: str # 评测文本内容 + group: Optional[str] = "adult" # 群体:adult, youth, pupil + check_type: Optional[str] = "common" # 检错严格程度:easy, common, hard + grade: Optional[str] = "middle" # 学段:junior, middle, senior + +# 响应模型 +class AudioEvaluationResponse(BaseModel): + evaluation_id: str + status: str + results: Optional[dict] = None + evaluation_time: Optional[float] = None + error_message: Optional[str] = None + +# 科大讯飞API配置(需要根据实际情况配置) +XUNFEI_CONFIG = { + "appid": "your_appid_here", + "api_key": "your_api_key_here", + "api_secret": "your_api_secret_here" +} + +@router.post("/evaluate-audio", response_model=AudioEvaluationResponse) +async def evaluate_audio( + background_tasks: BackgroundTasks, + language: str = Query("chinese", description="评测语言: chinese 或 english"), + text: str = Query(..., description="评测文本内容"), + group: str = Query("adult", description="群体类型: adult, youth, pupil"), + check_type: str = Query("common", description="检错严格程度: easy, common, hard"), + grade: str = Query("middle", description="学段: junior, middle, senior"), + audio_file: UploadFile = File(...)): + """ + 语音评测接口 - 支持中文和英文篇章朗读判分 + """ + try: + # 验证语言参数 + if language not in ["chinese", "english"]: + raise HTTPException(status_code=400, detail="language参数必须是'chinese'或'english'") + + # 验证群体参数 + if group not in ["adult", "youth", "pupil"]: + raise HTTPException(status_code=400, detail="group参数必须是'adult', 'youth'或'pupil'") + + # 创建临时文件保存上传的音频 + with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as temp_audio: + audio_content = await audio_file.read() + temp_audio.write(audio_content) + temp_audio_path = temp_audio.name + + # 创建评测器实例 + evaluator = XunFeiAudioEvaluator( + appid=XUNFEI_CONFIG["appid"], + api_key=XUNFEI_CONFIG["api_key"], + api_secret=XUNFEI_CONFIG["api_secret"], + audio_file=temp_audio_path + ) + + # 根据语言设置不同的评测参数 + if language == "chinese": + # 中文评测配置 + evaluator.business_params = { + "category": "read_chapter", + "ent": "cn_vip", + "group": group, + "check_type": check_type, + "grade": grade, + "text": '\uFEFF' + f"[content]\n{text}" + } + else: + # 英文评测配置 + evaluator.business_params = { + "category": "read_chapter", + "ent": "en_vip", + "text": '\uFEFF' + f"[content]\n{text}" + } + + # 运行评测 + results, eval_time = evaluator.run_evaluation() + + # 清理临时文件 + os.unlink(temp_audio_path) + + # 生成评测ID + evaluation_id = str(uuid.uuid4()) + + return AudioEvaluationResponse( + evaluation_id=evaluation_id, + status="success", + results=results, + evaluation_time=eval_time.total_seconds() if eval_time else None + ) + + except Exception as e: + logger.error(f"语音评测失败: {str(e)}") + # 确保临时文件被清理 + if 'temp_audio_path' in locals() and os.path.exists(temp_audio_path): + os.unlink(temp_audio_path) + + return AudioEvaluationResponse( + evaluation_id=str(uuid.uuid4()), + status="error", + error_message=f"评测失败: {str(e)}" + ) + +@router.get("/evaluation-result/{evaluation_id}") +async def get_evaluation_result(evaluation_id: str): + """ + 获取评测结果(示例接口,实际需要实现结果存储) + """ + # 这里需要实现从数据库或缓存中获取评测结果 + # 目前返回示例数据 + return { + "evaluation_id": evaluation_id, + "status": "completed", + "message": "请实现结果存储逻辑" + } + +# 需要修改XunFeiAudioEvaluator类以支持参数配置 +# 在XunFeiAudioEvaluator类中添加business_params属性并在on_open方法中使用 \ No newline at end of file diff --git a/dsLightRag/Routes/__pycache__/XunFeiRoute.cpython-310.pyc b/dsLightRag/Routes/__pycache__/XunFeiRoute.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c09079bdfa9c078f5267912622a9c8227e6bf3d5 GIT binary patch literal 3875 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 literal 0 HcmV?d00001 diff --git a/dsLightRag/Start.py b/dsLightRag/Start.py index 3b6e8b90..f8134e31 100644 --- a/dsLightRag/Start.py +++ b/dsLightRag/Start.py @@ -32,6 +32,7 @@ from Routes.ttsRoute import router as tts_router from Routes.CopyFaceRoute import router as copyFace_router from Routes.WenShengTu import router as wenshengtu_router from Routes.TeacherHelperRoute import router as teacherHelper_router +from Routes.XunFeiRoute import router as xunfei_router # 控制日志输出 logger = logging.getLogger('lightrag') logger.setLevel(logging.INFO) @@ -90,6 +91,7 @@ app.include_router(tts_router) # 文本转语音 app.include_router(copyFace_router) # 抄脸 app.include_router(wenshengtu_router) # 文生图 app.include_router(teacherHelper_router) # 教师助手 +app.include_router(xunfei_router) # 讯飞 # Teaching Model 相关路由 # 登录相关(不用登录) diff --git a/dsLightRag/static/XunFei/audio_evaluation.html b/dsLightRag/static/XunFei/audio_evaluation.html new file mode 100644 index 00000000..eb9ea657 --- /dev/null +++ b/dsLightRag/static/XunFei/audio_evaluation.html @@ -0,0 +1,318 @@ + + + + + + 语音评测系统 + + + +
+

语音评测系统

+ +
+ + +
+ +
+ + +
+ +
+ + + +
+ +
准备就绪
+ + +
+ + + + \ No newline at end of file