skills/connect-colab-local-tts/SKILL.md
Launch a local-tts-on-google-colab OpenAI-compatible TTS server through Colab MCP Go, expose it with trycloudflare, then validate it from @aituber-onair/voice using the Node.js openaiCompatible example. Use when requests mention connecting Colab local TTS, local-tts-on-google-colab, Colab MCP Go, trycloudflare TTS URLs, or running @aituber-onair/voice against a Colab OpenAI-compatible speech endpoint.
npx skillsauth add shinshin86/aituber-onair connect-colab-local-ttsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use Colab MCP Go to drive Google Colab, launch
shinshin86/local-tts-on-google-colab, capture its public
trycloudflare URL, and verify speech generation through
@aituber-onair/voice.
This skill consumes an existing OpenAI-compatible Colab TTS project. Do not rewrite TTS wrappers unless the user explicitly asks for wrapper development.
Collect or infer:
repo_url: default https://github.com/shinshin86/local-tts-on-google-colab.gitrepo_ref: default main; prefer a tag or commit for reproducible runsengine: default Irodori-TTS when the user does not choose onemodel: OpenAI-compatible model id; default to the selected enginevoice: optional; leave empty for engines with no useful voice selectortext: Japanese smoke text to synthesizeGood sample engines:
Irodori-TTS: useful Japanese default candidatePiper-Plus: lightweight multilingual candidateMOSS-TTS-v1.5: notable Hugging Face model, but A100-class Colab is usually
requiredopen_colab_browser_connection when the Colab session is not
connected.list_colab_tools.HF_TOKEN, ask the user to
prepare those items in Colab before launching.
repo_url, repo_ref, and engine.EXPOSE_PUBLIC_URL = True.OPENAI_MODEL_ID to model when provided.=== Public Ready ===.Speech : https://...trycloudflare.com/v1/audio/speech.CompletedProcess(...), inspect
/content/openai-compatible-local-tts/logs/cloudflared.log and extract
the latest https://...trycloudflare.com URL.GET /v1/models and POST /v1/audio/speech work before running
the local voice package example.@aituber-onair/voice locally.
packages/voice/examples/node-basic/openai-compatible-colab-example.js
with dynamic environment variables:OPENAI_COMPATIBLE_TTS_URL="<speech_url>" \
OPENAI_COMPATIBLE_TTS_MODEL="<model>" \
OPENAI_COMPATIBLE_TTS_VOICE="<voice>" \
OPENAI_COMPATIBLE_TTS_TEXT="<text>" \
node packages/voice/examples/node-basic/openai-compatible-colab-example.js
Use OPENAI_COMPATIBLE_TTS_PLAY=0 when the environment cannot play audio but
WAV generation should still be verified.
Use the current canonical launch flow from
local-tts-on-google-colab. The generated cell should be equivalent to:
REPO_URL = "https://github.com/shinshin86/local-tts-on-google-colab.git"
REPO_REF = "main"
WORKDIR = "/content/local-tts-on-google-colab"
ENGINE = "Irodori-TTS"
EXPOSE_PUBLIC_URL = True
TEST_TEXT = "こんにちは。AITuber OnAir Voice から再生しています。"
TEST_SPEED = 1.0
TEST_VOICE = ""
OPENAI_MODEL_ID = "Irodori-TTS"
import os
import subprocess
if not os.path.exists(WORKDIR):
subprocess.run(["git", "clone", REPO_URL, WORKDIR], check=True)
subprocess.run(["git", "fetch", "--all", "--tags"], cwd=WORKDIR, check=True)
subprocess.run(["git", "checkout", REPO_REF], cwd=WORKDIR, check=True)
cmd = [
"python", "colab/bootstrap.py",
"--engine", ENGINE,
"--test-text", TEST_TEXT,
"--test-speed", str(TEST_SPEED),
"--openai-model-id", OPENAI_MODEL_ID,
]
if TEST_VOICE:
cmd.extend(["--test-voice", TEST_VOICE])
if EXPOSE_PUBLIC_URL:
cmd.append("--expose-public-url")
else:
cmd.append("--no-expose-public-url")
subprocess.run(cmd, cwd=WORKDIR, check=True)
For Piper-Plus, add --piper-plus-model <value> only when the user chooses
one. For MOSS-TTS-v1.5, warn that A100 is expected and pass
--moss-tts-v1-5-language, --moss-tts-v1-5-default-voice, or prompt WAV
options only when selected.
Run from the repository root after a code change:
npm -w @aituber-onair/voice run fmt
npm -w @aituber-onair/voice run build
npm -w @aituber-onair/voice run test
For a live Colab endpoint:
OPENAI_COMPATIBLE_TTS_URL="<speech_url>" \
OPENAI_COMPATIBLE_TTS_MODEL="<model>" \
OPENAI_COMPATIBLE_TTS_VOICE="<voice>" \
OPENAI_COMPATIBLE_TTS_PLAY=0 \
node packages/voice/examples/node-basic/openai-compatible-colab-example.js
cloudflared output and whether the server
became ready locally./content/openai-compatible-local-tts/logs, especially cloudflared.log
and the engine-specific uvicorn log.MOSS-TTS-v1.5 fails on L4/T4: retry on A100 or choose a lighter engine.POST /v1/audio/speech fails but /v1/models works: inspect Colab logs and
verify model, voice, prompt WAV, language, and gated-model prerequisites.OPENAI_COMPATIBLE_TTS_URL includes
/v1/audio/speech, and set OPENAI_COMPATIBLE_TTS_PLAY=0 to isolate
playback from synthesis.testing
Add a new TTS provider to @aituber-onair/voice and wire it through engine implementation, public voice option types, internal engine handlers, factory registration, tests, docs, examples, and optional versioning updates. Use when requests include adding a TTS engine, supporting a voice provider or speech service, adding <provider> TTS, or updating supported voice providers.
development
Wrap a practical local or self-hosted TTS engine behind an OpenAI-compatible `POST /v1/audio/speech` server, especially for Google Colab or browser-driven testing. Use when requests include exposing a TTS model as OpenAI-compatible speech, building a compatibility wrapper for a broadly usable local TTS, classifying how an upstream TTS should be adapted, adding JSON/CORS support, or debugging browser/CORS/422/500/runtime issues for custom TTS servers.
development
Apply released @aituber-onair/chat updates to @aituber-onair/core and core React examples, including dependency alignment, core re-exports, example model lists, docs, version/changelog, lockfiles, and verification. Use after chat package upgrades or when users ask to propagate chat changes into core.
testing
Add a new chat model id to @aituber-onair/chat and wire it through constants, provider implementation, tests, example UI selector, docs, and versioning updates. Use when requests include adding a new model, supporting a specific model id, adding a provider model, or updating supported models for providers such as claude, gemini, and openai.