Agent skill

Doubao Open Tts

by LeoYeAI in LeoYeAI/openclaw-master-skills

Text-to-Speech service using Doubao (Volcano Engine) API with 200+ voices, interactive voice selection, and multilingual support

MITAuto-check: notesMedia & Creative

Install Doubao Open Tts

skills CLI
$ npx skills add LeoYeAI/openclaw-master-skills --skill doubao-open-tts -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install LeoYeAI/openclaw-master-skills doubao-open-tts --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/doubao-api-open-tts .claude/skills/doubao-open-tts && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
doubao-open-tts
GitHub stars
2.2k
Token cost
~6k tokens
SKILL.md length
1,126 words
Files
7 (incl. scripts)
Skills in repo
1,235
Repo updated
First seen
Licence
MIT

At a glance

Text-to-Speech service using Doubao (Volcano Engine) API with 200+ voices, interactive voice selection, and multilingual support

  • Works in 3 steps: Check API Configuration → Handle Missing API Configuration → Use the Service
  • Tasks that involve Text to speech and voice
  • SKILL.md covers Features, Quick Start for Agents, API Configuration Detection and Configuration Methods, plus 6 more sections
  • Runs Python scripts from its folder; calls python and pip; reaches console.volcengine.com; needs VOLCANO_TTS_ACCESS_TOKEN and VOLCANO_TTS_SECRET_KEY

What it does

Doubao Open Tts is an agent skill from LeoYeAI/openclaw-master-skills. Text-to-Speech service using Doubao (Volcano Engine) API with 200+ voices, interactive voice selection, and multilingual support

Its SKILL.md is about 6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts (for example `README.md`, `_meta.json` and `scripts/test_tts.py`). Compatibility notes: opencode

It sits in Media & Creative, covering Text to speech and voice. The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.

When your agent uses it

  • Tasks that involve Text to speech and voice

Example prompts

  • “/doubao-open-tts”

Requirements

  • Python 3
  • A credential in VOLCANO_TTS_ACCESS_TOKEN
  • A credential in VOLCANO_TTS_SECRET_KEY
  • Compatibility (from SKILL.md): opencode

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Check API Configuration
  2. Handle Missing API Configuration
  3. Use the Service

What it can do on your machine

Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 2 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python
    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • console.volcengine.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • VOLCANO_TTS_ACCESS_TOKEN
    • VOLCANO_TTS_SECRET_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    opencode

    From compatibility in the SKILL.md frontmatter.

Context cost

Doubao Open Tts loads about 6k tokens when it runs. Until then it costs about 36 tokens; SKILL.md has 1,126 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~36
When it runs · the whole SKILL.md, loaded when a task matches
~6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:73
    Agent: [Saves credentials to .env file]
  • NoteMentions a .env fileSKILL.md:120
    Saves API credentials to the .env file in the SKILL directory.
  • NoteMentions a .env fileSKILL.md:133
    print("✅ Configuration saved to .env file")
  • NoteMentions a .env fileSKILL.md:229
    ### Method 2: .env File
  • NoteMentions a .env fileSKILL.md:231
    Copy `.env.example` to `.env` and fill in your credentials:
  • NoteMentions a .env fileSKILL.md:234
    cp .env.example .env
  • NoteMentions a .env fileSKILL.md:235
    # Edit the .env file with your credentials

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 1,126 words, ~5,983 tokens.

Download SKILL.mdSave it as .claude/skills/doubao-open-tts/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
doubao-open-tts
description
Text-to-Speech service using Doubao (Volcano Engine) API with 200+ voices, interactive voice selection, and multilingual support
compatibility
opencode
license
MIT
metadata.category
audio
metadata.language
python
metadata.provider
volcano-engine

Doubao Open TTS

Text-to-Speech (TTS) service using Doubao (Volcano Engine) API V1 interface to convert text into natural-sounding speech.

Features

  • 🎙️ 200+ Voice Options - Default: Shiny (灿灿) for general scenarios
  • 🔊 Multiple Audio Formats - Supports mp3, pcm, wav
  • ⚡ Adjustable Parameters - Speed and volume control
  • 📦 Dual Interface - Command-line tool + Python API
  • 🎯 Voice Categorization - Browse voices by category
  • 🔐 Mandatory API Configuration - Requires API credentials; stops and prompts user if not configured (default voice only available with explicit user confirmation)

Quick Start for Agents

重要提示: 当检测到没有API配置时,Agent必须立即停止并询问用户是否配置API,不允许直接使用默认音色生成音频,除非用户明确坚持使用默认音色。

