New to Claude Skills? Learn how to install them →

calesthio on GitHub

Doubao TTS

Free

Generate Mandarin and multilingual narration effortlessly.

Get this skill

Free · Opens the source repo

What Doubao TTS does

Doubao TTS leverages the capabilities of Volcengine Doubao Speech 2.0 to provide high-quality text-to-speech (TTS) generation, specifically tailored for Mandarin and multilingual narration. This skill is particularly useful for developers and content creators who need to produce voiceovers in Chinese or require character-level timestamp metadata for subtitles. By utilizing this tool, users can ensure their audio content is both accurate and engaging, making it an essential asset for video production and other multimedia projects.

The skill operates by requiring an API key for authentication and offers flexibility in voice selection through the voice_id parameter. Users can set a default voice type in their environment or specify it for each request, allowing for customization based on the project's needs. The API supports both synchronous and asynchronous endpoints, with the latter recommended for long-form narration to facilitate audio generation while also retrieving timing metadata necessary for creating accurate subtitles.

In practice, the workflow involves generating a brief sample for approval before proceeding with a full narration, ensuring that the voice quality, accent, and speed meet the user's expectations. The ability to extract timestamp metadata from the API response allows for precise captioning, which is critical for maintaining viewer comprehension, especially in complex Mandarin phrases. This structured approach not only enhances the quality of the final product but also streamlines the production process.

Doubao TTS is ideal for content creators, educators, and developers looking to incorporate Mandarin voiceovers into their projects. It is particularly suited for applications in video narration, e-learning modules, and any scenario where high-quality speech synthesis is required. By integrating this skill, users can elevate their audio content and deliver a more immersive experience for their audience.

When to use it

Use Doubao TTS when you need to create Mandarin voiceovers or require detailed timestamping for subtitles in your projects.

When not to use it

This skill may not be suitable for projects requiring voices in languages other than Mandarin or for users looking for a TTS solution without timestamp metadata.

What you can build with it

Video Narration

Create engaging Mandarin voiceovers for educational or promotional videos, enhancing viewer comprehension.

E-Learning Modules

Integrate high-quality narration into online courses, providing clear audio instructions and explanations.

Subtitling for Mandarin Content

Utilize timestamp metadata to produce accurate subtitles for Mandarin-speaking audiences, improving accessibility.

How to install Doubao TTS

View source

1. Install with the skills CLI

npx skills add calesthio/openmontage/doubao-tts --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by calesthio

Doubao TTS

Requires DOUBAO_SPEECH_API_KEY in .env. Set DOUBAO_SPEECH_VOICE_TYPE for the default voice, or pass voice_id to the tool.

Current API

Use the new-console API key flow:

X-Api-Key: ${DOUBAO_SPEECH_API_KEY}
X-Api-Resource-Id: seed-tts-2.0

Do not use X-Api-App-Id and X-Api-Access-Key with a new-console API Key. If the API returns load grant: requested grant not found, the key type or auth header is probably wrong.

For long-form video narration, prefer the async endpoint:

POST https://openspeech.bytedance.com/api/v3/tts/submit
POST https://openspeech.bytedance.com/api/v3/tts/query

This returns audio_url plus sentences[].words[] timing metadata that can be used to build subtitles.

OpenMontage Usage

Generate with the TTS selector:

from tools.audio.tts_selector import TTSSelector

result = TTSSelector().execute({
    "preferred_provider": "doubao",
    "text": "如果 AI 真的会改变未来,普通人到底该怎么参与?",
    "voice_id": "zh_female_vv_uranus_bigtts",
    "output_path": "projects/my-video/assets/audio/narration.mp3",
    "speech_rate": 0,
    "enable_timestamp": True,
})

Or call the provider directly:

from tools.audio.doubao_tts import DoubaoTTS

result = DoubaoTTS().execute({
    "text": "短样本试听文本。",
    "voice_id": "zh_female_vv_uranus_bigtts",
    "output_path": "projects/my-video/assets/audio/doubao_sample.mp3",
})

The provider writes:

  • output_path: downloaded audio file
  • metadata_path: full query response JSON, defaulting to <output_path>.json

Recommended Workflow

  1. Generate a 10-15 second sample before a full paid narration.
  2. Ask the user to approve voice naturalness, accent, and speed.
  3. Generate the full narration only after approval.
  4. Keep the query JSON. It is the source of truth for subtitle timing.
  5. Build captions from sentences[].words[], not from estimated text length.
  6. Group captions by Chinese semantic phrases before applying timestamps. Do not split only by fixed character count; it can break phrases like "在不押单个公司的情况下" or "可能会被慢慢稀释" and hurt comprehension.
  7. Let the video duration follow the approved voice rhythm unless the user explicitly asks to match a prior runtime.

Parameters

  • voice_id: Doubao speaker / voice type. Defaults to DOUBAO_SPEECH_VOICE_TYPE.
  • resource_id: use seed-tts-2.0 for Doubao Speech 2.0 voices.
  • speech_rate: 0 is normal, 100 is 2x, -50 is 0.5x.
  • sample_rate: default 24000.
  • enable_timestamp: default true.
  • return_usage: default true, requests usage metadata when available.

Do not pass additions.explicit_language by default. Some endpoint/key combinations reject zh-cn with unsupported additions explicit language zh-cn.

For calm Mandarin explainers, start with speech_rate: 0. If the result is too long for the approved format, make a short comparison sample with speech_rate: 25 or 50 before regenerating the full narration. Do not speed up only to match a previous provider's duration if the user prefers Doubao's natural pace.

Troubleshooting

  • load grant: requested grant not found: wrong key type or wrong auth header. Use X-Api-Key for new-console API Keys.
  • speaker permission denied: voice id is wrong or not authorized for the selected resource.
  • quota exceeded: quota, lifetime characters, or concurrency exceeded.
  • Missing timestamps: verify enable_timestamp: true, keep the query JSON, and confirm the selected endpoint returned sentences.

Safety

Never print or write the API key to logs, metadata, patches, or project artifacts. .env.example should contain only empty variable names.

Frequently asked questions about Doubao TTS

Similar skills