fix(tts): install kittentts on python 3.14 via the misaki fork

KittenTTS 0.8.1 requires misaki[en]>=0.9.4, and PyPI's misaki 0.9.4
declares requires-python <3.13, so the extra was gated off the managed
3.14 interpreter. NousResearch/misaki f03fd2be73 is upstream main
(0.9.4 + "Enable Python 3.13") with the cap raised to <3.15 and no code
change. The extra now declares misaki[en] at that commit directly, so
uv resolves KittenTTS's transitive requirement to the fork. A
[tool.uv.sources] entry would not reach a transitive dependency, and
an override would bypass pip installs of the extra.

The extra is gated on platform instead of Python: onnxruntime has no
Intel macOS wheel and torch (pulled by misaki[en]) has no Windows ARM64
wheel, the same gate piper already carries.

Nix: uv.lock records no build backend for the git source, so
buildSystemOverrides supplies hatchling for misaki. Without it the
opt-in build fails with "No module named 'hatchling'". The default
package derivation is unchanged; kittentts is in no Nix bundle.

Verified on macOS arm64 with CPython 3.14.7: uv sync --frozen --extra
kittentts from this lock installs misaki from the fork commit, and
tools.tts_tool_local._generate_kittentts writes a 3.87 s 24 kHz WAV.
This commit is contained in:
ethernet
2026-09-24 14:40:43 -04:00
parent ac3564d25b
commit 694fe220a4
5 changed files with 1270 additions and 10 deletions

View File

@@ -74,6 +74,13 @@ let
cffi = [ ];
};
});
# [kittentts] locks misaki as a git source. uv.lock records no build
# backend for it, so supply the hatchling its pyproject declares.
misaki = prev.misaki.overrideAttrs (old: {
nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ final.resolveBuildSystem {
hatchling = [ ];
};
});
};
pythonPackageOverrides =