When using this SKILL, the Agent should follow this workflow:

Step 1: Check API Configuration

First, check if API credentials are configured:

python
from scripts.tts import check_api_config, setup_api_config

# Check if API is configured
config = check_api_config()
if not config:
    # API not configured, MUST stop and ask user
    # DO NOT proceed with default voice
    print("⚠️ API credentials not found. Cannot proceed without API configuration.")
    # ... ask user for credentials or if they want to use default
Step 2: Handle Missing API Configuration

如果API凭证缺失,Agent必须停止并询问用户: 用户可以选择配置API,或者明确坚持使用默认音色(仅当用户明确要求时才允许)。

Agent: I need API credentials to use the Doubao TTS service. 
       Please provide the following information:

1. App ID (APPID)
2. Access Token
3. Secret Key

You can get these from: https://console.volcengine.com/

Please enter your App ID:

User: 4269953601

Agent: Please enter your Access Token:

User: uAGE3iP8nJf3ewu-d6U1P6Jthv7i1DH7

Agent: Please enter your Secret Key:

User: Dfta36aYgcdqY-ylHoh9FQyqiERS5iTv

Agent: [Saves credentials to .env file]
       ✅ API configuration saved successfully!

用户选择: 如果用户不想配置API但坚持使用默认音色:

User: 我不想配置API,就用默认音色吧

Agent: ⚠️ 确认使用默认音色吗?这将使用内置的默认音色生成音频。
       输入 'yes' 确认使用默认音色,或提供API凭证以获得更好的体验。

User: yes

Agent: [继续执行,使用默认音色]
Step 3: Use the Service

After API is configured OR user explicitly confirmed to use default voice:

python
from scripts.tts import VolcanoTTS

tts = VolcanoTTS()
output = tts.synthesize("Hello world", output_file="output.mp3")

API Configuration Detection

Function: check_api_config()

Checks if API credentials are available. Returns config dict or None.

python
from scripts.tts import check_api_config

config = check_api_config()
if config:
    print(f"App ID: {config['app_id']}")
    print(f"Access Token: {config['access_token'][:10]}...")
    print(f"Secret Key: {config['secret_key'][:10]}...")
else:
    print("API not configured")
Function: setup_api_config(app_id, access_token, secret_key, voice_type=None)

Saves API credentials to the .env file in the SKILL directory.

python
from scripts.tts import setup_api_config

# Save credentials
setup_api_config(
    app_id="4269953601",
    access_token="uAGE3iP8nJf3ewu-d6U1P6Jthv7i1DH7",
    secret_key="Dfta36aYgcdqY-ylHoh9FQyqiERS5iTv",
    voice_type="zh_female_cancan_mars_bigtts"  # optional
)

print("✅ Configuration saved to .env file")
Complete Agent Workflow Example
python
from scripts.tts import check_api_config, setup_api_config, VolcanoTTS

def synthesize_with_auto_config(text, output_file="output.mp3", use_default_voice=False):
    """
    Synthesize speech with automatic API configuration.
    
    IMPORTANT: If API is not configured, this function will STOP and ask user.
    It will NOT automatically use default voice unless user explicitly confirms.
    """
    # Step 1: Check if API is configured
    config = check_api_config()
    
    if not config:
        # Step 2: STOP and ask user - DO NOT proceed automatically
        print("🔐 API Configuration Required")
        print("=" * 50)
        print("\n⚠️ No API credentials found. You have two options:")
        print("\nOption 1: Configure API (Recommended)")
        print("  Please visit https://console.volcengine.com/ to get your credentials")
        print("\nOption 2: Use Default Voice")
        print("  ⚠️ Only available if you explicitly confirm")
        
        # Ask user what they want to do
        choice = input("\nEnter '1' to configure API, or '2' to use default voice: ").strip()
        
        if choice == '1':
            # Configure API
            print("\nRequired information:")
            app_id = input("1. Enter your App ID: ").strip()
            access_token = input("2. Enter your Access Token: ").strip()
            secret_key = input("3. Enter your Secret Key: ").strip()
            
            # Optional: ask for preferred voice
            print("\n🎙️ Optional: Select a default voice (press Enter to use Shiny)")
            voice_type = input("Voice type (or voice name): ").strip()
            
            # Save configuration
            setup_api_config(app_id, access_token, secret_key, voice_type or None)
            print("\n✅ Configuration saved!")
            
        elif choice == '2':
            # User explicitly chose to use default voice
            confirm = input("\n⚠️ Are you sure you want to use the default voice? (yes/no): ").strip().lower()
            if confirm != 'yes':
                print("❌ Cancelled. Please configure API to proceed.")
                return None
            use_default_voice = True
            print("\n⚠️ Using default voice as requested...")
        else:
            print("❌ Invalid choice. Please configure API to proceed.")
            return None
    
    # Step 3: Use the service
    if use_default_voice:
        # Use default voice (only when user explicitly confirmed)
        tts = VolcanoTTS(use_default=True)
    else:
        tts = VolcanoTTS()
    
    output_path = tts.synthesize(text, output_file=output_file)
    return output_path

