
Doubao TTS
FreeGenerate Mandarin and multilingual narration effortlessly.
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 source1. Install with the skills CLI
npx skills add calesthio/openmontage/doubao-tts --agent claude-code2. 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 calesthioDoubao 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 filemetadata_path: full query response JSON, defaulting to<output_path>.json
Recommended Workflow
- Generate a 10-15 second sample before a full paid narration.
- Ask the user to approve voice naturalness, accent, and speed.
- Generate the full narration only after approval.
- Keep the query JSON. It is the source of truth for subtitle timing.
- Build captions from
sentences[].words[], not from estimated text length. - 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.
- Let the video duration follow the approved voice rhythm unless the user explicitly asks to match a prior runtime.
Parameters
voice_id: Doubaospeaker/ voice type. Defaults toDOUBAO_SPEECH_VOICE_TYPE.resource_id: useseed-tts-2.0for Doubao Speech 2.0 voices.speech_rate:0is normal,100is 2x,-50is 0.5x.sample_rate: default24000.enable_timestamp: defaulttrue.return_usage: defaulttrue, 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. UseX-Api-Keyfor 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 returnedsentences.
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
WinMD API Search
Easily find and explore Windows desktop APIs.
WebMCPify
Transform any web app into an agent-ready platform.
Phoenix Tracing
Instrument LLM applications with OpenInference tracing.
Foundry Hosted Agent CopilotKit
Guidance for developing agentic web apps on Azure.
Power Automate Foundation
Connect AI agents to Power Automate seamlessly.
Power Automate Flow Builder
Efficiently build and deploy Power Automate flows programmatically.
