liyanbo 1 месяц назад
Родитель
Сommit
8424e88d19

+ 2 - 2
src/api/audio.js

@@ -27,7 +27,7 @@ export async function uploadAudio(audioBlob) {
   return response.data;
 }
 
-export async function evaluateReading(audioUrl, onData) {
+export async function evaluateReading(audioUrl, onData, roleId = 10) {
   const abortController = new AbortController();
   const token = localStorage.getItem('token');
 
@@ -44,7 +44,7 @@ export async function evaluateReading(audioUrl, onData) {
       },
       body: JSON.stringify({
         modelId,
-        roleId: 10,
+        roleId,
         prompt: '请评价这段朗读',
         audioUrl
       })

+ 13 - 0
src/components/aiCourse/dialog/DialogCard.vue

@@ -39,6 +39,7 @@
     <PoemReadingDialogue
       v-if="dialogue?.type === 'poem_reading'"
       :content="dialogue?.content"
+      :role-id="getRoleIdByRoleName(dialogue?.roleName, scriptRoles)"
       @evaluation-complete="$emit('poem-reading-complete', $event)"
     />
 
@@ -120,6 +121,18 @@ const getQuestionType = (questDialogue) => {
   }
   return 'AI Q&A';
 };
+
+/**
+  * 根据角色名称获取角色ID
+  * @param {String} roleName - 角色名称
+  * @param {Array} roles - 角色列表
+  * @returns {String|Number} 角色ID,如果找不到则返回原值
+  */
+ const getRoleIdByRoleName = (roleName, roles) => {
+   if (!roleName || !roles) return roleName;
+   const role = roles.find(r => r.name === roleName);
+   return role ? role.id : roleName;
+ };
 </script>
 
 <style scoped lang="scss">

+ 5 - 1
src/components/aiCourse/dialog/dialogType/PoemReadingDialogue.vue

@@ -73,6 +73,10 @@ const props = defineProps({
   content: {
     type: String,
     default: ''
+  },
+  roleId: {
+    type: Number,
+    default: 10
   }
 });
 
@@ -235,7 +239,7 @@ const convertBlobToBase64AndEvaluate = async () => {
 
   try {
     const base64Audio = await blobToBase64(recordedBlob.value);
-    abortController.value = await evaluateReading(base64Audio, handleStreamData);
+    abortController.value = await evaluateReading(base64Audio, handleStreamData, props.roleId);
   } catch (error) {
     console.error('评价请求失败:', error);
     ElMessage.error('评价请求失败,请重试');