# Use it
output = synthesize_with_auto_config("Hello, this is a test")
if output:
    print(f"Audio saved to: {output}")
else:
    print("Operation cancelled - API configuration required")

Configuration Methods

Installation

bash
cd skills/volcano-tts
pip install -r requirements.txt

Configuration

Method 1: Environment Variables
bash
export VOLCANO_TTS_APPID="your_app_id"
export VOLCANO_TTS_ACCESS_TOKEN="your_access_token"
export VOLCANO_TTS_SECRET_KEY="your_secret_key"
export VOLCANO_TTS_VOICE_TYPE="zh_female_cancan_mars_bigtts"  # Optional: set default voice
Method 2: .env File

Copy .env.example to .env and fill in your credentials:

bash
cp .env.example .env
# Edit the .env file with your credentials

Usage

Command Line
bash
# Basic usage (uses default voice: Shiny)
python scripts/tts.py "Hello, this is a test of Doubao text-to-speech service"

# Specify output file and format
python scripts/tts.py "Welcome to use TTS" -o output.mp3 -e mp3

# Read text from file
python scripts/tts.py -f input.txt -o output.mp3

# Adjust parameters
python scripts/tts.py "Custom voice" --speed 1.2 --volume 0.8 -v zh_female_cancan_mars_bigtts

# List all available voices
python scripts/tts.py --list-voices

# List voices by category
python scripts/tts.py --list-voices --category "General-Multilingual"

# Use different cluster
python scripts/tts.py "Hello" --cluster volcano_tts

# Enable debug mode
python scripts/tts.py "Test" --debug
Python API
python
from scripts.tts import VolcanoTTS, VOICE_TYPES, VOICE_CATEGORIES

# Initialize client
tts = VolcanoTTS(
    app_id="your_app_id",
    access_token="your_access_token",
    secret_key="your_secret_key",
    voice_type="zh_female_cancan_mars_bigtts"  # Optional: set default voice
)

# List available voices
print("All voices:", tts.list_voices())
print("General voices:", tts.list_voices("General-Normal"))

# Change voice
tts.set_voice("zh_male_xudong_conversation_wvae_bigtts")  # Set to "Happy Xiaodong"

# Synthesize speech
output_path = tts.synthesize(
    text="Hello, this is Doubao text-to-speech",
    voice_type="zh_female_cancan_mars_bigtts",  # Optional: override default
    encoding="mp3",
    cluster="volcano_tts",
    speed=1.0,
    volume=1.0,
    output_file="output.mp3"
)

print(f"Audio saved to: {output_path}")

Interactive Voice Selection

The SKILL supports interactive voice selection workflow for Agent-User collaboration:

Workflow
  1. Agent Prompts User - Agent asks user to select a voice
  2. Display Voice Options - Show recommended voices by category
  3. User Selection - User tells Agent their preferred voice
  4. Agent Calls Skill - Agent uses the selected voice to generate audio
Python API for Interactive Selection

重要: 在使用以下代码之前,必须先检查API配置。如果没有配置,必须停止并询问用户。

python
from scripts.tts import (
    get_voice_selection_prompt,
    find_voice_by_name,
    get_voice_info,
    check_api_config,
    VolcanoTTS
)

# Step 0: Check API configuration FIRST
config = check_api_config()
if not config:
    print("⚠️ API credentials not found. Please configure API first.")
    print("Visit: https://console.volcengine.com/")
    # STOP here and ask user to configure API
    # DO NOT proceed with voice selection until API is configured
    # OR user explicitly confirms to use default voice
    
# Step 1: Get the selection prompt to show user
prompt = get_voice_selection_prompt()
print(prompt)
# Agent displays this to user and waits for response

# Step 2: User responds with their choice (e.g., "Shiny" or "灿灿")
user_input = "Shiny"  # This comes from user

