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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions