Skip to content

Live transcription is not exposed on Java ADK Event/LlmResponse (Python parity gap) #1111

@vnnv01

Description

@vnnv01

Describe the Bug:

The published Java ADK Maven artifact does not expose live transcription on the public event API.

RunConfig supports:

  • inputAudioTranscription
  • outputAudioTranscription

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:

  1. 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
  2. Configure live mode with transcription enabled:
    • responseModalities = [AUDIO]
    • streamingMode = BIDI
    • inputAudioTranscription = AudioTranscriptionConfig.builder().build()
    • outputAudioTranscription = AudioTranscriptionConfig.builder().build()
  3. Write Java code that consumes the live event stream from Runner.runLive(...).
  4. Try to access transcription on the emitted event objects, for example:
    • event.inputTranscription()
    • event.outputTranscription()
  5. 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.inputTranscription
  • LlmResponse.outputTranscription
  • Event.inputTranscription
  • Event.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%)

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions