ローカルAI読み上げガイド

自分のコンピューターでチャットの音声を生成します。多くの配信者には内蔵音声だけで十分です。

これは必要?

「ローカル」には、ブラウザーで動くSSN内蔵音声と、自分で起動する音声サーバーの2種類があります。

やりたいこと…操作
インストール不要の無料音声使用するもの: 内蔵音声。多くの人はここまでで十分です。
既に動かしている音声サーバーを使うサーバーを接続する.
複製した音声参照: 音声の複製.
OBSでFish Audioを使う参照先: Fish Audioの設定.
有料クラウド音声参照先: TTSリファレンス.
SSNが取得するどのチャットでも使えます。音声はYouTubeやTwitchではなくSSNのプレーヤーが担当します。次とは異なり: システム読み上げ(System TTS)とは異なり、ローカルAI音声は自分で音声を生成するのでOBSで取り込めます。 プロバイダーの比較と試聴.

内蔵音声(インストール不要)

ブラウザーのSSN内で動作し、サーバー、Docker、APIキーは不要です。

音声音質コンピューターの負荷リンクの値
Kokoro優秀中程度。GPUで高速化。ttsprovider=kokoro
Piperとても良い低い。CPUのみ。ttsprovider=piper
Kitten良好非常に低い。CPUのみ。ttsprovider=kitten
eSpeak-NG機械的最小限。CPUのみ。ttsprovider=espeak

4手順で設定する

  1. 追加する項目: &speech=en-US&ttsprovider=kokoro の追加先: dock.html リンク(または piper, kitten, espeak.)
  2. そのリンクをOBSの次のソースに追加します: ブラウザソース。音声を生成するのはそのページです。
  3. プロパティで次を有効にします: OBSで音声を制御する(Control audio via OBS).
  4. 短いテストチャットを送ります。例: Testing local TTS.
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=kokoro
初回は時間がかかります。 KokoroとPiperは最初にモデルをダウンロードします(約50~200MB)。以後は再利用しますが、起動には少し時間がかかります。OBSはChromeと別に保存します。

音声、速度、その他の言語: プロバイダー設定。クリックで操作したい場合は次を使います: 設定ガイド.

独自のTTSサーバーを接続する

サーバーを使うと、音声の種類を増やしたり、音声を複製したり、複数ツールで同じ音声を使えます。SSNは次の方式で通信します: OpenAI互換 音声サーバー。APIキーは不要です。

  1. サーバーを起動します。 Kokoro-FastAPI が最も簡単です。
  2. SSNのTTSプロバイダー一覧を開き、次を選びます: カスタム/ローカルTTSエンドポイント(Custom / Local TTS Endpoint).
  3. 次の場所で: カスタム/ローカルAPIエンドポイントにサーバーのアドレスを入力します。例: http://127.0.0.1:8880/v1/audio/speech.
  4. APIキーは空欄にします。
  5. サーバーが対応する音声を選びます: af_bella をKokoro用に、 nova をopenedai-speech用に使います。
  6. リンクをOBSにコピーし、テストチャットを送ります。
Social Stream NinjaのローカルTTS設定欄を示す、スクリーンショット風の図
重要なのはエンドポイント欄です。
OBSが別のコンピューターにある場合 参照する項目: localhostの意味 を先に設定します。 ブラウザーにブロックされる場合 使用するもの: ブリッジ.
サーバーモデルGPUディスクポート
Kokoro-FastAPI (推奨)Kokoro 82M任意約2GB8880
openedai-speech (Piper)PiperCPUのみ1GB未満8000
kokoro-webKokoro 82M任意約2GB3000

これらには次が必要です: Docker Desktop をインストールして起動する必要があります。個人利用は無料です。

localhostの意味

最もよくある間違いです。

localhost および 127.0.0.1 は常に「このコンピューター自身」を意味します。 OBSと音声サーバーが別のPCにある場合は、 127.0.0.1 はOBSのPCを指します。
localhostは同じコンピューターを指し、別のコンピューターにはLAN IPアドレスが必要であることを示す図
自分の構成使うアドレス
OBSとサーバーが同じPChttp://127.0.0.1:8880/v1/audio/speech
自宅の別PCにサーバーがあるhttp://192.168.x.x:8880/v1/audio/speechをそのPCのローカルIPに置き換えます:
SSNアプリのテストは成功するがOBSは無音OBSから使えるアドレスが必要です。アプリでの成功はOBSから接続できる証明にはなりません。

