deotalandAi/.trae/documents/修改 AddAgent.vue 使用 API 数据渲染...

72 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 修改 AddAgent.vue 使用 API 数据渲染 TTS 内容
## 目标
根据 `demo.md` 中的 API 数据格式,修改 `AddAgent.vue` 文件,使其能够从 API 获取语言和音色数据,并正确渲染到页面上。
## 分析
1. 当前 `AddAgent.vue` 中使用硬编码的 `availableLanguages``availableVoices` 数组
2. `getTtsList` 函数已经调用了 API但没有处理返回的数据
3. API 返回的数据包含语言列表和对应语言的音色列表
4. 需要根据选择的语言动态更新可用的音色列表
## 修改方案
### 1. 修改数据结构
-`availableLanguages``availableVoices` 改为从 API 获取
- 添加 `ttsData` 变量存储完整的 API 返回数据
- 添加 `allVoices` 变量存储所有音色数据,便于根据语言过滤
### 2. 更新 `getTtsList` 函数
- 处理 API 返回的数据,格式化语言和音色列表
- 将语言列表转换为组件需要的格式(包含 code、name、flag
- 将音色列表转换为组件需要的格式(包含 id、name、sampleUrl
### 3. 修改语言选择逻辑
- 使用从 API 获取的语言列表替换硬编码列表
- 添加语言切换时的音色过滤逻辑
### 4. 修改音色选择逻辑
- 根据当前选择的语言动态过滤音色列表
- 确保音频播放功能使用 API 返回的 `voice_demo` URL
### 5. 优化音频播放功能
- 确保 `playVoiceSample` 函数能够正确处理 API 返回的音色数据
- 保持音频播放器的原有功能不变
## 具体实现步骤
1. **修改响应式变量定义**
- 删除硬编码的 `availableLanguages``availableVoices` 数组
- 添加 `ttsData`、`allVoices` 变量
- 修改 `availableLanguages``availableVoices` 为计算属性
2. **更新 `getTtsList` 函数**
- 处理 API 返回的数据
- 格式化语言列表,添加国旗图标
- 格式化音色列表,提取需要的字段
3. **添加语言切换监听**
-`handleLanguageChange` 函数中添加音色过滤逻辑
- 确保切换语言时重置音色选择
4. **更新模板渲染**
- 确保模板使用正确的变量名和字段名
- 确保音频播放器使用 API 返回的音频 URL
5. **测试功能**
- 确保语言列表正确渲染
- 确保音色列表根据语言动态更新
- 确保音频播放功能正常工作
## 预期效果
- 页面加载时从 API 获取语言和音色数据
- 语言选择下拉框显示所有可用语言
- 音色选择下拉框根据当前语言显示对应的音色
- 点击"试听"按钮能够播放对应的音色示例
- 音频播放器能够正常控制播放/暂停、显示进度
## 注意事项
- 需要处理 API 返回的语言代码与当前代码中语言代码格式的差异(如 API 返回 "zh",当前使用 "zh-CN"
- 需要确保所有音色都有有效的 `voice_demo` URL
- 需要处理 API 可能返回的错误情况
- 需要确保页面加载时的初始状态正确