# Step 3: Find the voice_type from user input
voice_type, voice_name = find_voice_by_name(user_input)
if voice_type:
    print(f"Selected voice: {voice_name} ({voice_type})")
    
    # Get detailed info
    info = get_voice_info(voice_type)
    print(f"Category: {info['category_display']}")
    
    # Step 4: Use the voice to synthesize (API already verified)
    tts = VolcanoTTS(
        app_id="your_app_id",
        access_token="your_access_token",
        secret_key="your_secret_key"
    )
    
    output_path = tts.synthesize(
        text="Hello, this is the selected voice",
        voice_type=voice_type,
        output_file="output.mp3"
    )
    print(f"Audio saved to: {output_path}")
else:
    print("Voice not found. Please select a valid voice.")
    # DO NOT automatically use default - ask user instead
Example Agent-User Conversation
Agent: 🎙️ Please select a voice for text-to-speech synthesis:

Here are our recommended voices by category:

[General - Normal]
  • 灿灿/Shiny [DEFAULT] (Chinese) -> voice_type: zh_female_cancan_mars_bigtts
  • 快乐小东 (Chinese) -> voice_type: zh_male_xudong_conversation_wvae_bigtts
  • 亲切女声 (Chinese) -> voice_type: zh_female_qinqienvsheng_moon_bigtts

[Roleplay]
  • 纯真少女 (Chinese) -> voice_type: ICL_zh_female_chunzhenshaonv_e588402fb8ad_tob
  • 霸道总裁 (Chinese) -> voice_type: ICL_zh_male_badaozongcai_v1_tob
  • 撒娇男友 (Chinese) -> voice_type: ICL_zh_male_sajiaonanyou_tob

[Video Dubbing]
  • 猴哥 (Chinese) -> voice_type: zh_male_sunwukong_mars_bigtts
  • 熊二 (Chinese) -> voice_type: zh_male_xionger_mars_bigtts
  • 佩奇猪 (Chinese) -> voice_type: zh_female_peiqi_mars_bigtts

💡 Tips:
  • You can say the voice name (e.g., 'Shiny', '猴哥', '霸道总裁')
  • Or provide the voice_type directly
  • Type 'list all' to see all 200+ available voices
  • Press Enter to use the default voice (Shiny) - **only if API is configured**

⚠️ **Note**: Voice selection requires API credentials. If not configured, you must configure API first or explicitly confirm to use default voice.

Which voice would you like to use?

User: I want to use 猴哥

Agent: [Calls skill with voice_type="zh_male_sunwukong_mars_bigtts"]
       ✅ Generated audio with voice: 猴哥
Supported Input Formats

The find_voice_by_name() function supports:

  • Direct voice_type: zh_female_cancan_mars_bigtts
  • Chinese name: 灿灿, 猴哥, 霸道总裁
  • English alias: Shiny, Skye, Alvin
  • Partial match: 灿灿 matches 灿灿/Shiny

Parameters

ParameterDescriptionDefaultOptions
voice_typeVoice typezh_female_cancan_mars_bigttsSee voice list below
encodingAudio formatmp3mp3, pcm, wav
sample_rateSample rate240008000, 16000, 24000
speedSpeech speed1.00.5 - 2.0
volumeVolume level1.00.5 - 2.0
clusterCluster namevolcano_ttsvolcano_tts

Voice Categories

General - Multilingual (with emotion support)

Supported emotions: happy, sad, angry, surprised, fear, hate, excited, coldness, neutral, depressed, lovey-dovey, shy, comfort, tension, tender, storytelling, radio, magnetic, advertising, vocal-fry, ASMR, news, entertainment, dialect

