Summary
KokoroAneResourceDownloader.ensureMandarinJiebaHmm tries to fetch three jieba HMM asset files from the FluidInference/kokoro-82m-coreml Hugging Face repo, but those files have never been uploaded there. Every Mandarin synthesis session logs a 404 warning and silently falls back to FMM/single-char segmentation.
Expected behavior
Either:
- The three jieba HMM files exist at
ANE-zh/assets/ on the Hugging Face repo and download successfully, or
- The client doesn't attempt the download / doesn't log a warning for an asset that is known to not exist yet.
Actual behavior
Every time the Mandarin (v1.1-zh) variant initializes, this warning is logged:
[FluidAudio.KokoroAneResourceDownloader] Jieba HMM asset 'jieba_hmm_start.bin' unavailable (Unexpected response (status 404) while downloading jieba HMM asset jieba_hmm_start.bin); HMM segmentation disabled.
This is non-fatal (Mandarin synthesis still works via the FMM/single-char fallback), but it repeats on every fresh prepare since the asset never caches locally, and it looks alarming in logs.
Root cause
KokoroAneConstants.swift points the jieba HMM download at:
public static let g2pRemoteRepo = "FluidInference/kokoro-82m-coreml"
public static let g2pRemoteSubdir = "ANE-zh/assets"
public static let jiebaHmmStartRemoteFile = "jieba_hmm_start.bin"
public static let jiebaHmmTransRemoteFile = "jieba_hmm_trans.bin"
public static let jiebaHmmEmitRemoteFile = "jieba_hmm_emit.bin"
I checked the actual contents of https://huggingface.co/FluidInference/kokoro-82m-coreml/tree/main/ANE-zh/assets — it only contains:
pinyin_phrases.bin
pinyin_single.bin
The three jieba_hmm_*.bin files referenced by the downloader have never been uploaded to that path.
Version history checked
This isn't a regression — I checked whether a different FluidAudio version fixes it and found it doesn't:
Suggested fix
Either:
- Upload
jieba_hmm_start.bin, jieba_hmm_trans.bin, and jieba_hmm_emit.bin to FluidInference/kokoro-82m-coreml at ANE-zh/assets/, matching what KokoroAneConstants already expects, or
- If the asset was intentionally dropped/deprioritized, downgrade the log level (e.g.
debug instead of warning) or skip the attempt entirely via a feature flag, so it doesn't read as an error in consuming apps' logs.
Environment
- FluidAudio: 0.15.5 (also checked against 0.15.7 source directly)
- Reproduced via: initializing the Mandarin (
v1.1-zh) KokoroAne variant on iOS
Summary
KokoroAneResourceDownloader.ensureMandarinJiebaHmmtries to fetch three jieba HMM asset files from theFluidInference/kokoro-82m-coremlHugging Face repo, but those files have never been uploaded there. Every Mandarin synthesis session logs a 404 warning and silently falls back to FMM/single-char segmentation.Expected behavior
Either:
ANE-zh/assets/on the Hugging Face repo and download successfully, orActual behavior
Every time the Mandarin (
v1.1-zh) variant initializes, this warning is logged:This is non-fatal (Mandarin synthesis still works via the FMM/single-char fallback), but it repeats on every fresh prepare since the asset never caches locally, and it looks alarming in logs.
Root cause
KokoroAneConstants.swiftpoints the jieba HMM download at:I checked the actual contents of
https://huggingface.co/FluidInference/kokoro-82m-coreml/tree/main/ANE-zh/assets— it only contains:pinyin_phrases.binpinyin_single.binThe three
jieba_hmm_*.binfiles referenced by the downloader have never been uploaded to that path.Version history checked
This isn't a regression — I checked whether a different FluidAudio version fixes it and found it doesn't:
bdbff4d8, PR feat(tts/kokoro-ane/zh): consolidated Mandarin G2P (erhua + jieba HMM + g2pW) (#572 items 1, 3, 4) #579 — "consolidated Mandarin G2P: erhua + jieba HMM + g2pW").Suggested fix
Either:
jieba_hmm_start.bin,jieba_hmm_trans.bin, andjieba_hmm_emit.bintoFluidInference/kokoro-82m-coremlatANE-zh/assets/, matching whatKokoroAneConstantsalready expects, ordebuginstead ofwarning) or skip the attempt entirely via a feature flag, so it doesn't read as an error in consuming apps' logs.Environment
v1.1-zh) KokoroAne variant on iOS