ファイアウォールでポートを許可し、Dockerが公開しているかも確認します(-p 8880:8880).

Kokoro-FastAPI

Kokoro-FastAPI はKokoroをローカルサーバーとして動かします。CPUで動作し、GPUは不要です。

  1. 端末(コマンドプロンプト、PowerShell、Terminal)で次のいずれかを実行します:
    docker run -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2

    NVIDIA GPU(高速):

    docker run --gpus all -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-gpu:v0.2.0post4
    初回だけ約1.5~2GBをダウンロードします。
  2. 開く項目: http://localhost:8880/web/。67種類以上の音声をテストできるページが表示されるはずです。
  3. このリンクを使います(サーバーが別PCならアドレスを変更):
    dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8880/v1/audio/speech&voiceopenai=af_bella
Kokoroの音声名を使う、たとえば af_bella, af_sarah, am_adam または bf_emma。次のようなOpenAIの名前は: nova または alloy は使えない場合があります。

Dockerと一緒に自動起動する:

docker run -d --restart unless-stopped -p 8880:8880 ghcr.io/remsky/kokoro-fastapi-cpu:v0.2.2

openedai-speech(PiperとXTTS-v2)

アーカイブ済みプロジェクト。 openedai-speechは2026年1月にアーカイブされ、開発元もほぼ旧式としています。例としては動きますが更新はありません。ローカルで使い、認証がないためポートをインターネットに公開しないでください。

方法A:軽量Piperサーバー(CPU)

1GB未満。音声複製はできません。

docker run -d --restart unless-stopped -p 8000:8000 ghcr.io/matatonic/openedai-speech-min

音声: alloy, echo, fable, onyx, nova, shimmer.

dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=openai&openaiendpoint=http://localhost:8000/v1/audio/speech&voiceopenai=nova
Windowsでソースから起動する場合(HTTP 500エラー)

仮想環境の次の項目を追加します: Scripts フォルダーを次へ: PATH を先に追加します。ないと次が見つかりません: piper.exe または ffmpeg.exe.

cd openedai-speech
$env:Path = "$PWD\.venv\Scripts;$env:Path"
.\.venv\Scripts\python.exe speech.py --xtts_device none -H 127.0.0.1 -P 8000

方法B:XTTS-v2の音声複製(GPU)

必要なのは完全なサーバーで、次ではありません: openedai-speech-min。GPUメモリ約4GBが目安です。CPUでも動きますが低速です。

4手順でXTTS-v2を設定する
  1. サーバーを取得して起動します:
    git clone https://github.com/matatonic/openedai-speech.git
    cd openedai-speech
    Copy-Item sample.env speech.env
    docker compose up -d
    macOSまたはLinuxでは、次を使用します: cp sample.env speech.env。DockerからGPUを使える必要があります。モデルは初回にダウンロードされます。
  2. 使用許可のある音声で、雑音のない参照クリップを用意します。モノラル、22050Hz、6~30秒:
    ffmpeg -i input.mp3 -ac 1 -ar 22050 -t 6 -y voices/me.wav
  3. 次の場所で: config/voice_to_speaker.yamlでは、既存の次の項目の下に追加します: tts-1-hd セクションに追加します(既存音声は残します):
    tts-1-hd:
      me:
        model: xtts
        speaker: voices/me.wav
        language: en
    変更する項目: me をSSNが送る名前にします。
  4. 実行するコマンド: docker compose restartを設定し、次を使います:
    dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8000/v1/audio/speech&openaimodel=tts-1-hd&voiceopenai=me&openaiformat=wav
openaimodel=tts-1-hd が必要です。 指定しなければSSNは次を送ります: tts-1にすると、サーバーは代わりにPiperを使います。 voiceopenai はYAMLファイルの音声名と一致させます。

ブラウザーにブロックされる場合は次を起動します: ブリッジ を使い、次だけを変更します: openaiendpoint → http://127.0.0.1:8124/v1/audio/speech.

ローカルTTSブリッジ

SSNの小さな補助プログラムです。SSNのリクエストを音声サーバーへ転送し、ブラウザーが受け付ける形で音声を返します。Node.jsが必要です。

