Communitygithub.com

tts

テキストを自然な音声に変換するスキルです。ローカル(Kokoro)とクラウド(Noiz)の2つのバックエンドをサポートし、シンプルなテキスト読み上げからタイムライン単位の精密な音声合成まで対応します。

tts とは?

このスキルは、テキストを音声に変換するための多機能TTS(Text-to-Speech)ツールです。主に2つのバックエンドを提供します。ローカルで動作するKokoroと、クラウドベースで高度な機能を備えたNoizです。ユーザーはコマンドラインから手軽にテキストを音声に変換できるほか、SRT(字幕)ファイルを使ったタイムライン単位の音声合成も可能です。これにより、動画の吹き替えやナレーション、オーディオブックの作成に最適です。また、音声クローン機能や感情パラメータの調整、セグメントごとの声質変更など、プロフェッショナルな制作ワークフローに対応します。APIキーがない場合でもゲストモードで限定的な機能を利用でき、セキュリティ面ではファイル操作やネットワーク通信の詳細を明示し、ユーザーのプライバシーに配慮しています。Claude CodeやCursorなどのAIエージェントプラットフォームで使用することを想定して設計されています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/noizai/skills/tree/main/skills/tts

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

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

ドキュメント

tts は何をしますか?

任意のテキストを音声に変換します。ローカル(Kokoro)とクラウド(Noiz)の2つのバックエンド、シンプルモードとタイムラインモード、そしてセグメントごとの音声制御をサポートしています。

トリガー

  • テキスト読み上げ / tts / 話す / 発声
  • 音声クローン / 吹き替え
  • epubからオーディオ / srtからオーディオ / オーディオに変換
  • 语音 / 说 / 讲 / 说话

シンプルモード — テキストから音声へ

speak がデフォルトで、サブコマンドは省略可能です:

# 基本的な使い方(speak は暗黙)
python3 skills/tts/scripts/tts.py -t "Hello world"          # -o パスで保存先を指定
python3 skills/tts/scripts/tts.py -f article.txt -o out.mp3

# 音声クローン — ローカルファイルパスまたはURL
python3 skills/tts/scripts/tts.py -t "Hello" --ref-audio ./ref.wav
python3 skills/tts/scripts/tts.py -t "Hello" --ref-audio https://example.com/my_voice.wav -o clone.wav

# 音声メッセージ形式
python3 skills/tts/scripts/tts.py -t "Hello" --format opus -o voice.opus
python3 skills/tts/scripts/tts.py -t "Hello" --format ogg -o voice.ogg

サードパーティ連携(Feishu/Telegram/Discord)については ref_3rd_party.md を参照してください。

タイムラインモード — SRTから時間合わせした音声へ

セグメントごとの正確なタイミングが必要な場合(吹き替え、字幕、動画ナレーションなど)。

ステップ1:SRTを取得または作成する

ユーザーが持っていない場合は、テキストから生成します:

python3 skills/tts/scripts/tts.py to-srt -i article.txt -o article.srt
python3 skills/tts/scripts/tts.py to-srt -i article.txt -o article.srt --cps 15 --gap 500

--cps = 1秒あたりの文字数(デフォルト4、中国語に適切;英語は約15)。エージェントが手動でSRTを書くこともできます。

ステップ2:音声マップを作成する

デフォルトとセグメントごとの音声設定を制御するJSONファイル。segments キーは単一インデックス "3" または範囲 "5-8" をサポートします。

Kokoro音声マップ:

{
  "default": { "voice": "zf_xiaoni", "lang": "cmn" },
  "segments": {
    "1": { "voice": "zm_yunxi" },
    "5-8": { "voice": "af_sarah", "lang": "en-us", "speed": 0.9 }
  }
}

Noiz音声マップ(emo、reference_audio を追加サポート)。reference_audio はローカルパスまたはURL(ユーザー自身の音声;Noizのみ):

{
  "default": { "voice_id": "voice_123", "target_lang": "zh" },
  "segments": {
    "1": { "voice_id": "voice_host", "emo": { "Joy": 0.6 } },
    "2-4": { "reference_audio": "./refs/guest.wav" }
  }
}

動的参照音声スライシング: 動画を翻訳または吹き替えする際に、各文が元の動画の同じタイムスタンプの音声を自動的に参照音声として使用するようにしたい場合は、マップ内で reference_audio を設定する代わりに --ref-audio-track 引数を使用します:

python3 skills/tts/scripts/tts.py render --srt input.srt --voice-map vm.json --ref-audio-track original_video.mp4 -o output.wav

完全なサンプルは examples/ を参照してください。

ステップ3:レンダリング

