/v1/audio/voices/combine accepts weighted syntax (af_bella(2)+af_sky(1)), matching the speech endpoints (#285).
Oversized or pause-heavy requests now return 400 to avoid exhausting memory (reported by @sshpie, GHSA-f64g-9jmv-pm22). Two new configurable limits:
MAX_INPUT_LENGTH (default 1_000_000) caps characters of text per request.
MAX_TOTAL_PAUSE_S (default 300) caps total [pause:Ns] / SSML <break> silence per request.
Native Windows installs (start-cpu.ps1 etc) no longer need a C++ toolchain: pyopenjtalk-plus (a drop-in fork with prebuilt Windows wheels) replaces pyopenjtalk on win32 only (#508, proposed by @siliconfps). Needs a recent uv. Linux, macOS, and Docker are unchanged.
Changed
Documented WEB_CONCURRENCY (uvicorn worker count) in docs/configuration.md for parallel model loads/concurrency (#115, #358).
Improved time-to-first-audio; sentence phonemization emits to avoid a first full-request pass. Some gradual latency growth at larger input sizes due to normalization pass.
Input
v0.8.0 (eager)
v0.8.1 (lazy)
5k chars
0.31 s
0.26 s
-16%
10k chars
0.30 s
0.27 s
-10%
50k chars
0.45 s
0.29 s
-36%
100k chars
0.73 s
0.31 s
-58%
250k chars
1.41 s
0.45 s
-68%
500k chars
2.78 s
0.56 s
-80%
1M chars
5.21 s
0.85 s
-84%
Configuration
📅Schedule: (UTC)
Branch creation
At any time (no schedule defined)
Automerge
At any time (no schedule defined)
🚦Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕Ignore: Close this PR and you won't be reminded about this update again.
If you want to rebase/retry this PR, check this box
This PR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [ghcr.io/remsky/kokoro-fastapi-cpu](https://github.com/remsky/Kokoro-FastAPI) | patch | `v0.8.0` → `v0.8.1` |
---
### Release Notes
<details>
<summary>remsky/Kokoro-FastAPI (ghcr.io/remsky/kokoro-fastapi-cpu)</summary>
### [`v0.8.1`](https://github.com/remsky/Kokoro-FastAPI/blob/HEAD/CHANGELOG.md#v081---2026-08-24)
[Compare Source](https://github.com/remsky/Kokoro-FastAPI/compare/v0.8.0...v0.8.1)
##### Fixed
- `/v1/audio/voices/combine` accepts weighted syntax (`af_bella(2)+af_sky(1)`), matching the speech endpoints ([#​285](https://github.com/remsky/Kokoro-FastAPI/issues/285)).
- Oversized or pause-heavy requests now return 400 to avoid exhausting memory (reported by [@​sshpie](https://github.com/sshpie), GHSA-f64g-9jmv-pm22). Two new configurable limits:
- `MAX_INPUT_LENGTH` (default 1\_000\_000) caps characters of text per request.
- `MAX_TOTAL_PAUSE_S` (default 300) caps total `[pause:Ns]` / SSML `<break>` silence per request.
- Native Windows installs (`start-cpu.ps1` etc) no longer need a C++ toolchain: `pyopenjtalk-plus` (a drop-in fork with prebuilt Windows wheels) replaces `pyopenjtalk` on win32 only ([#​508](https://github.com/remsky/Kokoro-FastAPI/issues/508), proposed by [@​siliconfps](https://github.com/siliconfps)). Needs a recent `uv`. Linux, macOS, and Docker are unchanged.
##### Changed
- Documented `WEB_CONCURRENCY` (uvicorn worker count) in `docs/configuration.md` for parallel model loads/concurrency ([#​115](https://github.com/remsky/Kokoro-FastAPI/issues/115), [#​358](https://github.com/remsky/Kokoro-FastAPI/issues/358)).
- Improved time-to-first-audio; sentence phonemization emits to avoid a first full-request pass. Some gradual latency growth at larger input sizes due to normalization pass.
<div align="center">
| Input | v0.8.0 (eager) | v0.8.1 (lazy) | |
| :--------- | -------------: | ------------: | ---: |
| 5k chars | 0.31 s | 0.26 s | -16% |
| 10k chars | 0.30 s | 0.27 s | -10% |
| 50k chars | 0.45 s | 0.29 s | -36% |
| 100k chars | 0.73 s | 0.31 s | -58% |
| 250k chars | 1.41 s | 0.45 s | -68% |
| 500k chars | 2.78 s | 0.56 s | -80% |
| 1M chars | 5.21 s | 0.85 s | -84% |
</div>
</details>
---
### Configuration
📅 **Schedule**: (UTC)
- Branch creation
- At any time (no schedule defined)
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC40MS4xIiwidXBkYXRlZEluVmVyIjoiNDQuNDEuMSIsInRhcmdldEJyYW5jaCI6ImZyZXNoLXN0YXJ0IiwibGFiZWxzIjpbXX0=-->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
v0.8.0→v0.8.1Release Notes
remsky/Kokoro-FastAPI (ghcr.io/remsky/kokoro-fastapi-cpu)
v0.8.1Compare Source
Fixed
/v1/audio/voices/combineaccepts weighted syntax (af_bella(2)+af_sky(1)), matching the speech endpoints (#285).MAX_INPUT_LENGTH(default 1_000_000) caps characters of text per request.MAX_TOTAL_PAUSE_S(default 300) caps total[pause:Ns]/ SSML<break>silence per request.start-cpu.ps1etc) no longer need a C++ toolchain:pyopenjtalk-plus(a drop-in fork with prebuilt Windows wheels) replacespyopenjtalkon win32 only (#508, proposed by @siliconfps). Needs a recentuv. Linux, macOS, and Docker are unchanged.Changed
WEB_CONCURRENCY(uvicorn worker count) indocs/configuration.mdfor parallel model loads/concurrency (#115, #358).Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate CLI.