最も簡単なルール: OBSのコンピューターでブリッジを起動します。OBSは常に次を使います: http://127.0.0.1:8124/v1/audio/speechを使います。音声サーバーが別のPCでも同じです。
OBSがローカルブリッジを呼び出し、ブリッジがTTSサーバーを呼び出す構成図
  1. ブリッジにサーバーの場所を指定します。PowerShell:
    $env:SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech"
    サーバーが別PCなら、そのローカルIPを使います。例: http://192.168.x.x:8880/v1/audio/speech.
  2. SSNフォルダーで次を実行します: node scripts/local-tts-bridge.cjs。起動したままにしてください。
  3. SSNの接続先をブリッジにします:
    dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&voiceopenai=af_bella

macOS/Linuxでは1行で: SSN_TTS_TARGET="http://127.0.0.1:8880/v1/audio/speech" node scripts/local-tts-bridge.cjs。次の中で: local-tts-bridge フォルダーで、 node server.cjs も同じ働きをします。ポートは次で変えます: SSN_TTS_BRIDGE_PORT=8125。全設定: ブリッジのREADME.

GPT-SoVITSモード

GPT-SoVITSは独自の次の形式を使用します: /tts 形式を使います。ブリッジが変換します。

$env:SSN_TTS_REF_AUDIO_PATH="C:\voices\speaker.wav"
$env:SSN_TTS_REF_TEXT="Reference audio transcript here."
$env:SSN_TTS_TARGET="http://127.0.0.1:9880/tts"
node scripts/local-tts-bridge.cjs --mode gptsovits
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&openaiformat=wav
F5-TTSサーバーモード

一部のF5-TTSラッパーは次を使います: /synthesize_speech/?text=...&voice=...。ブリッジが形式を変換します。

$env:SSN_TTS_TARGET="http://127.0.0.1:7860/synthesize_speech/"
node scripts/local-tts-bridge.cjs --mode f5
dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://127.0.0.1:8124/v1/audio/speech&voiceopenai=default_en&openaiformat=wav

音声クローン

音声の複製はSSNの設定ではなく、一部の音声サーバーの機能です。SSNがチャット本文を送り、サーバーが複製音声を選びます。

  1. 話者1人の、雑音の少ない明瞭な音声を通常3~30秒録音します。
  2. 音声で話した正確な文章が必要なサーバーもあります。
  3. サーバーが音声クリップから音声プロファイルを作ります。
  4. SSNはチャット本文を次で送ります: ttsprovider=customtts.
  5. サーバーが音声(通常WAVまたはMP3)を返し、SSNが再生します。
自分の音声か、使用許可を得た音声だけを複製してください。
XTTS-v2は既定では非商用です。 その Coqui Public Model License は非商用利用のみを許可します。収益化した配信は対象外の可能性があります。先にライセンスを確認するか許可を得てください。

GPUメモリ6GB以下なら、OpenAI互換サーバーの小型モデルから始めます。大きなモデルも別の場所でホストすれば使えます。

選択肢複製元6GB GPUで使える?接続方法
XTTS-v2 / openedai-speech短いWAV音声対応、約4GB直接、 /v1/audio/speech。プロジェクトはアーカイブ済みです。
chatterbox-tts-api / Chatterbox-TTS-Server参照音声Turboや短い分割ならおそらく可能直接またはブリッジ経由。GPUはCPUより滑らかです。設定はフォークによって異なります。
Qwen3-TTS (0.6B/1.7B)3秒の音声おそらく可能(0.6B Base)OpenAI互換ラッパーが必要です。
GPT-SoVITS5秒、1分あるとより良いfp16/軽量構成ならおそらく可能ブリッジ(Bridge) --mode gptsovits.
F5-TTS音声とその文字起こし場合によるラッパーまたはブリッジ --mode f5 付随する値: F5-TTS_server.
MisoTTS 8Bプロンプト用音声不可。24GB推奨リモートホスティングのみ。リポジトリにローカルRESTエンドポイントはありません。

内蔵KokoroとKokoro-FastAPIは音声を複製しません。

SSNで確認した内容

