mcpField
C
chanjing-tts-voice-clone

chanjing-tts-voice-clone

github.com/chanjing-aiクリエイティブ・メディア22211 回インストール1 週間前に更新
リポジトリ

chanjing-tts-voice-clone について

chanjing-tts-voice-clone は、公開された参照音声 URL からカスタム音声を作成し、テキストを音声に合成するスキルです。中国語・英語の音声生成、速度調整、文単位のタイムスタンプが必要な場合に使えます。

主な機能

  1. 01公開音声 URL から音声を作成
  2. 02中国語・英語の音声合成
  3. 03読み上げ速度の調整
  4. 04文単位のタイムスタンプを返却
  5. 05音声と合成タスクの状態確認
  6. 06生成音声のダウンロード

活用シーン

  1. 01参照音声でナレーションを作成
  2. 02テキストから二言語の音声を生成
  3. 03完了した音声とタイムスタンプを取得

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/chanjing-tts-voice-cloneを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

manifest.yaml
scripts/
_auth.py
create_task.py
create_voice.py
poll_task.py
poll_voice.py

詳細

Chanjing TTS Voice Clone

機能の説明

ユーザーが提供した参照音声の公開 URL(蝉鏡のサーバーが取得)を基に音色を作成し、音声を合成します。タスクをポーリングし、インターフェースから返された URL から結果をダウンロードします。スクリプトはffmpeg/ffprobeに依存しません。認証情報、トークンの書き戻しと権限については manifest.yaml を参照してください。access_token / expire_in は更新時に同じファイル内のフィールドを上書きします。認証情報をバージョン管理リポジトリにコミットしないでください。

