TTS: add missing OpenAI voices (ballad, cedar, juniper, marin, verse) (openclaw#11020) thanks @lailoo

Verified:
- pnpm install --frozen-lockfile
- pnpm build
- pnpm check
- pnpm test

Co-authored-by: ${pr_author_login} <${coauthor_email}>
Co-authored-by: ${tak_name} <${tak_email}>
This commit is contained in:
大猫子
2026-02-13 21:54:00 +08:00
committed by GitHub
parent ee31cd47b4
commit edfdd12d37
3 changed files with 14 additions and 0 deletions

View File

@@ -221,6 +221,7 @@ Docs: https://docs.openclaw.ai
### Fixes
- TTS: add missing OpenAI voices (ballad, cedar, juniper, marin, verse) to the allowlist so they are recognized instead of silently falling back to Edge TTS. (#2393)
- Cron: scheduler reliability (timer drift, restart catch-up, lock contention, stale running markers). (#10776) Thanks @tyler6204.
- Cron: store migration hardening (legacy field migration, parse error handling, explicit delivery mode persistence). (#10776) Thanks @tyler6204.
- Memory: set Voyage embeddings `input_type` for improved retrieval. (#10818) Thanks @mcinteerj.

View File

@@ -97,6 +97,14 @@ describe("tts", () => {
}
});
it("includes newer OpenAI voices (ballad, cedar, juniper, marin, verse) (#2393)", () => {
expect(isValidOpenAIVoice("ballad")).toBe(true);
expect(isValidOpenAIVoice("cedar")).toBe(true);
expect(isValidOpenAIVoice("juniper")).toBe(true);
expect(isValidOpenAIVoice("marin")).toBe(true);
expect(isValidOpenAIVoice("verse")).toBe(true);
});
it("rejects invalid voice names", () => {
expect(isValidOpenAIVoice("invalid")).toBe(false);
expect(isValidOpenAIVoice("")).toBe(false);

View File

@@ -842,13 +842,18 @@ function isCustomOpenAIEndpoint(): boolean {
export const OPENAI_TTS_VOICES = [
"alloy",
"ash",
"ballad",
"cedar",
"coral",
"echo",
"fable",
"juniper",
"marin",
"onyx",
"nova",
"sage",
"shimmer",
"verse",
] as const;
type OpenAiTtsVoice = (typeof OPENAI_TTS_VOICES)[number];