次の両方で確認: dock.html および featured.html:

  • openedai-speech (Piper):CPUでの実音声を、直接接続とブリッジ経由で確認。
  • Chatterbox-TTS-Server:CPUでの実音声を次で確認: Emily.wavを、直接接続とブリッジ経由の両方で確認しています。
  • chatterbox-tts-api:直接接続とブリッジ経由でリクエスト形式を確認。
  • GPT-SoVITS および F5-TTS_server:ブリッジモード経由のみ。
  • F5-TTS公式 および Qwen3-TTS:先にラッパーが必要です(CLI、Gradio、ライブラリのみ)。

どんなコンピューターが必要?

大まかな目安で、保証ではありません。モデルサイズ、文章の長さ、ほかのアプリによってメモリ使用量は変わります。

選択肢最低構成余裕のある構成
システムTTS/eSpeak任意のPC任意のPC
組み込みKitten低性能のCPU、4GBのRAMノートPCのCPU、RAM 8GB
組み込みPiper新しいCPU、RAM 4~8GB現代的なCPU、8GBのRAM
組み込みKokoro現代的なCPU、8GBのRAMWebGPU対応GPUまたは高速CPU、RAM 8~16GB
Kokoro-FastAPICPU、8GBのRAMNVIDIA GPUは任意、RAM 8~16GB
openedai-speech PiperCPU、RAM 4~8GBCPU、8GBのRAM
openedai-speech XTTSNVIDIA GPU 約4GB、RAM 8~16GB6GB以上のNVIDIA GPU、16GBのRAM
Chatterbox一部構成はCPU対応、低速6GB以上のNVIDIA GPU、16GBのRAM
GPT-SoVITS / F5-TTS / Qwen3-TTSテスト用CPU、低速6GB以上のNVIDIA GPU、16GBのRAM
MisoTTS 8B6GBでは不可24GB GPUまたはリモートホスト

音声をOBSに取り込む

OBSブラウザーソース(推奨)

内蔵音声と独自サーバーで使えます。

  1. 追加する項目: ブラウザソース に自分の dock.html TTSリンク。
  2. オンにする項目: OBSで音声を制御する(Control audio via OBS).
  3. クリックする項目: OK。TTSがOBSミキサーに表示されます。

SSNデスクトップアプリ

デスクトップアプリも同じリンク設定を使いますが、音はOBSではなくアプリから出ます。次で取り込みます: デスクトップ音声 または 音声入力キャプチャ(Audio Input Capture)。TTSをほかの音と分けるには、アプリの音声を仮想ケーブルへ送ります: 音声経路の設定手順.

アプリのテストとOBSのテストを混同しないでください。 アプリのTestはアプリからのテストです。OBSにリンクを入れた場合、OBS自身がサーバーに接続し音声を再生する必要があります。
デスクトップアプリの詳細

アプリのウィンドウはChromeよりブラウザー権限(CORS)の制約が緩やかです。ブラウザーからのリクエストを拒否するサーバーには、ブリッジが最も確実です。内蔵Kokoroでは、アプリ独自の次の経路を使えます: ninjafy.tts 経路を使い、ブラウザー内にモデルを読み込まずに済みます。

システム読み上げ(System TTS) (&speech=en-US でプロバイダー未指定の場合)はOBSにある音声に依存します。音声がない、または取り込める音が出ないことがあります。代わりに上記プロバイダーを使ってください。

比較

選択肢設定品質非公開OBS対応費用
組み込みKokoroなし5/5はいはい無料
組み込みPiperなし4/5はいはい無料
組み込みKittenなし3/5はいはい無料
組み込みeSpeakなし2/5はいはい無料
Kokoro-FastAPIDocker5/5はいはい無料
openedai-speechDocker4/5はいはい無料
ElevenLabsAPIキー5/5不要はい有料プラン
システム読み上げ(System TTS)なし2/5はい音声経路の設定が必要無料

問題を解決する

