Summary
使用 ListenHub API 将文本转换为语音(TTS)。支持三种模式:快速合成(/v1/tts)、 多角色脚本(/v1/speech)、长文本流式合成(/v1/flow-speech/episodes)。 音色未指定时自动获取音色列表供用户选择,默认使用 chat-girl-105-cn(晓曼)。 Use…
smallnest/goal-workflow
使用 ListenHub API 将文本转换为语音(TTS)。支持三种模式:快速合成(/v1/tts)、 多角色脚本(/v1/speech)、长文本流式合成(/v1/flow-speech/episodes)。 音色未指定时自动获取音色列表供用户选择,默认使用 chat-girl-105-cn(晓曼)。 Use when user says: "tts", "text to speech", "语音合成", "文字转语音", "朗读", "生成语音", "生成音频", "转音频", "text to audio"
npx skills add smallnest/goal-workflow --skill listenhub-tts
使用 ListenHub API 将文本转换为语音(TTS)。支持三种模式:快速合成(/v1/tts)、 多角色脚本(/v1/speech)、长文本流式合成(/v1/flow-speech/episodes)。 音色未指定时自动获取音色列表供用户选择,默认使用 chat-girl-105-cn(晓曼)。 Use…
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Helps users discover and install agent skills when they ask questions like "how do I do X", "fi…
3.3M installsBrowser automation CLI for AI agents. Use when the user needs to interact with websites, includ…
810.4K installsReview UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "chec…
617.3K installsBuild, deploy, evaluate, optimize, fine-tune, and manage Microsoft Foundry agents, models, and …
576.5K installsPrepare azd-based Azure projects for deployment: generates azure.yaml, infrastructure (Bicep/Te…
568.3K installsOther skills from smallnest/goal-workflow · top by installs.
npx skills add smallnest/goal-workflow
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
master
Parsed from SKILL.md frontmatter.
Read, Write, Edit, Bash, AskUserQuestionFiles included with this skill beyond the listing page.
SKILL.md
8,702 B
SUMMARY.md
471 B
使用 ListenHub OpenAPI 将文本转换为语音。支持三种合成模式,覆盖从短文本到长文本的全场景。
https://api.marswave.ai/openapiAuthorization: Bearer $LISTENHUBAPIKEY(从环境变量读取)LISTENHUBAPIKEY 环境变量已设置,未设置则提示用户配置直接使用用户指定的 speakerId,跳过选择流程。
GET /v1/speakers/list?language=zh 获取可用音色列表- 默认选中 chat-girl-105-cn(晓曼 dxqqq) - 列表展示:{name}({gender},{speakerId}) - 附带每个音色的 demoAudioUrl 供参考
| 字段 | 值 |
|---|---|
| speakerId | chat-girl-105-cn |
| 名称 | 晓曼 dxqqq |
适用场景: 短文本(< 1000 字),单音色,需要低延迟
接口: POST /v1/tts
请求体:
{
"text": "要合成的文本",
"speakerId": "chat-girl-105-cn",
"format": "mp3",
"sampleRate": 24000,
"speed": 1.0
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| text | string | 是 | 要合成的文本 |
| speakerId | string | 是 | 音色 ID |
| format | string | 否 | 输出格式,默认 mp3 |
| sampleRate | int | 否 | 采样率,默认 24000 |
| speed | float | 否 | 语速,默认 1.0,范围 0.5 ~ 2.0 |
响应: 直接返回 MP3 二进制流(Content-Type: audio/mpeg)
调用示例:
curl -X POST "https://api.marswave.ai/openapi/v1/tts" \
-H "Authorization: Bearer $LISTENHUB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text": "你好世界", "speakerId": "chat-girl-105-cn"}' \
-o output.mp3
适用场景: 多角色对话、播客、有声书片段,需要不同音色交替朗读
接口: POST /v1/speech
请求体:
{
"script": [
{
"text": "你好,欢迎收听本期节目。",
"speakerId": "chat-girl-105-cn"
},
{
"text": "谢谢,今天我们来聊聊 AI。",
"speakerId": "chat-boy-101-cn"
}
],
"format": "mp3",
"sampleRate": 24000
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| script | array | 是 | 脚本数组,每项包含 text 和 speakerId |
| script[].text | string | 是 | 该段文本 |
| script[].speakerId | string | 是 | 该段的音色 ID |
| format | string | 否 | 输出格式,默认 mp3 |
| sampleRate | int | 否 | 采样率,默认 24000 |
响应: JSON
{
"audioUrl": "https://cdn.example.com/output.mp3",
"duration": 12.5
}
调用示例:
curl -X POST "https://api.marswave.ai/openapi/v1/speech" \
-H "Authorization: Bearer $LISTENHUB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"script": [
{"text": "你好,欢迎收听。", "speakerId": "chat-girl-105-cn"},
{"text": "谢谢,我们开始吧。", "speakerId": "chat-boy-101-cn"}
]
}'
适用场景: 长文本(> 1000 字),文章朗读,需要 AI 润色或分段处理
接口: POST /v1/flow-speech/episodes
请求体:
{
"title": "文章标题",
"content": "长文本内容...",
"speakerId": "chat-girl-105-cn",
"mode": "direct",
"format": "mp3"
}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| title | string | 是 | 音频标题 |
| content | string | 否 | 文本内容(与 contentUrl 二选一) |
| contentUrl | string | 否 | 内容 URL(与 content 二选一) |
| speakerId | string | 是 | 音色 ID |
| mode | string | 否 | direct(直接合成)或 aiPolish(AI 润色),默认 direct |
| format | string | 否 | 输出格式,默认 mp3 |
响应: JSON
{
"episodeId": "ep_abc123",
"status": "processing"
}
轮询获取结果:
GET /v1/flow-speech/episodes/{episodeId}
轮询策略:
completed 或 failed轮询响应:
{
"episodeId": "ep_abc123",
"status": "completed",
"audioUrl": "https://cdn.example.com/output.mp3",
"duration": 180.5
}
| status 值 | 说明 |
|---|---|
| processing | 合成中,继续轮询 |
| completed | 合成完成,audioUrl 可用 |
| failed | 合成失败,查看 errorMessage |
调用示例:
# 提交任务
curl -X POST "https://api.marswave.ai/openapi/v1/flow-speech/episodes" \
-H "Authorization: Bearer $LISTENHUB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "AI 技术趋势",
"content": "长文本内容...",
"speakerId": "chat-girl-105-cn",
"mode": "direct"
}'
# 轮询结果
curl "https://api.marswave.ai/openapi/v1/flow-speech/episodes/ep_abc123" \
-H "Authorization: Bearer $LISTENHUB_API_KEY"
接口: GET /v1/speakers/list
查询参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| language | string | 否 | 筛选语言,如 zh(中文)、en(英文) |
响应:
{
"speakers": [
{
"name": "晓曼 dxqqq",
"speakerId": "chat-girl-105-cn",
"demoAudioUrl": "https://cdn.example.com/demo.mp3",
"gender": "female",
"language": "zh"
}
]
}
根据用户输入自动选择最合适的模式:
| 条件 | 模式 |
|---|---|
| 文本 ≤ 1000 字,单音色 | 模式一:/v1/tts |
| 多角色脚本,需要不同音色 | 模式二:/v1/speech |
| 文本 > 1000 字,或需要 AI 润色 | 模式三:/v1/flow-speech/episodes |
| 用户提供 URL 作为内容来源 | 模式三:/v1/flow-speech/episodes |
如果用户明确指定模式,优先使用用户指定的模式。
当用户未指定音色时,使用 AskUserQuestion 展示音色列表:
请选择音色(默认:晓曼 dxqqq):
A. 晓曼 dxqqq(女,chat-girl-105-cn)[默认]
B. [其他音色名称]([性别],[speakerId])
C. ...
可选询问:
./output.mp3)./output.mp3)- 使用的模式 - 音色名称和 ID - 音频时长 - 文件大小 - 文件路径
LISTENHUBAPIKEY 环境变量用户输入: "把这段文字转成语音:今天天气真好,适合出去散步。"
执行流程:
LISTENHUBAPIKEY ✓/v1/ttschat-girl-105-cn(晓曼)./output.mp3用户输入: "用晓曼的声音朗读这篇文章:article.md"
执行流程:
article.md 内容/v1/flow-speech/episodeschat-girl-105-cn(晓曼)./article.mp3