voice_typeVoice NameLanguage
zh_male_lengkugege_emo_v2_mars_bigttsCold Brother (Emotion)Chinese
zh_female_tianxinxiaomei_emo_v2_mars_bigttsSweet Xiaomei (Emotion)Chinese
zh_female_gaolengyujie_emo_v2_mars_bigttsCold Lady (Emotion)Chinese
zh_male_aojiaobazong_emo_v2_mars_bigttsProud CEO (Emotion)Chinese
zh_male_guangzhoudege_emo_mars_bigttsGuangzhou Brother (Emotion)Chinese
zh_male_jingqiangkanye_emo_mars_bigttsBeijing Style (Emotion)Chinese
zh_female_linjuayi_emo_v2_mars_bigttsNeighbor Aunt (Emotion)Chinese
zh_male_yourougongzi_emo_v2_mars_bigttsGentleman (Emotion)Chinese
zh_male_ruyayichen_emo_v2_mars_bigttsElegant Boyfriend (Emotion)Chinese
zh_male_junlangnanyou_emo_v2_mars_bigttsHandsome Boyfriend (Emotion)Chinese
zh_male_beijingxiaoye_emo_v2_mars_bigttsBeijing Guy (Emotion)Chinese
zh_female_roumeinvyou_emo_v2_mars_bigttsGentle Girlfriend (Emotion)Chinese
zh_male_yangguangqingnian_emo_v2_mars_bigttsSunshine Youth (Emotion)Chinese
zh_female_meilinvyou_emo_v2_mars_bigttsCharming Girlfriend (Emotion)Chinese
zh_female_shuangkuaisisi_emo_v2_mars_bigttsCheerful Sisi (Emotion)Chinese/American English
en_female_candice_emo_v2_mars_bigttsCandice (Emotion)American English
en_female_skye_emo_v2_mars_bigttsSerena (Emotion)American English
en_male_glen_emo_v2_mars_bigttsGlen (Emotion)American English
en_male_sylus_emo_v2_mars_bigttsSylus (Emotion)American English
en_male_corey_emo_v2_mars_bigttsCorey (Emotion)British English
en_female_nadia_tips_emo_v2_mars_bigttsNadia (Emotion)British English
zh_male_shenyeboke_emo_v2_mars_bigttsLate Night Podcast (Emotion)Chinese
General - Normal
voice_typeVoice NameLanguage
zh_female_cancan_mars_bigttsShiny (灿灿) ⭐DefaultChinese/American English
zh_female_qinqienvsheng_moon_bigttsFriendly FemaleChinese
zh_male_xudong_conversation_wvae_bigttsHappy XiaodongChinese
zh_female_shuangkuaisisi_moon_bigttsCheerful Sisi/SkyeChinese/American English
zh_male_wennuanahu_moon_bigttsWarm Ahu/AlvinChinese/American English
zh_male_yangguangqingnian_moon_bigttsSunshine YouthChinese
zh_female_linjianvhai_moon_bigttsGirl Next DoorChinese
zh_male_yuanboxiaoshu_moon_bigttsKnowledgeable UncleChinese
zh_female_gaolengyujie_moon_bigttsCold LadyChinese
zh_male_aojiaobazong_moon_bigttsProud CEOChinese
zh_female_meilinvyou_moon_bigttsCharming GirlfriendChinese
zh_male_shenyeboke_moon_bigttsLate Night PodcastChinese
zh_male_dongfanghaoran_moon_bigttsOriental HaoranChinese
Roleplay
voice_typeVoice NameLanguage
ICL_zh_female_chunzhenshaonv_e588402fb8ad_tobInnocent GirlChinese
ICL_zh_male_xiaonaigou_edf58cf28b8b_tobCute BoyChinese
ICL_zh_female_jinglingxiangdao_1beb294a9e3e_tobElf GuideChinese
ICL_zh_male_menyoupingxiaoge_ffed9fc2fee7_tobSilent GuyChinese
ICL_zh_male_anrenqinzhu_cd62e63dcdab_tobDark LordChinese
ICL_zh_male_badaozongcai_v1_tobDominant CEOChinese
ICL_zh_male_bingruogongzi_tobSickly GentlemanChinese
ICL_zh_female_bingjiao3_tobEvil QueenChinese
ICL_zh_male_shuanglangshaonian_tobCheerful YouthChinese
ICL_zh_male_sajiaonanyou_tobClingy BoyfriendChinese
ICL_zh_male_wenrounanyou_tobGentle BoyfriendChinese
ICL_zh_male_tiancaitongzhuo_tobGenius DeskmateChinese
ICL_zh_male_bingjiaoshaonian_tobYandere YouthChinese
ICL_zh_male_bingjiaonanyou_tobYandere BoyfriendChinese
ICL_zh_male_bingruoshaonian_tobSickly YouthChinese
ICL_zh_male_bingjiaogege_tobYandere BrotherChinese
ICL_zh_female_bingjiaojiejie_tobYandere SisterChinese
ICL_zh_male_bingjiaodidi_tobYandere Brother (Young)Chinese
ICL_zh_female_bingruoshaonv_tobSickly GirlChinese
ICL_zh_female_bingjiaomengmei_tobYandere Cute GirlChinese
ICL_zh_male_bingjiaobailian_tobYandere White LotusChinese
Video Dubbing
voice_typeVoice NameLanguage
zh_male_M100_conversation_wvae_bigttsGentlemanChinese
zh_female_maomao_conversation_wvae_bigttsQuiet MaomaoChinese
zh_male_tiancaitongsheng_mars_bigttsChild ProdigyChinese
zh_male_sunwukong_mars_bigttsMonkey KingChinese
zh_male_xionger_mars_bigttsBear TwoChinese
zh_female_peiqi_mars_bigttsPeppa PigChinese
zh_female_wuzetian_mars_bigttsEmpress WuChinese
zh_female_yingtaowanzi_mars_bigttsCherry MarukoChinese
zh_male_silang_mars_bigttsSilangChinese
zh_male_jieshuonansheng_mars_bigttsNarrator/MorganChinese/American English
Show full SKILL.md (452 more words)Show less
Audiobook
voice_typeVoice NameLanguage
zh_male_changtianyi_mars_bigttsMystery NarratorChinese
zh_male_ruyaqingnian_mars_bigttsElegant YouthChinese
zh_male_baqiqingshu_mars_bigttsDominant UncleChinese
zh_male_qingcang_mars_bigttsQingcangChinese
zh_female_gufengshaoyu_mars_bigttsAncient Style LadyChinese
zh_female_wenroushunv_mars_bigttsGentle LadyChinese
Multilingual
voice_typeVoice NameLanguage
en_female_lauren_moon_bigttsLaurenAmerican English
en_male_michael_moon_bigttsMichaelAmerican English
en_male_bruce_moon_bigttsBruceAmerican English
en_female_emily_mars_bigttsEmilyBritish English
en_male_smith_mars_bigttsSmithBritish English
en_female_anna_mars_bigttsAnnaBritish English
IP Voices
voice_typeVoice NameLanguage
zh_male_hupunan_mars_bigttsShanghai MaleChinese
zh_male_lubanqihao_mars_bigttsLuban No.7Chinese
zh_female_yangmi_mars_bigttsLin XiaoChinese
zh_female_linzhiling_mars_bigttsSister LinglingChinese
zh_female_jiyejizi2_mars_bigttsKasukabe SisterChinese
zh_male_tangseng_mars_bigttsTang MonkChinese
zh_male_zhuangzhou_mars_bigttsZhuang ZhouChinese
zh_male_zhubajie_mars_bigttsZhu BajieChinese
zh_female_ganmaodianyin_mars_bigttsSick Electronic SisterChinese
zh_female_naying_mars_bigttsFrank YingChinese
zh_female_leidian_mars_bigttsFemale ThorChinese
Fun Accents
voice_typeVoice NameLanguage
zh_female_yueyunv_mars_bigttsCantonese GirlChinese
zh_male_yuzhouzixuan_moon_bigttsHenan BoyChinese-Henan Accent
zh_female_daimengchuanmei_moon_bigttsSichuan GirlChinese-Sichuan Accent
zh_male_guangxiyuanzhou_moon_bigttsGuangxi BoyChinese-Guangxi Accent
zh_male_zhoujielun_emo_v2_mars_bigttsNunchaku GuyChinese-Taiwan Accent
zh_female_wanwanxiaohe_moon_bigttsTaiwan XiaoheChinese-Taiwan Accent
zh_female_wanqudashu_moon_bigttsBay Area UncleChinese-Guangdong Accent
zh_male_guozhoudege_moon_bigttsGuangzhou BrotherChinese-Guangdong Accent
zh_male_haoyuxiaoge_moon_bigttsQingdao BoyChinese-Qingdao Accent
zh_male_beijingxiaoye_moon_bigttsBeijing GuyChinese-Beijing Accent
zh_male_jingqiangkanye_moon_bigttsBeijing Style/HarmonyChinese-Beijing/American English
zh_female_meituojieer_moon_bigttsChangsha GirlChinese-Changsha Accent
Customer Service
voice_typeVoice NameLanguage
ICL_zh_female_lixingyuanzi_cs_tobRational YuanziChinese
ICL_zh_female_qingtiantaotao_cs_tobSweet TaotaoChinese
ICL_zh_female_qingxixiaoxue_cs_tobClear XiaoxueChinese
ICL_zh_female_qingtianmeimei_cs_tobSweet MeimeiChinese
ICL_zh_female_kailangtingting_cs_tobCheerful TingtingChinese
ICL_zh_male_qingxinmumu_cs_tobFresh MumuChinese
ICL_zh_male_shuanglangxiaoyang_cs_tobCheerful XiaoyangChinese
ICL_zh_male_qingxinbobo_cs_tobFresh BoboChinese
ICL_zh_female_wenwanshanshan_cs_tobGentle ShanshanChinese
ICL_zh_female_tianmeixiaoyu_cs_tobSweet XiaoyuChinese
ICL_zh_female_reqingaina_cs_tobEnthusiastic AinaChinese
ICL_zh_female_tianmeixiaoju_cs_tobSweet XiaojuChinese
ICL_zh_male_chenwenmingzai_cs_tobSteady MingzaiChinese
ICL_zh_male_qinqiexiaozhuo_cs_tobFriendly XiaozhuoChinese
ICL_zh_female_lingdongxinxin_cs_tobLively XinxinChinese
ICL_zh_female_guaiqiaokeer_cs_tobGood KeerChinese
ICL_zh_female_nuanxinqianqian_cs_tobWarm QianqianChinese
ICL_zh_female_ruanmengtuanzi_cs_tobSoft TuanziChinese
ICL_zh_male_yangguangyangyang_cs_tobSunny YangyangChinese
ICL_zh_female_ruanmengtangtang_cs_tobSoft TangtangChinese
ICL_zh_female_xiuliqianqian_cs_tobBeautiful QianqianChinese
ICL_zh_female_kaixinxiaohong_cs_tobHappy XiaohongChinese
ICL_zh_female_qingyingduoduo_cs_tobLight DuoduoChinese
zh_female_kefunvsheng_mars_bigttsWarm FemaleChinese

