feat(regen): add Flux TTS batch (REST) endpoint and agent latency report - #75
Merged
Conversation
GregHolmes
requested review from
deepgram-kiley and
dg-coreylweathers
as code owners
July 14, 2026 10:39
dg-coreylweathers
approved these changes
Jul 14, 2026
GregHolmes
added a commit
that referenced
this pull request
Jul 15, 2026
Release PR for **0.6.1** — [compare v0.6.0...v0.6.1](v0.6.0...v0.6.1) ## What's in 0.6.1 - **[#73](#73) — Flux TTS streaming (Speak V2) + agent listen reconfigure** - **Speak V2 streaming (WebSocket)** — `speak().v2().v2WebSocket().connect(...)`: new `speak/v2/websocket` client (`V2WebSocketClient`, `V2ConnectOptions`) and `SpeakV2*` message types (`SpeakV2Encoding` / `SpeakV2SampleRate` / `SpeakV2Tag` / `SpeakV2MipOptOut`). - **Agent mid-session listen reconfigure** — `AgentV1UpdateListen` / `AgentV1UpdateListenListen` with the `AgentV1ListenUpdated` acknowledgement. - **Flux end-of-turn tuning** — new `DeepgramListenProviderV2` end-of-turn fields (`eot_threshold`, `eager_eot_threshold`, `eot_timeout_ms`). - **Reliability** — unknown/future server WS frames are now non-fatal (no longer routed to `onError`); `equals()`/`hashCode()` fixed on fields-less message types; reconnect-listener options read as a consistent snapshot. - **[#75](#75) — Flux TTS batch (REST) + agent latency report** - **Speak V2 batch (REST)** — `speak().v2().audio().generate(...)` (`AudioClient` / `RawAudioClient` + async): the REST companion to streaming. New `SpeakV2Request`, `SpeakV2AcceptedResponse`, `AudioGenerateRequest*` types. - `sample_rate` / `bit_rate` serialize as integers (no decimal) — a float is rejected on the wire. - Callback mode returns the ack as an `InputStream` of raw JSON, not a typed `SpeakV2AcceptedResponse`; parse `request_id` yourself. - **`AgentV1LatencyReport`** — new agent latency-report type. - **Agent inject-message `interrupt`** — new behavior value. --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Greg Holmes <greg.holmes@deepgram.com>
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.
feat(regen): Flux TTS batch (REST) + agent latency report
Regenerates the Java SDK against the latest Fern generator and API spec. Headline addition is the Flux TTS batch (REST) endpoint (
POST /v2/speak), companion to the streaming WebSocket speak v2 client.What's new (generated surface)
speak.v2.audioclient (AudioClient/RawAudioClient+ async variants),SpeakV2Request,SpeakV2AcceptedResponse(callback ack),AudioGenerateRequest*types.AgentV1LatencyReport: new agent type.interrupt: new behavior value.Patch reconciliation
Standard freeze workflow (unfreeze frozen-and-patched files to
.bak-> Fern overwrites -> re-apply). All 15 manual patches were still needed, none dropped, every.fernignoreentry restored.hashCode()on 11 fields-less message types (Fern emitsequals()withouthashCode(), breaking the Object contract).speak/v2+listen/v2V2WebSocketClient(Fern routes unknown frames toonError).ReconnectingWebSocketListener:maxRetries(0)semantics, configurableconnectionTimeoutMs,applyOptionsOverridehook.ClientOptions: correct SDK name + release-please marker.Version
Fern re-stamped
0.6.1;mainis0.6.0. Reset to0.6.0+ marker inClientOptionsso release-please owns the bump (feat -> minor).build.gradleis permanently frozen and untouched.Verification
./gradlew test compileExamples: BUILD SUCCESSFUL (unit/wire tests incl. theSpeakV2ForwardCompatTest/ListenV2ForwardCompatTestguards, plus examples compilation).Merge
Squash-merge (repo convention).
Added test coverage
The Fern generator did not emit a wire test for the batch endpoint, so
src/test/java/com/deepgram/SpeakV2BatchTest.javawas added (frozen viasrc/test/): aMockWebServertest assertingspeak().v2().audio().generate()issuesPOST /v2/speakwithmodel/encodingin the query andtextin the JSON body, returns the audio viaInputStream, and serializes integersample_rate/bit_ratewithout a decimal (guards thetype: integerfix). Also verified live against staging across mp3/linear16/flac (integer params accepted).