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

2.9 KiB
Raw Blame History

修改 AddAgent.vue 使用 API 数据渲染 TTS 内容

目标

根据 demo.md 中的 API 数据格式,修改 AddAgent.vue 文件,使其能够从 API 获取语言和音色数据,并正确渲染到页面上。

分析

  1. 当前 AddAgent.vue 中使用硬编码的 availableLanguagesavailableVoices 数组
  2. getTtsList 函数已经调用了 API但没有处理返回的数据
  3. API 返回的数据包含语言列表和对应语言的音色列表
  4. 需要根据选择的语言动态更新可用的音色列表

修改方案

1. 修改数据结构

  • availableLanguagesavailableVoices 改为从 API 获取
  • 添加 ttsData 变量存储完整的 API 返回数据
  • 添加 allVoices 变量存储所有音色数据,便于根据语言过滤

2. 更新 getTtsList 函数

  • 处理 API 返回的数据,格式化语言和音色列表
  • 将语言列表转换为组件需要的格式(包含 code、name、flag
  • 将音色列表转换为组件需要的格式(包含 id、name、sampleUrl

3. 修改语言选择逻辑

  • 使用从 API 获取的语言列表替换硬编码列表
  • 添加语言切换时的音色过滤逻辑

4. 修改音色选择逻辑

  • 根据当前选择的语言动态过滤音色列表
  • 确保音频播放功能使用 API 返回的 voice_demo URL

5. 优化音频播放功能

  • 确保 playVoiceSample 函数能够正确处理 API 返回的音色数据
  • 保持音频播放器的原有功能不变

具体实现步骤

  1. 修改响应式变量定义

    • 删除硬编码的 availableLanguagesavailableVoices 数组
    • 添加 ttsDataallVoices 变量
    • 修改 availableLanguagesavailableVoices 为计算属性
  2. 更新 getTtsList 函数

    • 处理 API 返回的数据
    • 格式化语言列表,添加国旗图标
    • 格式化音色列表,提取需要的字段
  3. 添加语言切换监听

    • handleLanguageChange 函数中添加音色过滤逻辑
    • 确保切换语言时重置音色选择
  4. 更新模板渲染

    • 确保模板使用正确的变量名和字段名
    • 确保音频播放器使用 API 返回的音频 URL
  5. 测试功能

    • 确保语言列表正确渲染
    • 确保音色列表根据语言动态更新
    • 确保音频播放功能正常工作

预期效果

  • 页面加载时从 API 获取语言和音色数据
  • 语言选择下拉框显示所有可用语言
  • 音色选择下拉框根据当前语言显示对应的音色
  • 点击"试听"按钮能够播放对应的音色示例
  • 音频播放器能够正常控制播放/暂停、显示进度

注意事项

  • 需要处理 API 返回的语言代码与当前代码中语言代码格式的差异(如 API 返回 "zh",当前使用 "zh-CN"
  • 需要确保所有音色都有有效的 voice_demo URL
  • 需要处理 API 可能返回的错误情况
  • 需要确保页面加载时的初始状态正确