ローカルTTSの問題を調べるための、スクリーンショット風チェックリスト
場所によって動かない場合は、コンピューター、アドレス、音声、ブラウザー権限、OBS音声の順に確認します。
問題試すこと
アプリのテストは動くがOBSは無音OBS自身がサーバーに接続する必要があります。別PCの場合は、次を置き換えます: 127.0.0.1 をローカルIPに置き換えます。確認する項目: OBSで音声を制御する(Control audio via OBS)。まだブロックされる場合は、OBSのPCでブリッジを起動します。
最初の文字や単語しか読まれない削除 ttsquick をOBSのリンクから外します(例: &ttsquick=14)を外して再読み込みします。テスト中は次も外します: typewriter= でタイミングの問題を切り分けます。
サーバーが応答しないDockerとコンテナーが起動しているか確認します。サーバーのPCで次を開きます: http://127.0.0.1:8880/web/ (Kokoro-FastAPI、または使用サーバーのポート)。OBSのPCから次を開きます: http://SERVER_LAN_IP:8880/web/。失敗したらOBSも接続できません。サーバーのファイアウォールを確認します。
「CORSでブロック」「private network」「failed fetch」サーバーに届く前にブラウザーがブロックしました。次を起動します: node scripts/local-tts-bridge.cjs をOBSのPCで起動し、次を使います: http://127.0.0.1:8124/v1/audio/speech。公開ベータ版のDockはブロックされやすいため、ブリッジやローカルアプリのウィンドウを使う方が簡単です。
違う音声になる/音声が見つからないKokoro-FastAPI: af_bella, af_sarah, am_adam、またはそのWebページから選びます。openedai-speechの場合: nova, echo, alloy。大文字と小文字を区別するサーバーもあります。
再生するがOBSに入らないオンにする項目: OBSで音声を制御する(Control audio via OBS)。テスト中にOBSミキサーのメーターを確認します。次を設定してください: &ttsprovider=。System TTSにはデスクトップ音声や仮想ケーブルが必要な場合があります。
Dockerイメージが見つからないイメージのタグは変わります。現在のタグを次で確認してください: Kokoro-FastAPI または openedai-speech.

サーバー開発者向け

SSNと独自サーバーの通信方法です。サーバーの作成やデバッグ時にだけ必要です。

chat text -> SSN -> your endpoint (or the bridge) -> TTS server -> audio -> SSN plays it
SSNが送るもの

次の設定では: ttsprovider=customtts, localtts または openaiを使い、SSNはJSONのPOSTを送ります:

POST /v1/audio/speech
{
  "model": "tts-1",
  "input": "Chat message text",
  "voice": "af_bella",
  "response_format": "mp3",
  "speed": 1.0
}

APIキーが未設定なら、SSNはAuthorizationヘッダーを送りません。

SSNが再生できるもの
応答動作する?補足
音声ファイルはい最良。 audio/mpeg, audio/wav, audio/ogg, audio/aac、またはブラウザーで再生できる形式。
音声URLを含むJSONはい確認内容 url, audio_url, output_url, data.url、および最初の data[] の項目。
Base64音声を含むJSONはい確認内容 audio, audio_data, audioContent, b64_json、入れ子になった data フィールド、およびデータURL。
生のPCMラッパーを使用する場合のみWAVファイルまたはbase64のWAVとして送ります。

形式: mp3 は小さく、広く対応されています。 wav は音声複製サーバーやブリッジのテストに向いています。次を使います: opus はサーバーとブラウザーの両方が対応する場合のみ使います。

ストリーミングは未対応です。 SSNは応答全体を待ってから再生します。チャットは短くしてください。

独自サーバーのリンク設定
設定例動作
ttsprovidercustomtts独自サーバーを使います(openai も使えます)。
openaiendpointhttp://localhost:8880/v1/audio/speechサーバーのアドレス。ポートはサーバーに合わせます。
speechen-US英語でTTSを有効にします。
voiceopenaiaf_bella音声名。サーバーによって異なります。
openaimodeltts-1-hdモデル名。標準は tts-1.
openaiformatmp3mp3、wav、opus、flac。
openaispeed1.0読み上げ速度(0.5~2.0)。

次も対応: customttsendpoint, localttsendpoint, customttsvoice, localttsvoice, customttsmodel, localttsmodel, customttsformat, localttsformat。読み上げ設定、たとえば simpletts, skipmessages および ttsquick はどのプロバイダーでも使えます: すべてのリンク設定.

リンク例:

Kokoro-FastAPI:  dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://localhost:8880/v1/audio/speech&voiceopenai=af_bella&openaispeed=1.1
openedai-speech: dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://localhost:8000/v1/audio/speech&voiceopenai=nova
kokoro-web:      dock.html?session=YOUR_SESSION&speech=en-US&ttsprovider=customtts&openaiendpoint=http://localhost:3000/api/v1/audio/speech&voiceopenai=af_bella