-
Notifications
You must be signed in to change notification settings - Fork 313
Live transcription is not exposed on Java ADK Event/LlmResponse (Python parity gap) #1111
Description
Describe the Bug:
The published Java ADK Maven artifact does not expose live transcription on the public event API.
RunConfig supports:
inputAudioTranscriptionoutputAudioTranscription
However, when using the released Maven artifact, Java callers consuming live events do not have public inputTranscription / outputTranscription access on Event or LlmResponse.
This is a bug for teams migrating from Python ADK, because Python exposes transcript-bearing events during live streaming and Java clients cannot preserve the same behavior with the released API.
Steps to Reproduce:
- Create a Java project using the published Maven dependencies:
com.google.adk:google-adk:1.0.0- optionally
com.google.adk:google-adk-dev:1.0.0
- Configure live mode with transcription enabled:
responseModalities = [AUDIO]streamingMode = BIDIinputAudioTranscription = AudioTranscriptionConfig.builder().build()outputAudioTranscription = AudioTranscriptionConfig.builder().build()
- Write Java code that consumes the live event stream from
Runner.runLive(...). - Try to access transcription on the emitted event objects, for example:
event.inputTranscription()event.outputTranscription()
- Build the project / inspect the released API.
Expected Behavior:
The released Java public API should expose live transcription to application code, similar to Python ADK.
Expected public fields/accessors:
LlmResponse.inputTranscriptionLlmResponse.outputTranscriptionEvent.inputTranscriptionEvent.outputTranscription
Expected behavior:
- partial transcription events while streaming
- final transcription visibility to Java callers when the utterance is finished/flushed
Observed Behavior:
In the released Maven artifact, the public Java event API does not expose transcript fields to the caller.
As a result:
- Java applications cannot consume transcript-bearing live events directly
- migration from Python ADK requires custom transcript stitching/adaptation outside the ADK event model
Environment Details:
- ADK Library Version (see maven dependency):
1.0.0 - OS:
Ubuntu 24.04.2 LTS (WSL2) - TS Version (tsc --version):
N/A
Model Information:
- Which model is being used:
gemini-3.1-flash-live-preview
Regression:
Unknown / N/A
Logs:
N/A for this issue. This is an API-surface problem in the released artifact rather than a single runtime stack trace.
Screenshots / Video:
N/A
Additional Context:
This appears to be a parity gap between the published Maven release and newer Java source behavior, and it is a migration blocker for teams moving from Python ADK to Java ADK.
This issue is separate from the live media_chunks / WebsocketNotConnectedException problem in the current Maven release.
Minimal Reproduction Code:
RunConfig runConfig =
RunConfig.builder()
.setResponseModalities(ImmutableList.of(new Modality(Modality.Known.AUDIO)))
.setStreamingMode(StreamingMode.BIDI)
.setInputAudioTranscription(AudioTranscriptionConfig.builder().build())
.setOutputAudioTranscription(AudioTranscriptionConfig.builder().build())
.build();
runner.runLive(session, liveRequestQueue, runConfig)
.subscribe(event -> {
// These are expected for migration parity, but are not available
// in the released Maven API.
// event.inputTranscription();
// event.outputTranscription();
});
## How often has this issue occurred?:
- Always (100%)