Repository navigation
feat(regen): add usage redaction, Flux volume controls, and voices - #828
Conversation
|
dg-coreylweathers
left a comment
There was a problem hiding this comment.
What this PR does: This adds three new opt-in features to the Python SDK: a setting called redact_usage that keeps certain transcript keywords out of Deepgram's internal usage records, a setting called normalize_volume that controls loudness on text-to-speech audio, and a large batch of new voices across 20+ languages for the Flux text-to-speech engine.
What I checked:
- Is anything here a breaking change for existing users? No — everything added is optional and defaults to off, so code that worked before this PR keeps working exactly the same way.
- Did the SDK's existing hand-patched compatibility fixes survive this regeneration? Yes, including one that had accidentally been dropped once before in an earlier regeneration — I checked it specifically and it's still there.
- Do these new settings actually work against Deepgram's live servers, not just in theory? Yes. I connected directly to the production server and confirmed redact_usage behaves exactly as documented: it starts off, can be turned on mid-conversation, and once on it can't be turned back off for that session. I also confirmed one of the new voices (flux-ambreen-ur) genuinely exists and produces real audio on production today.
- Does it pass our tests? Yes — 1175 tests passed with nothing new broken. The PR's own notes mentioned some test failures caused by a local networking quirk; those didn't show up at all once I ran the tests with the correct setup, so that's not a real gap.
What to fix / what still needs you: Nothing blocking. One small cleanup: the PR's description shows an example using the text "true" in quotes for the redact_usage setting, but it's actually a true/false value, not text — it happens to work by accident today, but writing it as a plain true (no quotes) would be clearer for anyone copying the example.
🤖 I have created a release *beep* *boop* --- ## [7.19.0](v7.18.0...v7.19.0) (2026-11-12) ### Features * **Listen:** Add the optional `redact_usage` control to Listen V1 and V2 clients. Active Flux sessions can update it through `ListenV2Configure`, and `ListenV2ConfigureSuccess` reports the active setting. ([#828](#828)) ([0487431](0487431)) * **Flux TTS:** Add the `normalize_volume` control for batch and WebSocket synthesis. Expand the typed Flux voice catalog with new multilingual voices, including support for Deepgram Agent TTS providers. ([#828](#828)) ([0487431](0487431)) ## Highlights - Control usage redaction for Listen V1 and V2 connections; Flux users can update the setting during an active session and inspect the server-confirmed value. - Control Flux speech-volume normalization for batch and streaming synthesis. - Select from the expanded typed catalog of multilingual Flux voices, including in Deepgram Agent TTS configuration. --- This PR was prepared for the Deepgram Python SDK release workflow.
Summary
fernapi/fern-python-sdk5.39.3.redact_usagecontrols, Speak V2normalize_volume, and an expanded typed Flux voice catalog.redact_usagewhile restoring dict-style Listen V2 response access.7.18.0; Release Please will create the next feature-release version.What This Enables
redact_usagewhen opening Listen V1 or V2 connections to control usage redaction, then update an active Flux session withconnection.send_configure(ListenV2Configure(redact_usage=True)). The server reports the active setting inListenV2ConfigureSuccess.redact_usage.normalize_volume=TrueorFalseto Flux batch synthesis withclient.speak.v2.audio.generate(...), or use the string form ("true"/"false") onclient.speak.v2.connect(...). Volume normalization is enabled by default; opting out still applies peak limiting.DeepgramModelcatalog for multilingual Flux voices such asflux-ambreen-ur, including when configuring the Deepgram Agent TTS provider.with_raw_response()clients.Validation
redact_usage, Listen V2 Configure acknowledgements, and Speak V2normalize_volumewithflux-ambreen-ur.poetry run mypy src/ tests/typecheckpoetry run ruff check .retains 57 existing violations in examples, manual tests, andtests/custom/test_transport.py.poetry run pytest -rP .: 1,102 passed, 4 skipped, 1 expected failure. The remaining 53 WireMock failures are allConnection refusedbecause Docker Compose reports the dynamic WireMock mapping aslocalhost:0.