実行時の依存関係

  • python3 と同じリポジトリ内の scripts/*.py
  • なし:ffmpeg/ffprobe によるゲート

環境変数と機械可読な宣言

  • 環境変数のキー名と説明:manifest.yaml(environment セクション)および本文
  • 変数、認証情報、permissions.userContent(蝉鏡が取得する参照音声の公開 URL を含む):manifest.yaml

使用コマンド

  • ClawHub(slug はレジストリに準拠):clawhub run chanjing-tts-voice-clone
  • このリポジトリ:python skills/chanjing-tts-voice-clone/scripts/create_voice.py …(本文の 使い方 を参照)

登録とレビュー(単一の信頼できる情報源)

メインの認証情報、expire_in の書き戻しと上書きの動作、ユーザー参照音声 URL の境界などについては、manifest.yaml を参照してください。本ドキュメントの 使い方 以降は、API の手順と英語のインターフェース説明です。

このスキルを使用する場合

ユーザー提供の参照音声を使って、テキストから音声を生成する必要がある場合にこのスキルを使用してください。参照音声は、一般にアクセス可能な URL で提供する必要があります。

この TTS サービスでは、次のことができます。

  • 中国語と英語のバイリンガル対応
  • 話速の調整
  • 文単位のタイムスタンプ

このスキルの使い方

前提条件(権限の検証):この Skill を実行する前に、必ず chanjing-credentials-guard を使って AK/SK と Token を検証してください。スクリプトと guard は同じ認証情報を使用します。認証情報がない場合は、open_login_page.py を実行して登録/ログインページを開きます。認証情報とレビュー時の照合については manifest.yaml を参照してください。

セキュリティと認証情報(参照)

目的/認証情報/ユーザー提供の参照 URL/ダウンロードについては、manifest.yaml の credentials と clientPermissions(および準拠する permissions)を参照してください。この節以降の API ドキュメントで表を重複して管理しないでください。

Chanjing-TTS-Voice-Clone は非同期音声合成 API を提供します。 すべての API のホスト名は「https://open-api.chanjing.cc」です。 すべてのリクエストは JSON を使用して通信します。 このタスクでは、テキストのエンコードとデコードに UTF-8 を使用してください。

  1. 後続のリクエストに必要な access_token を取得します
  2. 音声ファイルの URL を参照音声として受け取る Create Voice API を呼び出します
  3. 結果が成功するまで Query Voice API をポーリングし、voice ID を保持します
  4. voice ID を使って Create Speech Generation Task API を呼び出し、task_id を記録します
  5. 結果が成功するまで Query Speech Generation Task Status API をポーリングします
  6. タスクのステータスが完了したら、API レスポンス内の対応する URL を使って生成された音声ファイルをダウンロードします
アクセストークン取得 API

~/.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
  }
}

レスポンスフィールドの説明:

第1階層フィールド第2階層フィールド説明
codeレスポンスステータスコード
msgレスポンスメッセージ
dataレスポンスデータ
access_token有効期間は1日です。以前のトークンは無効になります
expire_inトークンの有効期限

レスポンスステータスコードの説明:

code説明
0成功
400パラメーター形式エラー
40000パラメーターエラー
50000システム内部エラー
音声作成 API

次のエンドポイントに POST して音声を作成します。

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

リクエスト本文の例:

{
  "name": "example",
  "url": "https://example.com/abc.mp3"
}

リクエストフィールドの説明:

フィールド型必須説明
namestringはいこの音声の名前
urlstringはい参照音声ファイルの URL。形式は mp3、wav、m4a のいずれかである必要があります。対応する MIME タイプ:audio/x-wav、audio/mpeg、audio/m4a、video/mp4。サイズは100MB以下である必要があります。推奨音声長:30秒~5分
model_typestringはい「Cicada3.0-turbo」を使用します
languagestringいいえ「cn」または「en」。デフォルトは「cn」です

レスポンス例:

{
  "trace_id": "2f0f50951d0bae0a3be3569097305424",
  "code": 0,
  "msg": "success",
  "data": "C-Audio-53e4e53ba1bc40de91ffaa74f20470fc"
}

レスポンスフィールドの説明:

フィールド説明
codeステータスコード
msgメッセージ
data後続の手順で使用する Voice ID

レスポンスステータスコードの説明:

Code説明
0成功
400パラメーター形式エラー
10400AccessToken エラー
40000パラメーターエラー
40001QPS 超過
50000システム内部エラー
音声のポーリング API

以下のエンドポイントに GET リクエストを送信して、音声が使用可能かどうかを確認します。音声 ID は前の手順で取得します。 ポーリングには数分かかる場合があります。ステータスが音声の準備完了を示すまで、ポーリングを続けてください。

GET /open/v1/customised_audio?id={{voice_id}}
access_token: {{access_token}}

レスポンスの例:

{
  "trace_id": "7994cedae0f068d1e9e4f4abdf99215b",
  "code": 0,
  "msg": "success",
  "data": {
    "id": "C-Audio-53e4e53ba1bc40de91ffaa74f20470fc",
    "name": "声音克隆",
    "type": "cicada1.0",
    "progress": 0,
    "audio_path": "",
    "err_msg": "不支持的音频格式,请阅读接口文档",
    "status": 2
  }
}

レスポンスフィールドの説明:

第1階層フィールド第2階層フィールド説明
codeステータスコード
msgレスポンスメッセージ
data
id音声 ID
progress進捗:範囲は 0~100
type
name
err_msgエラーメッセージ
audio_path
status0-キュー待ち;1-処理中;2-完了;3-期限切れ;4-失敗;99-削除済み

レスポンスステータスコードの説明:

コード説明
0成功
10400AccessToken エラー
40000パラメーターエラー
40001QPS 超過
50000システム内部エラー
音声生成タスク作成 API

音声生成タスクを送信するには、以下のエンドポイントに POST します。

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

リクエストボディの例:

{
  "audio_man": "C-Audio-53e4e53ba1bc40de91ffaa74f20470fc",
  "speed": 1,
  "pitch": 1,
  "text": {
    "text": "Hello, I am your AI assistant."
  }
}

リクエストフィールドの説明:

パラメーター名型ネストされたキー必須例説明
audio_manstringはいC-Audio-53e4e53ba1bc40de91ffaa74f20470fc音声 ID。前の手順で取得します
speednumberはい1話速。範囲:0.5(遅い)~2(速い)
pitchnumberはい1ピッチ(常に 1 に設定)
textobjecttextはいHello, I am your Cicada digital humanリッチテキスト。テキストの長さは 4,000 文字未満
aigc_watermarkboolいいえfalse音声に可視ウォーターマークを追加するかどうか。デフォルトは false

レスポンスフィールドの説明:

フィールド説明
codeレスポンスステータスコード
msgレスポンスメッセージ
task_id音声合成タスク ID

レスポンスの例

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

レスポンスステータスコードの説明:

code説明
0成功
400入力パラメーターの形式エラー
10400AccessToken の検証に失敗しました
40000パラメーターエラー
40001QPS 上限を超過しました
40002生成時間の上限に達しました
50000システム内部エラー
音声生成タスクのステータス照会 API

以下のエンドポイントにリクエストを POST します。

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": "为医学诊断提供了重要工具"
      }
    ]
  }
}

レスポンスフィールドの説明:

第1階層フィールド第2階層フィールド第3階層フィールド説明
codeレスポンスステータスコード
msgレスポンスメッセージ
dataid音声 ID
type音声の種類
statusステータス:1 - 処理中、9 - 完了
text音声テキスト
fullurl生成された音声ファイルのダウンロード URL
path
duration音声の長さ
slice
errMsgエラーメッセージ
errReasonエラーの理由
subtitles(array type)key字幕 ID
start_time字幕の開始時刻
end_time字幕の終了時刻
subtitle字幕テキスト

レスポンスフィールドの説明:

コード説明
0レスポンス成功
10400AccessToken の検証に失敗しました
40000パラメーターエラー
50000システム内部エラー

スクリプト

この Skill にはスクリプト(skills/chanjing-tts-voice-clone/scripts/)が含まれており、chanjing-credentials-guard と同じ設定ファイルを使用します。AK/SK がない場合は、open_login_page.py スクリプトを実行して登録/ログインページを開きます。

スクリプト説明
create_voice.pyカスタム音声タスクを送信します(参照音声 URL)。voice_id を出力します
poll_voice.pyカスタム音声の準備が完了するまでポーリングします(status=2)。voice_id を出力します
create_task.pyカスタム音声を使用して TTS タスクを作成します。task_id を出力します
poll_task.pyTTS タスクが完了するまでポーリングします。音声のダウンロード URL を出力します

例(プロジェクトのルートまたは skill ディレクトリで実行します):

# 1. 创建定制声音(参考音频需为公开 URL)
VOICE_ID=$(python skills/chanjing-tts-voice-clone/scripts/create_voice.py --name "我的声音" --url "https://example.com/ref.mp3")

# 2. 轮询直到声音就绪
python skills/chanjing-tts-voice-clone/scripts/poll_voice.py --voice-id "$VOICE_ID"

# 3. 创建 TTS 任务
TASK_ID=$(python skills/chanjing-tts-voice-clone/scripts/create_task.py --audio-man "$VOICE_ID" --text "Hello, I am your AI assistant.")

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

コメント