Communityコーディング&開発github.com

Brclio/Skills(コーラ音声配信)

ListenHub の Xiaoman(晓曼)と Cola の女性音声を使って長文中国語ナレーションを生成・配信します。ユーザーが全文読み上げ、長いスクリプトの分割、セグメント分割およびマージ済み MP3 の提供、2つの音声の比較・保持、または両方の音声での同一オーディオを要求した場合に使用します。

Skills(コーラ音声配信) とは?

このスキルは、ListenHub の TTS 機能を活用して長文中国語の音声コンテンツを生成するための専用ツールです。Xiaoman(晓曼)と Cola の2つの女性音声をサポートし、各音声ごとにセグメント分割された MP3 とマージ済みの完全版 MP3 を生成します。ListenHub の API 経由でテキストチャンクを送信し、各チャンクの生成完了をポーリングで確認した後、ローカルにダウンロードして FFmpeg で結合します。入力を動的にセクション区切りで分割するため、長いスクリプトでも安定して動作します。ユーザーが明示的に片方の音声のみをリクエストした場合を除き、両方の音声がデフォルトで生成されます。Claude Code などの AI エージェント環境で動作し、`MEDIA:` 行によるファイルリンク配信を行います。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Brclio/Skills/tree/HEAD/skills/cola-voice-delivery

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Cola 音声配信

長い中国語スクリプトを ListenHub の2つの名前付き音声で生成し、各セグメントと結合した完全版 MP3 を配信します。このワークフローは、長い入力の失敗や音声バリアント間の誤った上書きを防ぐために存在します。

シンプルな呼び出し

スキル呼び出しと添付テキストファイルを完全なユーザー入力として扱います。ユーザーに分割、貼り付け、アップロード、名前変更、ダウンロード、結合などを要求しないでください。デフォルトの出力は両方の音声です:

  • 晓曼:すべての順序付き MP3 チャンク + 1 つのマージ済み MP3
  • Cola:すべての順序付き MP3 チャンク + 1 つのマージ済み MP3

チャンク数は動的に決まります:ソースの長さと信頼性のある TTS 入力サイズから選択し、固定数からは選択しません。短いテキストは 1 チャンクになる場合があり、長いポッドキャストスクリプトは多数のチャンクになる場合があります。すべてのファイルがローカルに存在し、各ファイルが MEDIA: 行で配信されるまで、実行は完了しません。ユーザーが明示的に片方の音声のみを要求した場合は、その音声の完全なセットを配信し、それ以外の場合は両方を生成します。

音声レジストリ

次の ListenHub スピーカー ID を正確に使用します:

  • Xiaoman / 晓曼:chat-girl-105-cn
  • Cola:chatb812x-500306f5

一方の音声をもう一方に置き換えないでください。最終応答では、各ファイルグループに使用した正確な音声を明記します。

受け入れ可能な入力

生テキストまたは添付のテキスト/ドキュメントファイルを受け入れます。入力がポッドキャスト音声ファイルまたはポッドキャスト URL の場合、まず ASR/文字起こし機能で文字起こしし、その結果をナレーションソースとして使用します。文字起こしの順序を保持し、意味のある場合は話者やセクションを分離します。

生成戦略

長い添付ファイルやプライベートファイル URL を ListenHub に直接送信するのではなく、2パスセクション保持パイプラインを使用します:

  1. ソースを読み上げ可能なテキストに正規化し、元のナレーション順序と意味のあるセクションタイトルを保持します。
  2. 各 TTS リクエストが信頼性のある入力サイズ内に収まるよう、章またはセクションの境界で分割します。これにより、失敗したリクエストを本全体を再生成せずに再試行できます。
  3. 同じ順序付きチャンクセットを Xiaoman で一度、Cola で一度生成します。音声の実行を独立させて、一方の音声の失敗や再試行が他方を置き換えないようにします。
  4. 各 ListenHub エピソードを成功までポーリングし、返された audioUrl をダウンロードします。生成された音声 URL を使用し、サービスの概要や要約は使用しません。
  5. チャンクを音声固有のディレクトリに保存し、期待されるすべてのチャンクが揃った後にのみマージします。両方のマージ出力の再生時間とファイルサイズを確認します。
  6. すべてのチャンクと両方のマージファイルを配信します。これにより、個々のチャプターの置き換えが可能になり、完全なオーディオブックを便利に再生できます。

