mcpField
C
chanjing-tts

chanjing-tts

github.com/chanjing-ai创意与媒体22164 次安装1 周前更新
代码仓库

关于 chanjing-tts

通过 Chanjing TTS Open API 将文本合成为语音,适用于中文和英文文本转语音。该 Skill 可选择音色、轮询合成任务并下载音频,结果还包含句子级时间戳。

主要功能

  1. 01列出可用音色
  2. 02创建语音合成任务
  3. 03轮询状态并下载音频
  4. 04调整语速
  5. 05返回句子级时间戳

适用场景

  1. 01将中文文本生成语音
  2. 02将英文文本生成语音
  3. 03选择音色并调整语速

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/chanjing-ai/chan-skills --skill chanjing-tts

安装后在 Claude Code 中输入/chanjing-tts确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

manifest.yaml
scripts/
_auth.py
create_task.py
list_voices.py
poll_task.py

详细介绍

蝉镜 TTS

功能说明

调用蝉镜 TTS Open API:列举音色、创建合成任务、轮询并从接口返回的 URL 下载音频。脚本不依赖 ffmpeg/ffprobe。

运行依赖

  • python3 与同仓库 scripts/*.py
  • 无 ffmpeg/ffprobe 门控

环境变量与机器可读声明

  • 环境变量键名与说明:manifest.yaml(environment 段)及本文
  • 变量、凭据、合规 permissions、clientPermissions、agentPolicy:manifest.yaml

使用命令

  • ClawHub(slug 以注册表为准):clawhub run chanjing-tts
  • 本仓库:python skills/chanjing-tts/scripts/create_task.py …(见正文 如何使用)

登记与审稿(单一事实来源)

主凭据、下载行为、primaryEnv 省略等:以 manifest.yaml 为准。本文 如何使用部分起为 API 步骤说明。

何时使用此技能

当用户需要根据文本生成音频时,请使用此技能。

Chanjing TTS 支持:

  • 中文和英文
  • 多种系统音色
  • 调整语速
  • 在结果中提供句子级时间戳

如何使用此技能

前置条件(权限验证):执行此 Skill 前,必须先通过 chanjing-credentials-guard 完成 AK/SK 与 Token 校验。此 Skill 与 guard 使用同一套凭据(~/.chanjing/credentials.json);脚本在无凭据时会执行 open_login_page.py 脚本,在默认浏览器中打开 AK/SK 注册/登录页面,并提示配置命令。凭据与审稿对表见 manifest.yaml。

安全与凭据(引用)

详见 manifest.yaml 中的 credentials 与 clientPermissions(以及合规顶层 permissions)。

需要调用多个 API。所有 API 共用域名:"https://open-api.chanjing.cc"。 所有请求均使用 json 通信。 在此任务中,文本始终使用 utf-8 编码和解码。

  1. 获取后续所有 API 调用都必需的 access_token
  2. 列出所有音色 ID 并选择一个使用
  3. 调用 Create Speech API,记录 task_id
  4. 轮询 Query Speech Status API,直到成功,然后使用响应中的 url 下载生成的音频文件
获取 AccessToken

从 ~/.chanjing/credentials.json 读取 app_id 和 secret_key;如果没有有效 Token,则调用:

POST /open/v1/access_token
Content-Type: application/json

请求体(使用本地配置的 app_id、secret_key):

{
  "app_id": "<从 credentials.json 读取>",
  "secret_key": "<从 credentials.json 读取>"
}

响应示例:

{
  "trace_id": "8ff3fcd57b33566048ef28568c6cee96",
  "code": 0,
  "msg": "success",
  "data": {
    "access_token": "1208CuZcV1Vlzj8MxqbO0kd1Wcl4yxwoHl6pYIzvAGoP3DpwmCCa73zmgR5NCrNu",
    "expire_in": 1721289220
  }
}

响应字段说明:

一级字段二级字段说明
code响应状态码
msg响应消息
data响应数据
access_token有效期为一天,之前的 Token 将失效
expire_inToken 过期时间

响应状态码说明

代码说明
0成功
400参数格式无效
40000参数错误
50000系统内部错误
选择音色 ID

通过 API 获取所有可用的音色 ID,并选择适合当前任务的音色。 可根据音色名称推断方言或口音。

GET /open/v1/list_common_audio
access_token: {{access_token}}

使用以下请求体:

{
  "page": 1,
  "size": 100
}

Response example:

```json
{
  "trace_id": "25eb6794ffdaaf3672c25ed9efbe49c6",
  "code": 0,
  "msg": "success",
  "data": {
    "list": [
      {
        "id": "f9248f3b1b42447fb9282829321cfcf2",
        "grade": 0,
        "name": "带货小芸",
        "gender": "female",
        "lang": "multilingual",
        "desc": "",
        "speed": 1,
        "pitch": 1,
        "audition": "https://res.chanjing.cc/chanjing/res/upload/ms/2025-06-05/7945e0474b8cb526e884ee7e28e4af8d.wav"
      },
      {
        "id": "f5e69c1bbe414bec860da3294e177625",
        "grade": 0,
        "name": "方言口音老奶奶",
        "gender": "female",
        "lang": "multilingual",
        "desc": "",
        "speed": 1,
        "pitch": 1,
        "audition": "https://res.chanjing.cc/chanjing/res/upload/ms/2025-04-30/1b248ad05953028db5a6bcba9a951164.wav"
      },
      ...
    ],
    "page_info": {
      "page": 1,
      "size": 100,
      "total_count": 98,
      "total_page": 1
    }
  }
}

响应字段说明:

一级字段二级字段三级字段说明
code响应状态码
message响应消息
data响应数据
list列表数据公共音色 - 列表数据
id音色 ID
name音色名称;如果包含地名,生成的语音将使用方言
gender性别
lang语言
desc描述
speed语速
pitch音高
audition试听链接
grade等级

响应状态码说明:

代码说明
0响应成功
10400AccessToken 验证失败
40000参数错误
50000系统内部错误
51000系统内部错误
创建语音 API

提交语音生成任务,返回任务 ID,供后续轮询使用。

POST /open/v1/create_audio_task
access_token: {{access_token}}
Content-Type: application/json

请求体示例:

{
  "audio_man": "89843d52ccd04e2d854decd28d6143ce ",
  "speed": 1,
  "pitch": 1,
  "text": {
    "text": "Hello, I am your AI assistant."
  }
}

请求字段说明:

参数名称类型嵌套键必填示例描述
audio_manstring是89843d52ccd04e2d854decd28d6143ce声音 ID
speednumber是1语速:0.5(慢)- 2(快)
pitchnumber是1设置为 1 即可
textobjecttext是Hello, I am your AI assistant.富文本,长度必须少于 4000 个字符
aigc_watermarkbool否false是否为音频添加可见水印,默认为 false

响应示例:

{
  "trace_id": "dd09f123a25b43cf2119a2449daea6de",
  "code": 0,
  "msg": "success",
  "data": {
    "task_id": "88f635dd9b8e4a898abb9d4679e0edc8"
  }
}

响应字段说明:

字段描述
code响应状态码
msg响应消息
task_id任务 ID,用于后续轮询步骤

响应状态码说明:

code描述
0响应成功
400参数格式无效
10400AccessToken 验证失败
40000参数错误
40001超出 QPS 限制
40002生成时长达到限制
50000系统内部错误
轮询查询语音状态 API

轮询以下 API,直到语音生成完成。

POST /open/v1/audio_task_state
access_token: {{access_token}}
Content-Type: application/json

请求示例:

{
  "task_id": "88f635dd9b8e4a898abb9d4679e0edc8"
}

请求字段说明:

参数名称类型必填示例描述
task_idstring是88f789dd9b8e4a121abb9d4679e0edc8语音合成任务 ID

响应示例:

{
  "trace_id": "ab18b14574bbcc31df864099d474080e",
  "code": 0,
  "msg": "success",
  "data": {
    "id": "9546a0fb1f0a4ae3b5c7489b77e4a94d",
    "type": "tts",
    "status": 9,
    "text": [
      "猫在跌落时能够在空中调整身体,通常能够四脚着地,这种”猫右自己“反射显示了它们惊人的身体协调能力和灵活性。核磁共振成像技术通过利用人体细胞中氢原子的磁性来生成详细的内部图像,为医学诊断提供了重要工具。"
    ],
    "full": {
      "url": "https://cy-cds-test-innovation.cds8.cn/chanjing/res/upload/tts/2025-04-08/093a59021d85a72d28a491f21820ece4.wav",
      "path": "093a59013d85a72d28a491f21820ece4.wav",
      "duration": 18.81
    },
    "slice": null,
    "errMsg": "",
    "errReason": "",
    "subtitles": [
      {
        "key": "20c53ff8cce9831a8d9c347263a400a54d72be15",
        "start_time": 0,
        "end_time": 2.77,
        "subtitle": "猫在跌落时能够在空中调整身体"
      },
      {
        "key": "e19f481b6cd2219225fa4ff67836448e054b2271",
        "start_time": 2.77,
        "end_time": 4.49,
        "subtitle": "通常能够四脚着地"
      },
      {
        "key": "140beae4046bd7a99fbe4706295c19aedfeeb843",
        "start_time": 4.49,
        "end_time": 5.73,
        "subtitle": "这种,猫右自己"
      },
      {
        "key": "e851881271876ab5a90f4be754fde2dc6b5498fd",
        "start_time": 5.73,
        "end_time": 7.97,
        "subtitle": "反射显示了它们惊人的身体"
      },
      {
        "key": "fbb0b4138bad189b9fc02669fe1f95116e9991b4",
        "start_time": 7.97,
        "end_time": 9.45,
        "subtitle": "协调能力和灵活性"
      },
      {
        "key": "f73404d135feaf84dd8fbea13af32eac847ac26d",
        "start_time": 9.45,
        "end_time": 12.49,
        "subtitle": "核磁共振成像技术通过利用人体"
      },
      {
        "key": "e18827931223962e477b14b2b8046947039ac222",
        "start_time": 12.49,
        "end_time": 14.77,
        "subtitle": "细胞中氢原子的磁性来生成"
      },
      {
        "key": "d137bf2b0c8b7a39e3f6753b7cf5d92bd877d2d9",
        "start_time": 14.77,
        "end_time": 15.97,
        "subtitle": "详细的内部图像"
      },
      {
        "key": "0773911ae0dbaa763a64352abdb6bdac3ff8f149",
        "start_time": 15.97,
        "end_time": 18.41,
        "subtitle": "为医学诊断提供了重要工具"
      }
    ]
  }
}

响应字段说明:

一级字段二级字段三级字段描述
code响应状态码
msg响应消息
dataid音频 ID
type
status1:生成中;9:已完成
text语音文本
fullurl生成的音频文件下载 URL
path
duration音频时长
slice
errMsg错误消息
errReason错误原因
subtitles (array type)key字幕 ID
start_time字幕开始时间
end_time字幕结束时间
subtitle字幕文本

响应状态码说明:

code描述
0响应成功
10400AccessToken 验证失败
40000参数错误
50000系统内部错误

脚本

本 Skill 提供脚本(skills/chanjing-tts/scripts/),需要权限验证:与 chanjing-credentials-guard 使用同一配置文件;没有 AK/SK 时会执行 guard 的 open_login_page.py 脚本,在浏览器中打开注册/登录页面,并提示配置命令。

脚本说明
list_voices.py列出公共声音,默认输出 id/name 表,可选 --json 输出完整数据
create_task.py创建 TTS 任务,输出 task_id
poll_task.py轮询任务直至完成,输出音频下载 URL(full.url)

示例(在项目根目录或 Skill 目录下执行):

# 1. 列出可用声音,选取一个 id
python skills/chanjing-tts/scripts/list_voices.py

# 2. 创建合成任务
TASK_ID=$(python skills/chanjing-tts/scripts/create_task.py \
  --audio-man "f9248f3b1b42447fb9282829321cfcf2" \
  --text "Hello, I am your AI assistant.")

# 3. 轮询到完成,得到音频下载链接
python skills/chanjing-tts/scripts/poll_task.py --task-id "$TASK_ID"

评论

支持 Markdown