python3 skills/tts/scripts/tts.py render --srt input.srt --voice-map vm.json -o output.wav
python3 skills/tts/scripts/tts.py render --srt input.srt --voice-map vm.json --backend noiz --auto-emotion -o output.wav

どちらを選ぶべきか

ニーズ推奨
単にテキストを読み上げるだけKokoro(デフォルト)
EPUB/PDFオーディオブック(チャプター付き)Kokoro(ネイティブサポート)
音声ブレンド("v1:60,v2:40")Kokoro
参照音声からの音声クローンNoiz
感情制御(emoパラメータ)Noiz
セグメントごとの正確なサーバーサイド時間Noiz

ユーザーが感情制御+音声クローン+正確な時間を同時に必要とする場合、3つすべてをサポートするバックエンドはNoizだけです。

ゲストモード(APIキー不要)

APIキーが設定されていない場合、tts.py は自動的にゲストモードにフォールバックします。これは認証不要の限定的なNoizエンドポイントです。ゲストモードは --voice-id、--speed、--format のみをサポートし、音声クローン、感情、時間、タイムラインレンダリングは利用できません。

# ゲストモード(APIキー未設定時に自動検出)
python3 skills/tts/scripts/tts.py -t "Hello" --voice-id 883b6b7c -o hello.wav

# 代わりにkokoroを使用するための明示的なバックエンドオーバーライド
python3 skills/tts/scripts/tts.py -t "Hello" --backend kokoro

利用可能なゲスト音声(15種類内蔵):

voice_id名前言語性別トーン
063a4491販売員(なおみ)jaF喜び
4252b9c8落ち着いた女性jaF穏やか
578b4be2熱血漢(たける)jaM怒り
a9249ce7安らぎ(みなと)jaM穏やか
f00e45a1旅人(かいと)jaM穏やか
b4775100悦悦|社交分享zhFJoyful
77e15f2c婉青|情绪抚慰zhFCalm
ac09aeb4阿豪|磁性主持zhMCalm
87cb2405建国|知识科普zhMCalm
3b9f1e27小明|科技达人zhMJoyful
95814addScience NarrationenMCalm
883b6b7cThe Mentor (Alex)enMJoyful
a845c7deThe Naturalist (Silas)enMCalm
5a68d66bThe Healer (Serena)enFCalm
0e4ab6ecThe Mentor (Maya)enFCalm

セキュリティとデータ開示

このスキルは実行時に以下のファイルおよびネットワーク操作を行います:

  • 認証情報の保存:config --set-api-key を実行すると、キーは ~/.config/noiz/api_key(権限 0600)に保存されます。環境変数 NOIZ_API_KEY も代替としてサポートされています。
  • レガシーキーの移行:~/.noiz_api_key が存在し ~/.config/noiz/api_key が存在しない場合、キーは新しい場所にコピー(削除はしない)されます。メッセージが表示され、古いファイルは手動で削除するためにそのまま残されます。
  • ネットワーク呼び出し(Noizバックエンド):テキストとオプションの参照音声は合成のために https://noiz.ai/v1/ にアップロードされます。Noizコマンドを呼び出さない限り、データは送信されません。
  • 参照音声のダウンロード:--ref-audio がURLの場合、ファイルは一時ファイルにダウンロードされ、API呼び出しに使用された後、削除されます。voice-idまたはref-audioが提供されていない場合、デフォルトの参照音声が storage.googleapis.com または noiz.ai からダウンロードされます。
  • 一時ファイル:合成中に一時的な音声/テキストファイルが作成される場合があり、使用後はクリーンアップされます。
  • ffmpeg:タイムライン render モードで最終音声を組み立てるためにのみ呼び出されます。

出力パスと ~/.config/noiz/ 以外のファイルは変更されません。Kokoroバックエンドは完全にオフラインで動作し、ネットワークアクセスはありません。

要件

  • ffmpeg がPATHに含まれていること(タイムラインモードのみ)
  • requests パッケージ:uv pip install requests(Noizバックエンドに必要)
  • APIキーは Noiz Developer で取得し、python3 skills/tts/scripts/tts.py config --set-api-key YOUR_KEY を実行してください(ゲストモードはキーなしでも動作しますが、機能は制限されます)
  • Kokoro:すでにインストールされている場合は、--backend kokoro を渡してローカルバックエンドを使用します

Noiz API認証

Authorization としてbase64エンコードされたAPIキーのみを使用してください。プレフィックスは付けません(例:APIKEY や Bearer は不要)。プレフィックスがあると401エラーになります。

バックエンドの詳細と完全な引数リファレンスについては、reference.md を参照してください。

Individual skills in this repo

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

関連スキル