生のチャンクテキストを直接渡すのは意図的です:ListenHub はローカルパスやプライベートアップロードテキスト URL を無効なソースとして拒否する可能性があります。ListenHub エンドポイントが特に URL や HTML ソースを必要とする場合、エスケープされたソーステキストを含む一時的な HTML ドキュメントを作成し、ユーザーの許可を得てアップロードし、取得可能な URL を渡します。HTML はフォールバックトランスポートとして扱い、直接チャンク生成の代替とはしません。HTML URL が拒否された場合は、直接チャンクテキストに戻ります。名前とディレクトリを分離することも同様に意図的です:共有出力名は以前に有効だった音声バージョンを上書きする可能性があります。

ワークフロー

  1. 音声を生成する前に、完全な入力を読み取るか文字起こしします。ソースの順序と表現を保持します。Markdown 見出し構文など、読み上げるべきではないマークアップのみを削除します(ユーザーが文書の逐語読みを要求する場合を除く)。意味のあるセクションタイトルとナレーションの手がかりは、スクリプトの一部として保持します。
  2. 信頼性のある入力サイズを見積もり、動的に分割します。セクション境界(##、チャプタータイトル、自然な段落区切り)を優先し、その後、過大なセクションを段落境界で分割します。必要なだけチャンクを使用し、決して 11 などの固定数を強制しません。チャンクにはゼロ埋めインデックス 00、01、02 などで名前を付けます。
  3. 要求された各音声について、ListenHub create_tts を次のパラメータで呼び出します:
    • language: zh
    • tts_type: text
    • tts_mode: direct
    • 選択したスピーカー ID
    • 1 チャンク分の生テキスト
  4. 返された各エピソードを check_status で processStatus が success になるまでポーリングします。返された audioUrl をチャンク順に記録します。エピソードの概要を音声ソースとして使用しないでください。それは提供されたスクリプトではなく要約である可能性があります。
  5. 成功したすべての音声 URL をローカルにダウンロードします。音声ごとに別々のディレクトリを使用します。例:
    • xiaoman-listenhub-parts/00.mp3
    • cola-listenhub-parts/00.mp3
  6. 各音声のチャンクを、バンドルされた scripts/merge_mp3.sh または同等の FFmpeg concat ワークフローでマージします。別々の明示的な出力名を使用します:
    • 全文朗读-晓曼-ListenHub合并版.mp3
    • 全文朗读-Cola-ListenHub合并版.mp3 両方のバリアントを共有ファイル名に書き込まないでください。
  7. 各マージファイルを音声プローブで確認します。再生時間とファイルサイズを報告し、配信前にすべての期待されるチャンクファイルが存在することを確認します。
  8. すべてのファイルに対して MEDIA: /absolute/path 行を 1 行ずつ配信します:両方のマージファイルと両方の音声のすべてのセグメントファイル。ディレクトリのみやマージ版のみを配信しないでください。

入力とエラー処理

  • ローカル添付ファイルを ListenHub に直接渡せない場合は、ローカルで読み取り、チャンクテキストを直接 create_tts に渡します。ナレーションコンテンツとしてローカルパスを渡さないでください。ListenHub はパスをそのまま読み取るか拒否します。
  • プライベートアップロードテキスト URL が Invalid input at source で拒否された場合は、その URL の再試行を停止し、直接チャンクテキストを使用します。
  • 生成が成功したが、その audioUrl のダウンロードがタイムアウトした場合は、返された ListenHub アセットホストに対して再試行し、エピソード ID と URL マッピングを保持します。
  • 音声生成が失敗した場合は、暗黙のうちに他方の音声で代用しないでください。失敗した音声を報告し、正常に生成された音声ファイルを保持します。
  • 既存のファイルを保持するため、音声固有の新しいファイル名を選択します。以前の音声のマージファイルを上書きすると、有効な配信物が失われます。
  • 長いスクリプトの場合、生成は有料で数分かかる場合があります。この作業をマルチステップタスクとして追跡し、要求された両方の音声グループ、そのチャンク、およびマージファイルが確認された後にのみ完了としてマークします。

最終受け入れチェック

回答する前に、1 つの TTS リクエストが成功しただけでなく、完全なチェーンを確認します:

  1. 生テキストまたはポッドキャストの文字起こしが完全に読み取られ、そのセクション順序が保持されました。
  2. 動的なチャンク数が入力の長さから選択されました。固定セグメント数は想定されていません。
  3. 同じ動的に選択されたチャンクインデックスが、要求された両方の音声に存在します。
  4. すべてのチャンクにダウンロードされた空でない MP3 ファイルがあります。
  5. 各音声に別々のマージ済み MP3 があり、共有ファイル名や上書きはありません。
  6. FFprobe または同等の音声プローブが、両方のマージファイルの再生時間とサイズを報告します。
  7. 最終応答が 2 つの正確なスピーカー ID を特定し、すべてのチャンクとすべてのマージファイルに対して MEDIA: 行が 1 行ずつ含まれています。

いずれかのチェックが失敗した場合は、作業を続けるか、特定の失敗した音声/チャンクを報告します。完全な配信を主張しないでください。

配信チェックリスト

  • すべての生成に正しいスピーカー ID が使用されました
  • すべてのソースセクションが順序通りカバーされました
  • 要求された各音声についてすべてのチャンクがダウンロードされました
  • マージファイルが音声固有の名前を持っています
  • 再生時間とファイルサイズが確認されました
  • すべてのチャンクファイルと両方のマージファイルが MEDIA: 行で配信されました

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Brclio/Skills

>- Create a reusable content-illustration character and simple IP Standard Pack for a person, creator account, or brand. Use for personal IP, account mascots, brand characters, blind-box or designer-toy characters, “把我变成一个角色”, “做一个账号形象”, or when someone needs consistent character images, values, turnaround views, and reusable prompts.

Brclio/Skills

生成 Bornforthis 个人 IP 风格的中文正文配图。用于用户要求为中文文章、帖子、博客、Notion 文档、知识讲解、工作流、方法论、流程、结构、状态、隐喻或观点制作“Bornforthis”“个人 IP”“蜡笔手绘”“正文配图”“文章插图”“配图建议”“shot list”“去标题”或“改图”时;默认使用 Bornforthis 青年男性角色、纯白背景、蜡笔或马克笔斜线纹理、深蓝粗描边、少量蓝红中文批注和温暖而略荒诞的绘本风格。

Brclio/Skills

Turn one or more user-provided reference photos into a complete publishable WeChat sticker album: plan and generate exactly 20 separate identity-consistent Q-version stickers with varied Chinese reactions, preserve untouched originals and high-resolution generation sources, create current-spec WeChat banner/cover/chat-icon assets and submission metadata, validate every deliverable, and build upload-only plus full-archive packages. Use when the user wants to create, rebuild, package, or prepare a WeChat sticker pack from reference images.

Brclio/Skills

Design a gender-adaptive personal-IP cartoon system from one portrait for users with no art background. Provides classic, random, guaranteed light-palette, industry full-body, and official brand or university VI theme modules plus action designs, front full-body characters, eight-angle turnarounds, 24-emotion packs, collages, and an offline HTML selection gallery. When the user gives no explicit feature-control instruction, every applicable feature defaults on. Use for personal IP, professional or industry avatars, campus-color characters, character sheets, expression packs, avatar blind boxes, interactive image shortlisting, or expansion of an approved set.

関連スキル