[Feature Request] 网页版 BYOK TTS 增加豆包语音(火山引擎)支持

Author: imzihuailinCreated Jul 5, 2026Updated Jul 13, 2026

功能需求

希望 Enjoy 网页版的 BYOK TTS 增加豆包语音(火山引擎)Provider 支持。

当前情况

网页版目前仅支持 OpenAI 和 Azure TTS。

选择 OpenAI TTS 并填写自定义 API Endpoint 时,Enjoy 会按照 OpenAI TTS 协议调用:

POST {endpoint}/audio/speech

同时使用 OpenAI 格式的鉴权方式、请求参数和响应处理。

豆包语音 V3 API 不兼容 OpenAI TTS 协议,因此无法通过修改 Base URL 接入。

不兼容原因

虽然新版豆包语音使用单个 API Key,但其接口协议与 OpenAI TTS 不同:

  • API Key 通过 X-Api-Key Header 传递,而不是 Authorization: Bearer <API_KEY>

  • 需要额外提供 X-Api-Resource-Id,例如 seed-tts-2.0

  • TTS 接口为:

    POST https://openspeech.bytedance.com/api/v3/tts/unidirectional

  • 请求体使用 req_params.textreq_params.speakerreq_params.audio_params 等字段

  • 返回结果为流式数据,需要解析并合并其中的音频内容

  • Resource ID 需要与音色所属的模型版本匹配

因此,当前的 OpenAI 自定义 Endpoint 功能不足以接入豆包语音。

希望实现

建议在以下位置增加“豆包语音 / Volcengine”Provider:

设置 → AI 服务 → TTS → 使用自己的 API Key

建议支持以下配置:

  • API Key
  • Resource ID,例如 seed-tts-2.0
  • Speaker / 音色 ID
  • 输出格式,例如 MP3
  • 采样率
  • 可选的语速、音量和情感参数

调用时按照豆包语音 V3 协议:

  1. 将 API Key 放入 X-Api-Key
  2. 添加 X-Api-Resource-Id
  3. 将文本、音色和音频参数转换为豆包请求体
  4. 解析流式响应并合并音频数据
  5. 将生成的音频交给现有播放器和缓存逻辑

如果浏览器直接请求存在 CORS 或安全限制,可以考虑通过 Enjoy 后端代理调用。

使用场景

豆包语音提供了较丰富的中英文音色。支持该 Provider 后,国内用户可以直接使用自己的火山引擎 API Key 和额度,用于:

  • 电子书朗读
  • 影子跟读
  • 句子发音
  • 其他网页版 TTS 场景

参考文档

Source: ZuodaoTech/everyone-can-use-english