Tip: Use python scripts/tts.py --list-voices to see the complete voice list

Get API Credentials

  1. Visit Volcano Engine Console
  2. Enable "Doubao Voice" service
  3. Create an application in the console to get AppID, Access Token, and Secret Key
  4. Ensure your account has sufficient TTS quota

Troubleshooting

Error: "requested resource not granted"

Cause: Account lacks TTS service permission

Solution:

  1. Login to Volcano Engine Console
  2. Go to "Doubao Voice" product page
  3. Confirm service is enabled and has available quota
  4. Check if Token has TTS calling permission
Error: "invalid auth token"

Cause: Authentication information error

Solution:

  1. Check if AppID, Access Token, Secret Key are correct
  2. Ensure no extra spaces
Error: "requested resource not found"

Cause: Voice type or cluster name error

Solution:

  1. Try different voice_type, such as BV001_streaming, BV002_streaming
  2. Try different cluster, such as volcano_tts, volcano
Test Configuration

Run test script to try multiple configurations:

bash
python scripts/test_tts.py

Notes

  • Ensure your account has sufficient speech synthesis quota
  • Text length limits refer to official documentation
  • Network request timeout defaults to 30 seconds

© LeoYeAI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 6 other files (scripts) in skills/doubao-api-open-tts of LeoYeAI/openclaw-master-skills.

  • SKILL.md
  • .env.example.txt
  • README.md
  • _meta.json
  • requirements.txt
  • scripts/test_tts.py
  • scripts/tts.py

