Install any skill in seconds. Free to start, no credit card required.
Get Started Free →使用豆包(火山引擎)语音合成大模型 API 将文本转换为语音音频文件。支持声音复刻音色(S_ 开头的音色ID)和官方预置音色。当用户要求"语音合成"、"文字转语音"、"TTS"、"朗读文本"、"生成语音"、"用我的声音读"、"豆包语音"、"声音复刻合成"等相关请求时,务必使用此 skill。即使用户只是说"帮我把这段话读出来"或"生成一段音频",也应触发此 skill。
SkillScore41/100
Test results 41
3/3 safety checks passed
14%41%of test cases passed +27 pts
Passed 9 of 22 test cases with the skill, and 3 of 22 without it.
6 fixed3 passed either way13 still failing0 broke
One test taskI want to synthesize speech using my cloned voice ID `S_98765432` for the text '欢迎光临'. Which resource ID option must be supplied to the synthesis script?
Adds every file the skill has, pinned so you can update it. No account needed.
pip install "decimalai>=0.15"
decimalai skills add leoyeai-doubao-tts
claude --plugin-dir "$(git rev-parse --show-toplevel 2>/dev/null || pwd)/.agents"The same install from Python, for a notebook or a setup script.
pip install "decimalai>=0.15"from decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("leoyeai-doubao-tts")
if result.exit_code:
raise SystemExit(result.problems)
print("Added. Start Claude Code with the command below.")claude --plugin-dir "$(git rev-parse --show-toplevel 2>/dev/null || pwd)/.agents"Type these in a Claude Code session. No account or API key. It writes the skill and any files it bundles, and asks first when its safety rating isn't Passed.
/plugin marketplace add decimal-labs/decimalai-claude-plugins
/plugin install decimalai@decimalai/decimalai:install leoyeai-doubao-ttsThe plugin needs python3 and curl on your machine.
No Python or account. Claude Code picks it up in its next session.
curl -fsSL --create-dirs -o .claude/skills/leoyeai-doubao-tts/SKILL.md https://app.decimal.ai/s/leoyeai-doubao-tts/SKILL.md.claude/skills/leoyeai-doubao-tts/SKILL.mdThis gets SKILL.md only. The skill's 1 other file is not included.
agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[claude-agent-sdk]"
decimalai skills add leoyeai-doubao-ttsimport asyncio
from claude_agent_sdk import ClaudeAgentOptions
from decimalai.claude_agent_sdk import agent_config
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
async def main():
question = "Hello!"
async with support.run(question) as run: # one user message, one run
async for message in run.query(options=ClaudeAgentOptions(max_turns=6)):
print(message)
# In a notebook or async code: await main()
asyncio.run(main())Prefer its own loader? ClaudeAgentOptions(plugins=[skills_plugin()], skills="all") reads the same folder. Use one or the other: a skill delivered both ways reaches the prompt twice.
The same install from Python, for a notebook or a setup script. agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[claude-agent-sdk]"from decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("leoyeai-doubao-tts")
if result.exit_code:
raise SystemExit(result.problems)
import asyncio
from claude_agent_sdk import ClaudeAgentOptions
from decimalai.claude_agent_sdk import agent_config
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
async def main():
question = "Hello!"
async with support.run(question) as run: # one user message, one run
async for message in run.query(options=ClaudeAgentOptions(max_turns=6)):
print(message)
# In a notebook or async code: await main()
asyncio.run(main())Prefer its own loader? ClaudeAgentOptions(plugins=[skills_plugin()], skills="all") reads the same folder. Use one or the other: a skill delivered both ways reaches the prompt twice.
No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/leoyeai-doubao-tts/SKILL.mdimport asyncio
from pathlib import Path
from claude_agent_sdk import ClaudeAgentOptions, query
skill = Path(".agents/skills/leoyeai-doubao-tts/SKILL.md").read_text()
options = ClaudeAgentOptions(system_prompt=f"You are a helpful agent.\n\n{skill}", max_turns=6)
async def main():
async for message in query(prompt="Hello!", options=options):
print(message)
# In a notebook or async code: await main()
asyncio.run(main())This gets SKILL.md only. The skill's 1 other file is not included.
agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[openai-agents]"
decimalai skills add leoyeai-doubao-ttsfrom agents import Agent, Runner
from decimalai.openai_agents import agent_config
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
agent = Agent(
name=support.name,
instructions=support.instructions, # your prompt, then the skill list
tools=[*support.tools], # your tools, then load_skill
)
# In a notebook or async code: result = await Runner.run(agent, "Hello!")
result = Runner.run_sync(agent, "Hello!")Using SandboxAgent? capabilities=[Shell(), decimalai.openai_agents.sandbox_skills()] points its own loader at the same folder.
The same install from Python, for a notebook or a setup script. agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[openai-agents]"from decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("leoyeai-doubao-tts")
if result.exit_code:
raise SystemExit(result.problems)
from agents import Agent, Runner
from decimalai.openai_agents import agent_config
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
agent = Agent(
name=support.name,
instructions=support.instructions, # your prompt, then the skill list
tools=[*support.tools], # your tools, then load_skill
)
# In a notebook or async code: result = await Runner.run(agent, "Hello!")
result = Runner.run_sync(agent, "Hello!")Using SandboxAgent? capabilities=[Shell(), decimalai.openai_agents.sandbox_skills()] points its own loader at the same folder.
No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/leoyeai-doubao-tts/SKILL.mdfrom pathlib import Path
from agents import Agent, Runner
skill = Path(".agents/skills/leoyeai-doubao-tts/SKILL.md").read_text()
agent = Agent(name="support", instructions=f"You are a helpful agent.\n\n{skill}")
# In a notebook or async code: result = await Runner.run(agent, "Hello!")
result = Runner.run_sync(agent, "Hello!")This gets SKILL.md only. The skill's 1 other file is not included.
agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[openai]"
decimalai skills add leoyeai-doubao-ttsimport json
from openai import OpenAI
from decimalai.openai import agent_config
client = OpenAI()
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
def lookup_order(order_id: str) -> str:
return f"Order {order_id} shipped yesterday."
# Your tools, as Chat Completions takes them, and what answers each.
TOOLS = [{"type": "function", "function": {
"name": "lookup_order",
"description": "Look up the status of an order.",
"parameters": {"type": "object", "properties": {"order_id": {"type": "string"}},
"required": ["order_id"]},
}}]
FUNCTIONS = {"lookup_order": lookup_order}
question = "Where is order A1001?"
with support.run(question) as run: # one user message, one run
# run.system is your prompt, then the skill list.
messages = [{"role": "system", "content": run.system}, run.message]
while True:
reply = client.chat.completions.create(
model="gpt-5.4-mini",
messages=messages,
tools=[*TOOLS, *run.tools], # your tools, then load_skill
).choices[0].message
messages.append(reply)
if not reply.tool_calls:
break
for call in reply.tool_calls:
# load_skill is answered by the run; your own tools by FUNCTIONS.
function = FUNCTIONS.get(call.function.name)
messages.append(run.tool_result(call) or {
"role": "tool", "tool_call_id": call.id,
"content": function(**json.loads(call.function.arguments)) if function
else f"There is no tool named {call.function.name!r}.",
})
print(reply.content)
# The Responses API takes run.response_tools instead of run.tools.The same install from Python, for a notebook or a setup script. agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[openai]"from decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("leoyeai-doubao-tts")
if result.exit_code:
raise SystemExit(result.problems)
import json
from openai import OpenAI
from decimalai.openai import agent_config
client = OpenAI()
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
def lookup_order(order_id: str) -> str:
return f"Order {order_id} shipped yesterday."
# Your tools, as Chat Completions takes them, and what answers each.
TOOLS = [{"type": "function", "function": {
"name": "lookup_order",
"description": "Look up the status of an order.",
"parameters": {"type": "object", "properties": {"order_id": {"type": "string"}},
"required": ["order_id"]},
}}]
FUNCTIONS = {"lookup_order": lookup_order}
question = "Where is order A1001?"
with support.run(question) as run: # one user message, one run
# run.system is your prompt, then the skill list.
messages = [{"role": "system", "content": run.system}, run.message]
while True:
reply = client.chat.completions.create(
model="gpt-5.4-mini",
messages=messages,
tools=[*TOOLS, *run.tools], # your tools, then load_skill
).choices[0].message
messages.append(reply)
if not reply.tool_calls:
break
for call in reply.tool_calls:
# load_skill is answered by the run; your own tools by FUNCTIONS.
function = FUNCTIONS.get(call.function.name)
messages.append(run.tool_result(call) or {
"role": "tool", "tool_call_id": call.id,
"content": function(**json.loads(call.function.arguments)) if function
else f"There is no tool named {call.function.name!r}.",
})
print(reply.content)
# The Responses API takes run.response_tools instead of run.tools.No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/leoyeai-doubao-tts/SKILL.mdfrom pathlib import Path
from openai import OpenAI
client = OpenAI()
skill = Path(".agents/skills/leoyeai-doubao-tts/SKILL.md").read_text()
reply = client.chat.completions.create(
model="gpt-5.4-mini",
messages=[
{"role": "system", "content": f"You are a helpful agent.\n\n{skill}"},
{"role": "user", "content": "Hello!"},
],
).choices[0].messageThis gets SKILL.md only. The skill's 1 other file is not included.
agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[anthropic]"
decimalai skills add leoyeai-doubao-ttsimport anthropic
from decimalai.anthropic import agent_config
client = anthropic.Anthropic()
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
question = "Hello!"
with support.run(question) as run: # one user message, one run
answer = client.beta.messages.tool_runner(
model="claude-haiku-5-5",
max_tokens=4096,
system=run.system, # your prompt, then the skill list
tools=[*run.tools], # your tools, then load_skill
messages=[{"role": "user", "content": question}],
).until_done()The same install from Python, for a notebook or a setup script. agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[anthropic]"from decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("leoyeai-doubao-tts")
if result.exit_code:
raise SystemExit(result.problems)
import anthropic
from decimalai.anthropic import agent_config
client = anthropic.Anthropic()
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
question = "Hello!"
with support.run(question) as run: # one user message, one run
answer = client.beta.messages.tool_runner(
model="claude-haiku-5-5",
max_tokens=4096,
system=run.system, # your prompt, then the skill list
tools=[*run.tools], # your tools, then load_skill
messages=[{"role": "user", "content": question}],
).until_done()No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/leoyeai-doubao-tts/SKILL.mdfrom pathlib import Path
import anthropic
client = anthropic.Anthropic()
skill = Path(".agents/skills/leoyeai-doubao-tts/SKILL.md").read_text()
reply = client.messages.create(
model="claude-haiku-5-5",
max_tokens=4096,
system=f"You are a helpful agent.\n\n{skill}",
messages=[{"role": "user", "content": "Hello!"}],
)This gets SKILL.md only. The skill's 1 other file is not included.
agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[google-genai]"
decimalai skills add leoyeai-doubao-ttsfrom google import genai
from google.genai import types
from decimalai.google_genai import agent_config
client = genai.Client()
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
def lookup_order(order_id: str) -> str:
return f"Order {order_id} shipped yesterday."
# Your functions, as declarations for the model, and what answers each.
TOOLS = [{"function_declarations": [{
"name": "lookup_order",
"description": "Look up the status of an order.",
"parameters_json_schema": {"type": "object", "properties": {"order_id": {"type": "string"}},
"required": ["order_id"]},
}]}]
FUNCTIONS = {"lookup_order": lookup_order}
question = "Where is order A1001?"
with support.run(question) as run: # one user message, one run
config = types.GenerateContentConfig(
system_instruction=run.system, # your prompt, then the skill list
tools=[*TOOLS, *run.tool_params], # your functions, then load_skill
)
contents = [{"role": "user", "parts": [{"text": run.message}]}]
while True:
response = client.models.generate_content(
model="gemini-3.5-flash", contents=contents, config=config,
)
if not response.function_calls:
break
contents.append(response.candidates[0].content)
parts = []
for call in response.function_calls:
# load_skill is answered by the run; your own functions by FUNCTIONS.
# A loop of your own rather than automatic function calling, which
# raises KeyError when the model asks for a function you did not pass.
function = FUNCTIONS.get(call.name)
parts.append(run.tool_result(call) or {"function_response": {
"name": call.name, "id": call.id,
"response": {"result": function(**(call.args or {})) if function
else f"There is no function named {call.name!r}."},
}})
contents.append({"role": "user", "parts": parts})
print(response.text)The same install from Python, for a notebook or a setup script. agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[google-genai]"from decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("leoyeai-doubao-tts")
if result.exit_code:
raise SystemExit(result.problems)
from google import genai
from google.genai import types
from decimalai.google_genai import agent_config
client = genai.Client()
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
def lookup_order(order_id: str) -> str:
return f"Order {order_id} shipped yesterday."
# Your functions, as declarations for the model, and what answers each.
TOOLS = [{"function_declarations": [{
"name": "lookup_order",
"description": "Look up the status of an order.",
"parameters_json_schema": {"type": "object", "properties": {"order_id": {"type": "string"}},
"required": ["order_id"]},
}]}]
FUNCTIONS = {"lookup_order": lookup_order}
question = "Where is order A1001?"
with support.run(question) as run: # one user message, one run
config = types.GenerateContentConfig(
system_instruction=run.system, # your prompt, then the skill list
tools=[*TOOLS, *run.tool_params], # your functions, then load_skill
)
contents = [{"role": "user", "parts": [{"text": run.message}]}]
while True:
response = client.models.generate_content(
model="gemini-3.5-flash", contents=contents, config=config,
)
if not response.function_calls:
break
contents.append(response.candidates[0].content)
parts = []
for call in response.function_calls:
# load_skill is answered by the run; your own functions by FUNCTIONS.
# A loop of your own rather than automatic function calling, which
# raises KeyError when the model asks for a function you did not pass.
function = FUNCTIONS.get(call.name)
parts.append(run.tool_result(call) or {"function_response": {
"name": call.name, "id": call.id,
"response": {"result": function(**(call.args or {})) if function
else f"There is no function named {call.name!r}."},
}})
contents.append({"role": "user", "parts": parts})
print(response.text)No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/leoyeai-doubao-tts/SKILL.mdfrom pathlib import Path
from google import genai
from google.genai import types
client = genai.Client()
skill = Path(".agents/skills/leoyeai-doubao-tts/SKILL.md").read_text()
response = client.models.generate_content(
model="gemini-3.5-flash",
contents="Hello!",
config=types.GenerateContentConfig(system_instruction=f"You are a helpful agent.\n\n{skill}"),
)This gets SKILL.md only. The skill's 1 other file is not included.
agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[langchain]" langchain-openai
decimalai skills add leoyeai-doubao-ttsfrom langchain.agents import create_agent
from decimalai.langchain import agent_config
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
agent = create_agent(
"openai:gpt-5.4-mini",
tools=[], # your tools; the middleware adds load_skill
middleware=[support.middleware], # your prompt, the skill list and load_skill
)
result = agent.invoke({"messages": [{"role": "user", "content": "Hello!"}]})The same install from Python, for a notebook or a setup script. agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[langchain]" langchain-openaifrom decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("leoyeai-doubao-tts")
if result.exit_code:
raise SystemExit(result.problems)
from langchain.agents import create_agent
from decimalai.langchain import agent_config
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
agent = create_agent(
"openai:gpt-5.4-mini",
tools=[], # your tools; the middleware adds load_skill
middleware=[support.middleware], # your prompt, the skill list and load_skill
)
result = agent.invoke({"messages": [{"role": "user", "content": "Hello!"}]})No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/leoyeai-doubao-tts/SKILL.mdfrom pathlib import Path
from langchain.agents import create_agent
skill = Path(".agents/skills/leoyeai-doubao-tts/SKILL.md").read_text()
agent = create_agent("openai:gpt-5.4-mini", tools=[], system_prompt=f"You are a helpful agent.\n\n{skill}")
result = agent.invoke({"messages": [{"role": "user", "content": "Hello!"}]})This gets SKILL.md only. The skill's 1 other file is not included.
CrewAI's own skill loader reads the installed folder. No DecimalAI account needed.
pip install "decimalai>=0.16" "crewai>=1.15.27"
decimalai skills add leoyeai-doubao-ttsimport decimalai.crewai
from crewai import Agent, Crew, Task
agent = Agent(
role="Support", goal="Help the customer", backstory="A support agent.",
llm=llm, # your own CrewAI LLM
skills=decimalai.crewai.skills(), # the installed folder
tools=decimalai.crewai.skill_tools(), # reads a skill's files, runs its scripts
)
task = Task(description="Hello!", expected_output="an answer", agent=agent)
Crew(agents=[agent], tasks=[task]).kickoff()The same install from Python, for a notebook or a setup script. CrewAI's own skill loader reads the installed folder. No DecimalAI account needed.
pip install "decimalai>=0.16" "crewai>=1.15.27"from decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("leoyeai-doubao-tts")
if result.exit_code:
raise SystemExit(result.problems)
import decimalai.crewai
from crewai import Agent, Crew, Task
agent = Agent(
role="Support", goal="Help the customer", backstory="A support agent.",
llm=llm, # your own CrewAI LLM
skills=decimalai.crewai.skills(), # the installed folder
tools=decimalai.crewai.skill_tools(), # reads a skill's files, runs its scripts
)
task = Task(description="Hello!", expected_output="an answer", agent=agent)
Crew(agents=[agent], tasks=[task]).kickoff()No DecimalAI package. CrewAI's own loader reads the folder, and nothing pins or updates it.
.agents/skills/leoyeai-doubao-tts/SKILL.mdfrom pathlib import Path
from crewai import Agent, Crew, Task
agent = Agent(
role="Support", goal="Help the customer", backstory="A support agent.",
llm=llm, # your own CrewAI LLM
skills=[Path(".agents/skills")],
)
task = Task(description="Hello!", expected_output="an answer", agent=agent)
Crew(agents=[agent], tasks=[task]).kickoff()This gets SKILL.md only. The skill's 1 other file is not included.
agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[adk]"
decimalai skills add leoyeai-doubao-ttsfrom decimalai.adk import DecimalAIPlugin, agent_config
from google.adk.agents import LlmAgent
from google.adk.apps import App
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
agent = LlmAgent(
name="support", # ADK needs a Python identifier
model="gemini-3.5-flash",
instruction=support.instruction, # your prompt, then the skill list
tools=[*support.tools], # your tools, then load_skill
)
# DecimalAIPlugin makes each invocation of runners built from this App one trace.
app = App(name="support", root_agent=agent, plugins=[DecimalAIPlugin()])Prefer ADK's own loader? SkillToolset(skills=decimalai.adk.skills(), ...) reads the same folder. Use one or the other: a skill delivered both ways reaches the prompt twice.
The same install from Python, for a notebook or a setup script. agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[adk]"from decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("leoyeai-doubao-tts")
if result.exit_code:
raise SystemExit(result.problems)
from decimalai.adk import DecimalAIPlugin, agent_config
from google.adk.agents import LlmAgent
from google.adk.apps import App
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
agent = LlmAgent(
name="support", # ADK needs a Python identifier
model="gemini-3.5-flash",
instruction=support.instruction, # your prompt, then the skill list
tools=[*support.tools], # your tools, then load_skill
)
# DecimalAIPlugin makes each invocation of runners built from this App one trace.
app = App(name="support", root_agent=agent, plugins=[DecimalAIPlugin()])Prefer ADK's own loader? SkillToolset(skills=decimalai.adk.skills(), ...) reads the same folder. Use one or the other: a skill delivered both ways reaches the prompt twice.
No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/leoyeai-doubao-tts/SKILL.mdfrom pathlib import Path
from google.adk.agents import LlmAgent
skill = Path(".agents/skills/leoyeai-doubao-tts/SKILL.md").read_text()
agent = LlmAgent(
name="support",
model="gemini-3.5-flash",
instruction=lambda context: f"You are a helpful agent.\n\n{skill}",
)This gets SKILL.md only. The skill's 1 other file is not included.
agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[pydantic-ai]"
decimalai skills add leoyeai-doubao-ttsfrom pydantic_ai import Agent
from decimalai.pydantic_ai import agent_config
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
agent = Agent(
"openai:gpt-4o-mini",
name=support.name,
tools=[], # your tools; the capability adds load_skill
capabilities=[support], # your prompt, the skill list and load_skill
)
# In a notebook or async code: result = await agent.run("Hello!")
result = agent.run_sync("Hello!")On the Pydantic AI harness, decimalai.pydantic_ai_harness.skills(project) uses its own loader instead.
The same install from Python, for a notebook or a setup script. agent_config() hands your agent the skill. With no DecimalAI key it reads your project's files and sends nothing. Needs SDK 0.27 or newer.
pip install "decimalai[pydantic-ai]"from decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("leoyeai-doubao-tts")
if result.exit_code:
raise SystemExit(result.problems)
from pydantic_ai import Agent
from decimalai.pydantic_ai import agent_config
# With no DECIMAL_API_KEY this reads the skills your project lists, from disk.
support = agent_config("support", fallback="You are a helpful agent.")
agent = Agent(
"openai:gpt-4o-mini",
name=support.name,
tools=[], # your tools; the capability adds load_skill
capabilities=[support], # your prompt, the skill list and load_skill
)
# In a notebook or async code: result = await agent.run("Hello!")
result = agent.run_sync("Hello!")On the Pydantic AI harness, decimalai.pydantic_ai_harness.skills(project) uses its own loader instead.
No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/leoyeai-doubao-tts/SKILL.mdfrom pathlib import Path
from pydantic_ai import Agent
skill = Path(".agents/skills/leoyeai-doubao-tts/SKILL.md").read_text()
agent = Agent("openai:gpt-4o-mini", instructions=f"You are a helpful agent.\n\n{skill}")
# In a notebook or async code: result = await agent.run("Hello!")
result = agent.run_sync("Hello!")This gets SKILL.md only. The skill's 1 other file is not included.
Deep Agents' own skill loader reads the installed folder. No DecimalAI account needed.
pip install "decimalai>=0.16" deepagents
decimalai skills add leoyeai-doubao-ttsimport decimalai.deepagents
from deepagents import create_deep_agent
agent = create_deep_agent(model=model, **decimalai.deepagents.skills())
agent.invoke({"messages": [{"role": "user", "content": "Hello!"}]})The default backend reads files but has no shell. To run a skill's scripts, pass skills(backend=LocalShellBackend(...)).
The same install from Python, for a notebook or a setup script. Deep Agents' own skill loader reads the installed folder. No DecimalAI account needed.
pip install "decimalai>=0.16" deepagentsfrom decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("leoyeai-doubao-tts")
if result.exit_code:
raise SystemExit(result.problems)
import decimalai.deepagents
from deepagents import create_deep_agent
agent = create_deep_agent(model=model, **decimalai.deepagents.skills())
agent.invoke({"messages": [{"role": "user", "content": "Hello!"}]})The default backend reads files but has no shell. To run a skill's scripts, pass skills(backend=LocalShellBackend(...)).
No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/leoyeai-doubao-tts/SKILL.mdfrom pathlib import Path
from deepagents import create_deep_agent
skill = Path(".agents/skills/leoyeai-doubao-tts/SKILL.md").read_text()
agent = create_deep_agent(model=model, system_prompt=f"You are a helpful agent.\n\n{skill}")
agent.invoke({"messages": [{"role": "user", "content": "Hello!"}]})This gets SKILL.md only. The skill's 1 other file is not included.
Its own skill loader reads the installed folder. No DecimalAI account needed.
pip install "decimalai>=0.16" agent-framework
decimalai skills add leoyeai-doubao-ttsimport asyncio
from agent_framework import Agent
from decimalai.agent_framework import skills
agent = Agent(client=client, instructions="You are a helpful agent.", context_providers=[skills()])
asyncio.run(agent.run("Hello!"))It caches skills by default, so restart the process after decimalai skills update.
The same install from Python, for a notebook or a setup script. Its own skill loader reads the installed folder. No DecimalAI account needed.
pip install "decimalai>=0.16" agent-frameworkfrom decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("leoyeai-doubao-tts")
if result.exit_code:
raise SystemExit(result.problems)
import asyncio
from agent_framework import Agent
from decimalai.agent_framework import skills
agent = Agent(client=client, instructions="You are a helpful agent.", context_providers=[skills()])
asyncio.run(agent.run("Hello!"))It caches skills by default, so restart the process after decimalai skills update.
No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/leoyeai-doubao-tts/SKILL.mdimport asyncio
from pathlib import Path
from agent_framework import Agent
skill = Path(".agents/skills/leoyeai-doubao-tts/SKILL.md").read_text()
agent = Agent(client=client, instructions=f"You are a helpful agent.\n\n{skill}")
asyncio.run(agent.run("Hello!"))This gets SKILL.md only. The skill's 1 other file is not included.
Strands' own skill loader reads the installed folder. No DecimalAI account needed.
pip install "decimalai>=0.16" strands-agents
decimalai skills add leoyeai-doubao-ttsfrom decimalai.strands import skills
from strands import Agent
from strands.vended_tools import file_editor, shell
agent = Agent(
model=model, # always pass one: the default is Amazon Bedrock
system_prompt="You are a helpful agent.",
tools=[file_editor, shell],
plugins=[skills()],
)
agent("Hello!")Strands loads an agent's skills once, so build the agent again after decimalai skills update.
The same install from Python, for a notebook or a setup script. Strands' own skill loader reads the installed folder. No DecimalAI account needed.
pip install "decimalai>=0.16" strands-agentsfrom decimalai import skillpkg
# Writes .agents/skills and .decimal/skills.toml. Safe to run twice.
result = skillpkg.add("leoyeai-doubao-tts")
if result.exit_code:
raise SystemExit(result.problems)
from decimalai.strands import skills
from strands import Agent
from strands.vended_tools import file_editor, shell
agent = Agent(
model=model, # always pass one: the default is Amazon Bedrock
system_prompt="You are a helpful agent.",
tools=[file_editor, shell],
plugins=[skills()],
)
agent("Hello!")Strands loads an agent's skills once, so build the agent again after decimalai skills update.
No DecimalAI package. The whole skill goes in every prompt, and nothing pins or updates it.
.agents/skills/leoyeai-doubao-tts/SKILL.mdfrom pathlib import Path
from strands import Agent
skill = Path(".agents/skills/leoyeai-doubao-tts/SKILL.md").read_text()
agent = Agent(model=model, system_prompt=f"You are a helpful agent.\n\n{skill}")
agent("Hello!")This gets SKILL.md only. The skill's 1 other file is not included.
Adds every file the skill has, pinned so you can update it. Cursor, Copilot, Cline and Warp read this folder by themselves.
pip install "decimalai>=0.15"
decimalai skills add leoyeai-doubao-ttsNo Python or account. Cursor, Copilot, Cline and Warp read this folder by themselves.
curl -fsSL --create-dirs -o .agents/skills/leoyeai-doubao-tts/SKILL.md https://app.decimal.ai/s/leoyeai-doubao-tts/SKILL.md.agents/skills/leoyeai-doubao-tts/SKILL.mdThis gets SKILL.md only. The skill's 1 other file is not included.
Give its text to your model as instructions. No account or package needed.
This gets SKILL.md only. The skill's 1 other file is not included.
Raw files: /s/leoyeai-doubao-tts/SKILL.md · /s/leoyeai-doubao-tts.json
Fetch the file and give its text to your model as instructions. No account or package needed.
curl -fsSL https://app.decimal.ai/s/leoyeai-doubao-tts/SKILL.mdcurl -fsSL https://app.decimal.ai/s/leoyeai-doubao-tts.jsonThis gets SKILL.md only. The skill's 1 other file is not included.
You don't need a DecimalAI account.
Saved prompts and skills, pinned versions, and traces of this skill in your runs. DecimalAI does not run your agent.
Claude Code reads files from your project, so DecimalAI config does not apply there.
On Claude Agent SDK: save the skill to an agent here, set DECIMAL_API_KEY, and the same code uses it with no command to run. Changes you save reach the next run with no redeploy.
On OpenAI Agents: save the skill to an agent here, set DECIMAL_API_KEY, and the same code uses it with no command to run. Changes you save reach the next run with no redeploy.
On OpenAI SDK: save the skill to an agent here, set DECIMAL_API_KEY, and the same code uses it with no command to run. Changes you save reach the next run with no redeploy.
On Anthropic: save the skill to an agent here, set DECIMAL_API_KEY, and the same code uses it with no command to run. Changes you save reach the next run with no redeploy.
On Gemini API: save the skill to an agent here, set DECIMAL_API_KEY, and the same code uses it with no command to run. Changes you save reach the next run with no redeploy.
On LangChain: save the skill to an agent here, set DECIMAL_API_KEY, and the same code uses it with no command to run. Changes you save reach the next run with no redeploy.
On CrewAI: set DECIMAL_API_KEY and add decimalai.init(crewai=True) to record runs and skill use. The skill version stays in your repo.
On Google ADK: save the skill to an agent here, set DECIMAL_API_KEY, and the same code uses it with no command to run. Changes you save reach the next run with no redeploy.
On Pydantic AI: save the skill to an agent here, set DECIMAL_API_KEY, and the same code uses it with no command to run. Changes you save reach the next run with no redeploy.
On Deep Agents: set DECIMAL_API_KEY and add decimalai.init(langchain=True) to record runs and skill use. The skill version stays in your repo.
On Microsoft Agent Framework: set DECIMAL_API_KEY and add decimalai.init(otel=True, agent_name="support") to record runs and skill use. The skill version stays in your repo.
On Strands: set DECIMAL_API_KEY and add decimalai.init(otel=True, agent_name="support") to record runs and skill use. The skill version stays in your repo.
Editors read files from your project, so DecimalAI config does not apply there.
Anywhere else: record a use with decimalai.log_skill_activation() inside a trace.
本 skill 通过火山引擎豆包语音合成大模型的单向流式 HTTP V3 接口,将文本合成为语音音频文件。
官方文档:豆包语音合成 API 文档
用户需要提供以下环境变量(通过 export 设置或在脚本参数中传入):
DOUBAO_APP_ID:火山引擎控制台获取的 APP IDDOUBAO_ACCESS_KEY:火山引擎控制台获取的 Access TokenDOUBAO_SPEAKER:音色 ID(可选,默认为 zh_female_xiaohe_uranus_bigtts)
S_ 开头,可前往官方后台创建:音色复刻控制台如果用户没有设置 DOUBAO_APP_ID 和 DOUBAO_ACCESS_KEY,先提醒用户设置,并告知获取方式:登录火山引擎控制台 → 豆包语音 → 创建应用 → 获取 APP ID 和 Access Token。
如果用户未设置 DOUBAO_SPEAKER,默认使用 zh_female_xiaohe_uranus_bigtts(小何 2.0,通用中文女声)。
向用户确认以下信息(有合理默认值的可以跳过确认):
| 参数 | 说明 | 默认值 |
|---|---|---|
| 待合成文本 | 要转语音的文字内容 | (必填) |
| 音色 ID(speaker) | 音色标识符。声音复刻音色以 S_ 开头;根据上下文从下方音色表中选择合适音色 | $DOUBAO_SPEAKER 或 zh_female_xiaohe_uranus_bigtts |
| 资源 ID(resource_id) | 声音复刻用 seed-icl-1.0;官方 1.0 音色用 seed-tts-1.0;官方 2.0 音色用 seed-tts-2.0 | seed-tts-2.0 |
| 音频格式(format) | mp3 / ogg_opus / pcm | mp3 |
| 采样率(sample_rate) | 可选 8000/16000/22050/24000/32000/44100/48000 | 24000 |
| 情感(emotion) | 情感类型,仅多情感音色支持。中文音色:happy / sad / angry / surprised / fear / hate / excited / coldness / neutral 等;英文音色:neutral / happy / angry / sad / excited / chat / warm 等 | 不设置 |
| 情绪强度(emotion_scale) | 范围 1~5,值越大情感越明显(非线性),需配合 emotion 使用 | 4 |
| 输出文件名 | 生成的音频文件名 | output.mp3 |
运行脚本:
# 基础用法(resource-id 自动推断)
python3 /path/to/doubao-tts/scripts/tts_synthesize.py \
--text "要合成的文本" \
--speaker "${DOUBAO_SPEAKER:-zh_female_xiaohe_uranus_bigtts}" \
--format mp3 \
--sample-rate 24000 \
--output /mnt/user-data/outputs/output.mp3
# 带情感的合成(仅多情感音色支持)
python3 /path/to/doubao-tts/scripts/tts_synthesize.py \
--text "要合成的文本" \
--speaker "zh_female_shuangkuaisisi_emo_v2_mars_bigtts" \
--emotion happy \
--emotion-scale 4 \
--output /mnt/user-data/outputs/output.mp3
环境变量 DOUBAO_APP_ID 和 DOUBAO_ACCESS_KEY 必须已设置。也可以通过 --app-id 和 --access-key 参数直接传入。
脚本会将合成的音频保存到指定路径。合成完成后,使用 present_files 工具将文件呈现给用户。
Agent 应根据上下文(用户要求的角色、场景、风格)从下表中选择最合适的音色 ID。
完整音色列表参见官方文档:音色列表
seed-tts-2.0)| 场景 | 音色名称 | voice_type(音色ID) | 语种 | 适用角色/描述 |
|---|---|---|---|---|
| 通用场景 | 小何 2.0 ⭐默认 | zh_female_xiaohe_uranus_bigtts | 中文 | 通用女声,自然亲切 |
| 通用场景 | Vivi 2.0 | zh_female_vv_uranus_bigtts | 中文/日文/印尼语/西班牙语 | 多语种女声,情感丰富 |
| 通用场景 | 云舟 2.0 | zh_male_m191_uranus_bigtts | 中文 | 通用男声 |
| 通用场景 | 小天 2.0 | zh_male_taocheng_uranus_bigtts | 中文 | 通用男声,年轻 |
| 通用场景 | 刘飞 2.0 | zh_male_liufei_uranus_bigtts | 中文 | 通用男声 |
| 通用场景 | 魅力苏菲 2.0 | zh_male_sophie_uranus_bigtts | 中文 | 通用男声 |
| 通用场景 | 清新女声 2.0 | zh_female_qingxinnvsheng_uranus_bigtts | 中文 | 清新淡雅女声 |
| 通用场景 | 甜美小源 2.0 | zh_female_tianmeixiaoyuan_uranus_bigtts | 中文 | 甜美女声 |
| 通用场景 | 甜美桃子 2.0 | zh_female_tianmeitaozi_uranus_bigtts | 中文 | 甜美女声 |
| 通用场景 | 爽快思思 2.0 | zh_female_shuangkuaisisi_uranus_bigtts | 中文 | 爽朗活泼女声 |
| 通用场景 | 邻家女孩 2.0 | zh_female_linjianvhai_uranus_bigtts | 中文 | 亲切邻家风格女声 |
| 通用场景 | 少年梓辛 2.0 | zh_male_shaonianzixin_uranus_bigtts | 中文 | 少年男声,青春感 |
| 通用场景 | 魅力女友 2.0 | zh_female_meilinvyou_uranus_bigtts | 中文 | 魅力成熟女声 |
| 通用场景 | 流畅女声 2.0 | zh_female_liuchangnv_uranus_bigtts | 中文 | 流畅自然女声,适合长文朗读 |
| 通用场景 | 儒雅逸辰 2.0 | zh_male_ruyayichen_uranus_bigtts | 中文 | 儒雅成熟男声 |
| 角色扮演 | 知性灿灿 2.0 | zh_female_cancan_uranus_bigtts | 中文 | 知性干练女声 |
| 角色扮演 | 撒娇学妹 2.0 | zh_female_sajiaoxuemei_uranus_bigtts | 中文 | 撒娇可爱女声 |
| 视频配音 | 猴哥 2.0 | zh_male_sunwukong_uranus_bigtts | 中文 | 孙悟空角色,豪迈 |
| 视频配音 | 佩奇猪 2.0 | zh_female_peiqi_uranus_bigtts | 中文 | 卡通儿童角色 |
| 视频配音 | 大壹 2.0 | zh_male_dayi_uranus_bigtts | 中文 | 视频配音男声 |
| 视频配音 | 黑猫侦探社咪仔 2.0 | zh_female_mizai_uranus_bigtts | 中文 | 可爱卡通女声 |
| 视频配音 | 鸡汤女 2.0 | zh_female_jitangnv_uranus_bigtts | 中文 | 温情励志女声 |
| 教育场景 | Tina老师 2.0 | zh_female_yingyujiaoxue_uranus_bigtts | 中文/英式英语 | 教师/教育场景 |
| 客服场景 | 暖阳女声 2.0 | zh_female_kefunvsheng_uranus_bigtts | 中文 | 客服专用,温暖专业 |
| 有声阅读 | 儿童绘本 2.0 | zh_female_xiaoxue_uranus_bigtts | 中文 | 儿童故事、绘本朗读 |
| 多语种 | Tim | en_male_tim_uranus_bigtts | 美式英语 | 英文男声 |
| 多语种 | Dacey | en_female_dacey_uranus_bigtts | 美式英语 | 英文女声 |
| 多语种 | Stokie | en_female_stokie_uranus_bigtts | 美式英语 | 英文女声 |
seed-tts-1.0)| 场景 | 音色名称 | voice_type(音色ID) | 语种 | 适用角色/描述 |
|---|---|---|---|---|
| 通用 | 灿灿/Shiny | zh_female_cancan_mars_bigtts | 中文/美式英语 | 活泼开朗女声 |
| 通用 | Vivi | zh_female_vv_mars_bigtts | 中文 | 标准女声 |
| 通用 | 爽快思思/Skye | zh_female_shuangkuaisisi_moon_bigtts | 中文/美式英语 | 爽朗活泼女声 |
| 通用 | 温暖阿虎/Alvin | zh_male_wennuanahu_moon_bigtts | 中文/美式英语 | 温暖亲切男声 |
| 通用 | 少年梓辛/Brayan | zh_male_shaonianzixin_moon_bigtts | 中文/美式英语 | 青春少年男声 |
| 通用 | 清新女声 | zh_female_qingxinnvsheng_mars_bigtts | 中文 | 清新淡雅 |
| 通用 | 知性女声 | zh_female_zhixingnvsheng_mars_bigtts | 中文 | 知性成熟女声 |
| 通用 | 清爽男大 | zh_male_qingshuangnanda_mars_bigtts | 中文 | 清爽大学生男声 |
| 通用 | 邻家女孩 | zh_female_linjianvhai_moon_bigtts | 中文 | 亲切邻家风 |
| 通用 | 渊博小叔 | zh_male_yuanboxiaoshu_moon_bigtts | 中文 | 知识渊博叔叔感 |
| 通用 | 阳光青年 | zh_male_yangguangqingnian_moon_bigtts | 中文 | 积极阳光男声 |
| 通用 | 甜美小源 | zh_female_tianmeixiaoyuan_moon_bigtts | 中文 | 甜美女声 |
| 通用 | 甜美悦悦 | zh_female_tianmeiyueyue_moon_bigtts | 中文 | 甜美女声 |
| 通用 | 清澈梓梓 | zh_female_qingchezizi_moon_bigtts | 中文 | 清澈干净女声 |
| 通用 | 开朗姐姐 | zh_female_kailangjiejie_moon_bigtts | 中文 | 开朗大姐姐 |
| 通用 | 邻家男孩 | zh_male_linjiananhai_moon_bigtts | 中文 | 亲切邻家男声 |
| 通用 | 心灵鸡汤 | zh_female_xinlingjitang_moon_bigtts | 中文 | 温情励志女声 |
| 通用 | 快乐小东 | zh_male_xudong_conversation_wvae_bigtts | 中文 | 对话场景男声 |
| 通用 | 亲切女声 | zh_female_qinqienvsheng_moon_bigtts | 中文 | 亲切温和女声 |
| 教育 | Tina老师 | zh_female_yingyujiaoyu_mars_bigtts | 中文/英式英语 | 教学场景 |
| 音色名称 | voice_type(音色ID) | 支持的情感 | 适用场景 |
|---|---|---|---|
| 爽快思思(多情感) | zh_female_shuangkuaisisi_emo_v2_mars_bigtts | 开心/悲伤/生气/惊讶/激动/冷漠/中性 | 情感丰富的对话、故事 |
| 柔美女友(多情感) | zh_female_roumeinvyou_emo_v2_mars_bigtts | 开心/悲伤/生气/惊讶/恐惧/厌恶/激动/冷漠/中性 | 情感丰富女声 |
| 高冷御姐(多情感) | zh_female_gaolengyujie_emo_v2_mars_bigtts | 开心/悲伤/生气/惊讶/恐惧/厌恶/激动/冷漠/中性 | 御姐/高冷女性角色 |
| 冷酷哥哥(多情感) | zh_male_lengkugege_emo_v2_mars_bigtts | 生气/冷漠/恐惧/开心/厌恶/中性/悲伤/沮丧 | 冷酷/高冷男性角色 |
| 傲娇霸总(多情感) | zh_male_aojiaobazong_emo_v2_mars_bigtts | 中性/开心/愤怒/厌恶 | 霸道总裁、强势男性 |
| 儒雅男友(多情感) | zh_male_ruyayichen_emo_v2_mars_bigtts | 开心/悲伤/生气/恐惧/激动/冷漠/中性 | 温文尔雅男友 |
| 俊朗男友(多情感) | zh_male_junlangnanyou_emo_v2_mars_bigtts | 开心/悲伤/生气/惊讶/恐惧/中性 | 帅气男友 |
| 阳光青年(多情感) | zh_male_yangguangqingnian_emo_v2_mars_bigtts | 开心/悲伤/生气/恐惧/激动/冷漠/中性 | 阳光积极青年 |
| 优柔公子(多情感) | zh_male_yourougongzi_emo_v2_mars_bigtts | 开心/生气/恐惧/厌恶/激动/中性/沮丧 | 温柔优雅男性 |
| 北京小爷(多情感) | zh_male_beijingxiaoye_emo_v2_mars_bigtts | 生气/惊讶/恐惧/激动/冷漠/中性 | 北京腔调男声 |
| 广州德哥(多情感) | zh_male_guangzhoudege_emo_mars_bigtts | 生气/恐惧/中性 | 广州方言男声 |
| 京腔侃爷(多情感) | zh_male_jingqiangkanye_emo_mars_bigtts | 开心/生气/惊讶/厌恶/中性 | 京腔侃爷风格 |
| 甜心小美(多情感) | zh_female_tianxinxiaomei_emo_v2_mars_bigtts | 悲伤/恐惧/厌恶/中性 | 甜美女声 |
| 邻居阿姨(多情感) | zh_female_linjuayi_emo_v2_mars_bigtts | 中性/愤怒/冷漠/沮丧/惊讶 | 中年女性 |
| 深夜播客(多情感) | zh_male_shenyeboke_emo_v2_mars_bigtts | 惊讶/悲伤/中性/厌恶/开心/恐惧/激动/沮丧/冷漠/生气 | 深夜播客/电台 |
| Candice | en_female_candice_emo_v2_mars_bigtts | 深情/愤怒/ASMR/对话/兴奋/愉悦/中性/温暖 | 英文女声 |
| Serena | en_female_skye_emo_v2_mars_bigtts | 深情/愤怒/ASMR/对话/兴奋/愉悦/中性/悲伤/温暖 | 英文女声 |
| Glen | en_male_glen_emo_v2_mars_bigtts | 深情/愤怒/ASMR/对话/兴奋/愉悦/中性/悲伤/温暖 | 英文男声 |
| Sylus | en_male_sylus_emo_v2_mars_bigtts | 深情/愤怒/ASMR/权威/对话/兴奋/愉悦/中性/悲伤/温暖 | 英文男声 |
| Corey | en_male_corey_emo_v2_mars_bigtts | 愤怒/ASMR/权威/对话/深情/兴奋/愉悦/中性/悲伤/温暖 | 英式英语男声 |
| Nadia | en_female_nadia_tips_emo_v2_mars_bigtts | 深情/愤怒/ASMR/对话/兴奋/愉悦/中性/悲伤/温暖 | 英式英语女声 |
| 音色名称 | voice_type(音色ID) | 口音/语种 | 描述 |
|---|---|---|---|
| 湾湾小何 | zh_female_wanwanxiaohe_moon_bigtts | 台湾普通话 | 台湾腔女声 |
| 京腔侃爷/Harmony | zh_male_jingqiangkanye_moon_bigtts | 北京口音 | 北京腔侃爷 |
| 北京小爷 | zh_male_beijingxiaoye_moon_bigtts | 北京口音 | 北京腔男声 |
| 呆萌川妹 | zh_female_daimengchuanmei_moon_bigtts | 四川口音 | 川味女声 |
| 豫州子轩 | zh_male_yuzhouzixuan_moon_bigtts | 河南口音 | 河南腔男声 |
| 广西远舟 | zh_male_guangxiyuanzhou_moon_bigtts | 广西口音 | 广西腔男声 |
| 广州德哥 | zh_male_guozhoudege_moon_bigtts | 广东口音 | 广东腔男声 |
| 湾区大叔 | zh_female_wanqudashu_moon_bigtts | 广东口音 | 广东腔 |
| 浩宇小哥 | zh_male_haoyuxiaoge_moon_bigtts | 青岛口音 | 青岛腔男声 |
| 妹坨洁儿 | zh_female_meituojieer_moon_bigtts | 长沙口音 | 长沙腔女声 |
| 粤语小溏 | zh_female_yueyunv_mars_bigtts | 粤语 | 粤语女声 |
| 音色名称 | voice_type(音色ID) | 角色特征 |
|---|---|---|
| 奶气萌娃 | zh_male_naiqimengwa_mars_bigtts | 萌娃、儿童角色 |
| 婆婆 | zh_female_popo_mars_bigtts | 老年女性、祖母 |
| 高冷御姐 | zh_female_gaolengyujie_moon_bigtts | 高冷御姐风格 |
| 傲娇霸总 | zh_male_aojiaobazong_moon_bigtts | 霸道总裁、傲娇男 |
| 魅力女友 | zh_female_meilinvyou_moon_bigtts | 魅力女友 |
| 柔美女友 | zh_female_sajiaonvyou_moon_bigtts | 柔美撒娇女友 |
| 撒娇学妹 | zh_female_yuanqinvyou_moon_bigtts | 撒娇可爱学妹 |
| 东方浩然 | zh_male_dongfanghaoran_moon_bigtts | 正义男主角 |
| 深夜播客 | zh_male_shenyeboke_moon_bigtts | 深夜电台主播 |
| 音色名称 | voice_type(音色ID) | 角色/原型 |
|---|---|---|
| 猪八戒 | zh_male_zhubajie_mars_bigtts | 西游记猪八戒 |
| 唐僧 | zh_male_tangseng_mars_bigtts | 西游记唐僧 |
| 鲁班七号 | zh_male_lubanqihao_mars_bigtts | 王者荣耀鲁班七号 |
| 春日部姐姐 | zh_female_jiyejizi2_mars_bigtts | 哆啦A梦角色 |
| 女雷神 | zh_female_leidian_mars_bigtts | 雷神角色 |
| 庄周 | zh_male_zhuangzhou_mars_bigtts | 王者荣耀庄周 |
根据上下文智能选择音色:
| 使用场景 | 推荐音色 | 音色ID |
|---|---|---|
| 默认/通用 | 小何 2.0 | zh_female_xiaohe_uranus_bigtts |
| 正式/新闻播报 | 知性女声 | zh_female_zhixingnvsheng_mars_bigtts |
| 儿童故事/绘本 | 儿童绘本 2.0 | zh_female_xiaoxue_uranus_bigtts |
| 英语内容 | Dacey | en_female_dacey_uranus_bigtts |
| 深夜/电台/播客 | 深夜播客(多情感) | zh_male_shenyeboke_emo_v2_mars_bigtts |
| 有声书/长文朗读 | 流畅女声 2.0 | zh_female_liuchangnv_uranus_bigtts |
| 客服/助手 | 暖阳女声 2.0 | zh_female_kefunvsheng_uranus_bigtts |
| 教育/教学 | Tina老师 2.0 | zh_female_yingyujiaoxue_uranus_bigtts |
| 台湾腔 | 湾湾小何 | zh_female_wanwanxiaohe_moon_bigtts |
| 北京腔 | 京腔侃爷 | zh_male_jingqiangkanye_moon_bigtts |
| 古风/武侠角色 | 东方浩然 | zh_male_dongfanghaoran_moon_bigtts |
| 霸道总裁 | 傲娇霸总 | zh_male_aojiaobazong_moon_bigtts |
| 可爱萌娃 | 奶气萌娃 | zh_male_naiqimengwa_mars_bigtts |
| 情感化对话 | 爽快思思(多情感) | zh_female_shuangkuaisisi_emo_v2_mars_bigtts |
| 用户自定义复刻声音 | 用户提供的 S_ 音色 | S_xxxxxxxx(用户声音复刻ID) |
seed-icl-1.0 作为 resource_id,不能用 seed-tts-1.0 或 seed-tts-2.0seed-tts-2.0,不支持旧版 V1 接口seed-tts-1.0requests.Session 实现连接复用,符合官方最佳实践40402003:文本超长,需要分段40000001:参数错误,检查音色 ID 和 resource_id 是否匹配40300001:鉴权失败,检查 APP ID 和 Access KeyPublished skills whose descriptions closely match this one, with their headline benchmark lift.
Skills that do similar work, with their headline benchmark lift.
From the same source and nearby in the catalogue.