Repository navigation
[feat] providers: add Zhipu BigModel GLM-TTS and voice management (#238) - #276
Open
Zhangbo-cn wants to merge 1 commit into
Open
Zhangbo-cn wants to merge 1 commit into
Zhangbo-cn wants to merge 1 commit into
Conversation
…inkFlowLab#238) ## summary - Add `glm-tts` as an audio provider through the existing connection-scoped voice library: 7 documented preset voices plus the account's cloned voices, with clone (upload → `glm-tts-clone` → delete sample → read back), select, synthesize and delete available to both the UI and the agent tools. - Request non-streaming 24 kHz WAV and accept only RIFF bodies; JSON errors returned with HTTP 200 fail the job. Map BigModel 1113 to quota and 1214 "voice not found" to `voice_not_found`; record format and sample rate in the execution snapshot. - Validate text length (1024), recording type (mp3/wav), 3–30 s duration and duplicate names before any job or remote call is created. - Add Zhipu as a conversation-agent preset (models discovered via `/models`) and explain a disabled send button when no conversation model is configured. - Add zh-CN/en-US messages and user-guide sections. ## validation - `pytest`: 1611 passed, 98 skipped; `npm test`: 757 passed. - `check:i18n`, `check:browser-manifest`, `build`, `tsc --noEmit`: clean. - `tests/browser/zhipu_real.mjs` (manifest helper, paid) against the real BigModel API in zh-CN and en-US: preset narration and the full clone lifecycle passed; the account was left with no cloned voices or files.
Zhangbo-cn
requested review from
hsliuustc0106 and
princepride
as code owners
November 10, 2026 13:44
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
glm-ttsas an audio provider on the existing connection-scoped voice library ([feat] audio: add a connection-scoped voice library with on-demand MOSS pagination #218): 7 documented preset voices plus the account's cloned voices. UI and agent tools share the same service for clone (upload →glm-tts-clone→ delete sample → read back), select, synthesize and delete. Voice IDs are scoped to the provider connection.voice_not_found. Format and sample rate are recorded in the execution snapshot./models). When no conversation model is configured, the assistant footnote now explains why Send is disabled and links to settings.jam1andstreamerfail synthesis on the live API.Linked issue
Labels
type:feat,area:provider,area:canvas,modality:audio. I can't apply labels from a fork.Test plan
pytest: 1611 passed, 98 skipped (includes 31 new tests intests/test_zhipu.py).npm test: 757 passed.npm run check:i18n,npm run check:browser-manifest,npm run buildandtsc --noEmitare clean.tests/browser/zhipu_real.mjspassed against the real service in both locales. This script is a paid manifest helper and is not run in any lane.Evidence that it works
Provider verification
open.bigmodel.cn/api/paas/v4) with a funded key, run on 2026-11-10:tongtong) and the full clone lifecycle (upload, create, select, synthesize, preview, delete) passed in both locales. Afterwards the account had no PRIVATE voices and no files./modelsdiscovery listed the GLM models. Agent connection tests succeeded withglm-4.5-flashandglm-5.3-flash.glm-5.3-flashproducedxiaochennarration throughgeneration submit.AIGCWAV metadata chunk. BigModel always embeds it unless de-watermarking is enabled in the console, and it cannot be controlled from code.Bilingual UI