Open the folder on GitHubat commit e5199b5

Compare with similar skills

Doubao Open Tts next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Doubao Open Tts compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Doubao Open Tts this skillLeoYeAI/openclaw-master-skills2.2k—~6kAutomated safety check: NotesMIT
MoneyPrinterTurbo Video Generatorharry0703/MoneyPrinterTurbo130k—~2.1kAutomated safety check: WarnMIT
HyperFrames Media Useheygen-com/hyperframes60k—~2.4kAutomated safety check: PassApache-2.0
Openspec OnboardSAP/e-mobility-charging-stations-simulator22725 repos~3.5kAutomated safety check: PassMIT
Blog AudioAgriciDaniel/claude-blog2.3k1 repos~2.2kAutomated safety check: NotesMIT
Musictadaspetra/loop2962 repos~827Automated safety check: PassMIT

Similar skills

  • MoneyPrinterTurbo Video Generator

    harry0703/MoneyPrinterTurbo

    Installs and runs MoneyPrinterTurbo to turn a topic or script into a finished short video with voice-over, subtitles, stock footage and music.

    130k GitHub stars~2.1k tokensUpdated yesterday
    Media & CreativeAuto-check: warnings
  • HyperFrames Media Use

    heygen-com/hyperframes

    Finds, generates and edits media for HyperFrames video projects: music, sound effects, images, icons, logos, voiceovers, captions and color grades.

    60k GitHub stars~2.4k tokensUpdated today
    Media & CreativeAuto-check passed
  • Openspec Onboard

    SAP/e-mobility-charging-stations-simulator

    Official

    Guided onboarding for OpenSpec - walk through a complete workflow cycle with narration and real codebase work.

    227 GitHub starsUsed in 25 repos~3.5k tokens
    Media & CreativeAuto-check passed
  • Blog Audio

    AgriciDaniel/claude-blog

    Generate audio narration of blog posts using Google Gemini TTS.

    2.3k GitHub starsUsed in 1 repo~2.2k tokens
    Media & CreativeAuto-check: notes
  • Music

    tadaspetra/loop

    Generate music using ElevenLabs Music API. An agent skill from tadaspetra/loop.

    296 GitHub starsUsed in 2 repos~827 tokens
    Media & CreativeAuto-check passed
  • Create News Video

    hoquanghai/Auto-Create-Video

    Tạo video tin tức ngắn 9:16 (~60s) từ URL bài báo hoặc file .txt tiếng Việt.

    319 GitHub starsUsed in 1 repo~3.7k tokens
    Media & CreativeAuto-check passed

