Qwen3-tts

ReviewAudited by ClawScan on May 10, 2026.

Overview

The local TTS function is coherent, but the optional remote server mode is exposed too broadly and should be reviewed before enabling.

Using this as a local-only TTS tool appears purpose-aligned. Before enabling remote/server mode, bind it to localhost or a trusted network, add firewall/authentication controls, keep QWEN_TTS_REMOTE unset unless you intend network use, and review the unpinned Python/model downloads during setup.

Findings (4)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

If the server is reachable on a network, other devices may submit text for synthesis, consume local compute, and potentially expose private text sent for TTS.

Why it was flagged

The server exposes a /tts endpoint and defaults to listening on all interfaces; the provided server code shows no authentication or authorization check around requests.

Skill content
@app.post("/tts")
def synthesize(request: TTSRequest):
...
parser.add_argument("--host", default="0.0.0.0", help="Host to bind")
Recommendation

Run the server only on localhost or a trusted private network, add authentication or firewall rules, and avoid sending sensitive text to a remote server unless you control and secure it.

What this means

A reachable caller could trigger unexpected model downloads or large resource use on the server machine.

Why it was flagged

The remote request can choose the model name, which is passed directly into model loading without an allowlist or size/source restriction.

Skill content
model: str = "Qwen/Qwen3-TTS-12Hz-0.6B-CustomVoice"
...
model = load_model(request.model)
...
tts_model = Qwen3TTSModel.from_pretrained(model_name,
Recommendation

Hard-code or allowlist approved model IDs on the server, ignore client-supplied model names by default, and add request limits.

What this means

The installed code and dependencies may change over time if package versions are not pinned.

Why it was flagged

The setup script installs unpinned packages from package repositories; this is purpose-aligned for a local TTS model but depends on external package provenance.

Skill content
pip install --upgrade pip setuptools wheel
...
pip install qwen-tts soundfile
Recommendation

Review the packages before installing, prefer pinned versions or hashes, and install in the provided virtual environment only.

NoteHigh Confidence
ASI10: Rogue Agents
What this means

If enabled, the service can continue running after the original task, extending any network exposure until it is stopped.

Why it was flagged

The documentation includes an optional launchd configuration that keeps the TTS server running persistently.

Skill content
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
Recommendation

Use autostart only if needed, document it clearly, and unload the launch agent when remote TTS is no longer required.