协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
doubao-tts【开发与工程】Use Doubao Text-to-Speech (Volcengine TTS) to convert text into audio files. When a user mentions "Doubao TTS," "Doubao Text-to-Speech," "doubao tts," "Volcengine TTS," "volcengine tts," "speech synthesis," "text-to-speech," "TTS," "generate audio," "read text aloud," or any scenario requiring the Doubao/Volcengine Text-to-Speech API, this skill must…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Use the Volcengine Doubao Text-to-Speech V3 HTTP SSE unidirectional streaming API to convert text into audio files.
DOUBAO_TTS_API_KEYIf you have not enabled the service yet, enable it first on the Text-to-Speech Large Model page.
At the bottom of the application details page in the legacy console, you can find:
DOUBAO_TTS_APPIDDOUBAO_TTS_TOKEN| Variable Name | Description | Recommended |
|---|---|---|
DOUBAO_TTS_API_KEY | API Key (new console, X-Api-Key) | ✅ |
DOUBAO_TTS_APPID | AppID (legacy console, X-Api-App-Id) | |
DOUBAO_TTS_TOKEN | Access Token (legacy console, X-Api-Access-Key) | |
DOUBAO_TTS_RESOURCE_ID | Resource ID; leave blank to use the default seed-tts-2.0 |
Check whether they are configured:
[ -n "$DOUBAO_TTS_API_KEY" ] && echo "API_KEY: set" || echo "API_KEY: not set"
[ -n "$DOUBAO_TTS_APPID" ] && echo "APPID: set" || echo "APPID: not set"
[ -n "$DOUBAO_TTS_TOKEN" ] && echo "TOKEN: set" || echo "TOKEN: not set"
If they are not configured, tell the user to set them (prefer API Key): Set DOUBAO_TTS_API_KEY | Set DOUBAO_TTS_RESOURCE_ID
Legacy console (AppID + Token): Set DOUBAO_TTS_APPID | Set DOUBAO_TTS_TOKEN
Call the script: /var/minis/skills/doubao-tts/scripts/tts.py
# Basic usage
uv run --script --cache-dir /root/.cache/uv \
/var/minis/skills/doubao-tts/scripts/tts.py \
--text "Hello, and welcome to Doubao Text-to-Speech." \
--output /var/minis/workspace/output.mp3
# Specify voice and speech rate
uv run --script --cache-dir /root/.cache/uv \
/var/minis/skills/doubao-tts/scripts/tts.py \
--text "The weather is really nice today." \
--speaker zh_female_cancan_uranus_bigtts \
--speech-rate 10 \
--output /var/minis/workspace/output.mp3
# English
uv run --script --cache-dir /root/.cache/uv \
/var/minis/skills/doubao-tts/scripts/tts.py \
--text "Hello! Nice to meet you." \
--speaker en_female_dacey_uranus_bigtts \
--output /var/minis/workspace/output.mp3
https://openspeech.bytedance.com/api/v3/tts/unidirectional/sse (SSE streaming)X-Api-Key (API Key)X-Api-App-Id + X-Api-Access-Key (AppID + Token)X-Control-Require-Usage-Tokens-Return: text_words by default, which returns the number of billable characters (text_words) when synthesis ends| Resource ID | Description |
|---|---|
seed-tts-1.0 | Doubao Text-to-Speech Model 1.0 character version (default, compatible with all BV*_streaming voices) |
seed-tts-1.0-concurr | Doubao Text-to-Speech Model 1.0 concurrency version |
seed-tts-2.0 | Doubao Text-to-Speech Model 2.0 (supports only 2.0 voices) |
| Parameter | Description |
|---|---|
--text | Text to synthesize (required) |
--output | Output file path (required) |
--api-key | API Key (new console, takes precedence over APPID/TOKEN) |
--appid | AppID (legacy console) |
--token | Access Token (legacy console) |
--speaker | Voice, default zh_female_shuangkuaisisi_uranus_bigtts (Shuangkuai Sisi 2.0) |
--encoding | Format: mp3/pcm/ogg_opus, default mp3 |
--speech-rate | Speech rate [-50, 100], where 0 is the default and 100 is 2x speed |
--loudness | Volume [-50, 100], where 0 is the default |
--sample-rate | Sample rate, default 24000 |
--emotion | Emotion, such as happy/sad/angry/narrator |
--emotion-scale | Emotion intensity [1, 5] (used with --emotion) |
--resource-id | Resource ID (overrides the environment variable) |
--json | Output result in JSON format |
seed-tts-2.0, recommended)| speaker | Name | Scenario |
|---|---|---|
zh_female_shuangkuaisisi_uranus_bigtts | Shuangkuai Sisi 2.0 ⭐ Default | General |
zh_female_cancan_uranus_bigtts | Zhixing Cancan 2.0 | Role-playing |
zh_female_tianmeixiaoyuan_uranus_bigtts | Tianmei Xiaoyuan 2.0 | General |
zh_female_vv_uranus_bigtts | Vivi 2.0 | General, Chinese/Japanese/Indonesian/Mexican Spanish, Sichuan/Shaanxi/Northeastern dialects |
zh_female_xiaohe_uranus_bigtts | Xiaohe 2.0 | General |
zh_male_m191_uranus_bigtts | Yunzhou 2.0 | General |
zh_male_taocheng_uranus_bigtts | Xiaotian 2.0 | General |
zh_female_kefunvsheng_uranus_bigtts | Nuanyang Female Voice 2.0 | Customer service |
en_female_dacey_uranus_bigtts | Dacey | Multilingual (English) |
en_male_tim_uranus_bigtts | Tim | Multilingual (English) |
seed-tts-1.0, requires changing --resource-id)| speaker | Name | Scenario |
|---|---|---|
BV700_streaming | Cancan | General, supports 22 emotions |
BV001_streaming | General Female Voice | General |
BV002_streaming | General Male Voice | General |
BV701_streaming | Qingcang | Audiobook |
BV503_streaming | Energetic Female Voice-Ariana | English |
⚠️ 1.0 and 2.0 voices cannot be mixed.
seed-tts-2.0supports only voices ending in*_uranus_bigtts.
pleased (pleased) / sorry (sorry) / happy (happy) / sad (sad) / angry (angry) / scare (scared) / surprise (surprised) / hate (disgust) / tear (tearful voice) / narrator (narrator) / storytelling (storytelling)
DOUBAO_TTS_API_KEY, then DOUBAO_TTS_APPID + DOUBAO_TTS_TOKEN)tts.py script to generate an audio file in /var/minis/workspace/minis://workspace/xxx.mp3 link, which they can click to play directly.