More from LeoYeAI/openclaw-master-skills

All 1,200 skills in this repo
  • DevOps Pipeline Management

    LeoYeAI/openclaw-master-skills

    Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.

    2.2k GitHub stars~4.2k tokensUpdated 2 mo ago
    Auto-check: notes
  • Feishu Document Collaboration

    LeoYeAI/openclaw-master-skills

    Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.

    2.2k GitHub stars~2k tokensUpdated 2 mo ago
    Auto-check passed
  • Files Memory System

    LeoYeAI/openclaw-master-skills

    Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.

    2.2k GitHub stars~3.8k tokensUpdated 2 mo ago
    Auto-check passed
  • GEO-Claw AI Visibility Agent

    LeoYeAI/openclaw-master-skills

    Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.

    2.2k GitHub stars~4.7k tokensUpdated 2 mo ago
    Auto-check passed
  • Google Workspace CLI

    LeoYeAI/openclaw-master-skills

    Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.

    2.2k GitHub stars~2.6k tokensUpdated 2 mo ago
    Auto-check: notes
  • HealthFit Health Advisors

    LeoYeAI/openclaw-master-skills

    Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.

    2.2k GitHub stars~4.4k tokensUpdated 2 mo ago
    Auto-check passed

Questions about Doubao Open Tts

What does Doubao Open Tts do?

Text-to-Speech service using Doubao (Volcano Engine) API with 200+ voices, interactive voice selection, and multilingual support. Doubao Open Tts is an agent skill from LeoYeAI/openclaw-master-skills.

When should I use Doubao Open Tts?

Doubao Open Tts fits situations like: tasks that involve Text to speech and voice.

How do I install Doubao Open Tts in Claude Code?

Run `npx skills add LeoYeAI/openclaw-master-skills --skill doubao-open-tts -a claude-code`. Or copy the skill folder (skills/doubao-api-open-tts in LeoYeAI/openclaw-master-skills) into .claude/skills/doubao-open-tts in your project. Claude Code loads it when a task matches its description.

How do I install Doubao Open Tts in Codex?

Run `npx skills add LeoYeAI/openclaw-master-skills --skill doubao-open-tts -a codex`. Or copy the skill folder (skills/doubao-api-open-tts in LeoYeAI/openclaw-master-skills) into .agents/skills/doubao-open-tts in your project. Codex loads it when a task matches its description.

Can I use Doubao Open Tts in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LeoYeAI/openclaw-master-skills --skill doubao-open-tts -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/doubao-open-tts, .gemini/skills/doubao-open-tts, .github/skills/doubao-open-tts and .opencode/skills/doubao-open-tts in your project.

What does Doubao Open Tts need to run?

Going by SKILL.md and its folder, Doubao Open Tts needs Python for the scripts in its folder, the command-line tools its instructions call (python and pip) and credentials named VOLCANO_TTS_ACCESS_TOKEN and VOLCANO_TTS_SECRET_KEY. Our summary lists: Python 3; A credential in VOLCANO_TTS_ACCESS_TOKEN; A credential in VOLCANO_TTS_SECRET_KEY. Compatibility (from SKILL.md): opencode.

Does Doubao Open Tts access the network?

SKILL.md names 1 domain. In commands or code: console.volcengine.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Doubao Open Tts safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Doubao Open Tts use?

Doubao Open Tts is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Doubao Open Tts use?

About 6k tokens (SKILL.md is roughly 24k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Doubao Open Tts?

Skills that share tags, products or a category with Doubao Open Tts: MoneyPrinterTurbo Video Generator (harry0703/MoneyPrinterTurbo, 130k stars), HyperFrames Media Use (heygen-com/hyperframes, 60k stars), Openspec Onboard (SAP/e-mobility-charging-stations-simulator, 227 stars) and Blog Audio (AgriciDaniel/claude-blog, 2.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Doubao Open Tts?

LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,161 GitHub stars. The repository holds 1,235 skills in this directory. The repository was last updated on July 20, 2026.

Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.