Using Deepgram Audio Intelligence (Java SDK)
Audio intelligence is not a separate client in this SDK. It is the Listen V1 REST request surface with additional analysis fields enabled.
When to use this product
- You have audio and want transcript + analysis together.
- REST is the main path; the Java WebSocket client only exposes the real-time subset.
Use a different skill when:
- You want plain transcription only →
deepgram-java-speech-to-text.
- You already have text and only need text analysis →
deepgram-java-text-intelligence.
- You need turn-aware conversational streaming →
deepgram-java-conversational-stt.
Authentication
import com.deepgram.DeepgramClient;
DeepgramClient client = DeepgramClient.builder()
.apiKey(System.getenv("DEEPGRAM_API_KEY"))
.build();
Quick start — REST with repo-backed example pattern
import com.deepgram.resources.listen.v1.media.requests.ListenV1RequestUrl;
import com.deepgram.resources.listen.v1.media.types.MediaTranscribeRequestModel;
import com.deepgram.resources.listen.v1.media.types.MediaTranscribeResponse;
ListenV1RequestUrl request = ListenV1RequestUrl.builder()
.url("https://dpgr.am/spacewalk.wav")
.model(MediaTranscribeRequestModel.NOVA3)
.smartFormat(true)
.punctuate(true)
.diarize(true)
.language("en-US")
.build();
MediaTranscribeResponse result = client.listen().v1().media().transcribeUrl(request);
The concrete repo example (examples/listen/AdvancedOptions.java) demonstrates the same pattern for enabling higher-value Listen options via the builder.
What else the REST request surface supports
The generated ListenV1RequestUrl and MediaTranscribeRequestOctetStream classes also expose these verified analysis fields in this checkout:
sentiment
summarize
topics
customTopic
customTopicMode
intents
customIntent
customIntentMode
detectEntities
detectLanguage
diarize
redact
Quick start — WebSocket subset
import com.deepgram.resources.listen.v1.websocket.V1ConnectOptions;
import com.deepgram.resources.listen.v1.websocket.V1WebSocketClient;
import com.deepgram.types.ListenV1Model;
import java.util.concurrent.TimeUnit;
V1WebSocketClient wsClient = client.listen().v1().v1WebSocket();
wsClient.onResults(result -> System.out.println(result));
wsClient.connect(V1ConnectOptions.builder()
.model(ListenV1Model.NOVA3)
.diarize(true)
.build())
.get(10, TimeUnit.SECONDS);
In this Java checkout, the WebSocket connect options include diarize, detectEntities, redact, and the normal streaming transcription controls, but not summarize, topics, intents, or detectLanguage.
Key parameters / API surface
- REST builders:
ListenV1RequestUrl and MediaTranscribeRequestOctetStream
- REST analysis fields verified in source:
sentiment, summarize, topics, customTopic, customTopicMode, intents, customIntent, customIntentMode, detectEntities, detectLanguage, diarize, redact
- Helpful transcription companions:
smartFormat, punctuate, paragraphs, utterances, numerals, keywords, keyterm, replace, search
- WebSocket subset:
diarize, detectEntities, redact, plus standard live transcription options
API reference (layered)
- In-repo source of truth:
src/main/java/com/deepgram/resources/listen/v1/media/requests/ and src/main/java/com/deepgram/resources/listen/v1/websocket/ plus examples/listen/AdvancedOptions.java. reference.md is absent here.
- Canonical OpenAPI (REST): https://developers.deepgram.com/openapi.yaml
- Canonical AsyncAPI (WSS subset): https://developers.deepgram.com/asyncapi.yaml
- Context7:
/llmstxt/developers_deepgram_llms_txt
- Product docs:
Gotchas
- There is no separate “audio intelligence client”. Everything hangs off Listen V1.
- Most intelligence fields are REST-only in this SDK surface. The WebSocket connect options do not expose
summarize, topics, intents, or detectLanguage.
summarize on Listen V1 is its own generated type. Do not assume the Read API shape is identical.
- The repo example only demonstrates diarization-level options. There is no dedicated example file for sentiment/topics/intents in this checkout.
redact is currently a single String field on the REST builders. Do not assume Python-style string-or-list support here.
- Model support matters. The examples consistently use
NOVA3; follow that unless you have verified another model supports the overlays you need.
- These fields live on both URL and byte-upload request builders. Pick the builder that matches your input source.
Example files in this repo
examples/listen/AdvancedOptions.java
examples/listen/TranscribeUrl.java
examples/listen/FileUploadTypes.java
Central product skills
For cross-language Deepgram product knowledge — the consolidated API reference, documentation finder, focused runnable recipes, third-party integration examples, and MCP setup — install the central skills:
npx skills add deepgram/skills
This SDK ships language-idiomatic code skills; deepgram/skills ships cross-language product knowledge (see api, docs, recipes, examples, starters, setup-mcp).
1---2name: deepgram-java-audio-intelligence3description: Use when writing or reviewing Java code in this repo that enables Deepgram intelligence overlays on `/v1/listen` audio transcription - diarization, entity detection, sentiment, summarize, topics, intents, language detection, and redaction. Same endpoint as plain STT, but with extra request fields on `ListenV1RequestUrl` or `MediaTranscribeRequestOctetStream`. Use `deepgram-java-speech-to-text` for plain transcripts and `deepgram-java-text-intelligence` for analysis on existing text. Triggers include "audio intelligence", "diarize", "summarize audio", "sentiment from audio", "topic detection", and "redact".4---56# Using Deepgram Audio Intelligence (Java SDK)78Audio intelligence is not a separate client in this SDK. It is the **Listen V1 REST request surface** with additional analysis fields enabled.910## When to use this product1112- You have **audio** and want transcript + analysis together.13- REST is the main path; the Java WebSocket client only exposes the real-time subset.1415**Use a different skill when:**16- You want plain transcription only → `deepgram-java-speech-to-text`.17- You already have text and only need text analysis → `deepgram-java-text-intelligence`.18- You need turn-aware conversational streaming → `deepgram-java-conversational-stt`.1920## Authentication2122```java23import com.deepgram.DeepgramClient;2425DeepgramClient client = DeepgramClient.builder()26 .apiKey(System.getenv("DEEPGRAM_API_KEY"))27 .build();28```2930## Quick start — REST with repo-backed example pattern3132```java33import com.deepgram.resources.listen.v1.media.requests.ListenV1RequestUrl;34import com.deepgram.resources.listen.v1.media.types.MediaTranscribeRequestModel;35import com.deepgram.resources.listen.v1.media.types.MediaTranscribeResponse;3637ListenV1RequestUrl request = ListenV1RequestUrl.builder()38 .url("https://dpgr.am/spacewalk.wav")39 .model(MediaTranscribeRequestModel.NOVA3)40 .smartFormat(true)41 .punctuate(true)42 .diarize(true)43 .language("en-US")44 .build();4546MediaTranscribeResponse result = client.listen().v1().media().transcribeUrl(request);47```4849The concrete repo example (`examples/listen/AdvancedOptions.java`) demonstrates the same pattern for enabling higher-value Listen options via the builder.5051## What else the REST request surface supports5253The generated `ListenV1RequestUrl` and `MediaTranscribeRequestOctetStream` classes also expose these verified analysis fields in this checkout:5455- `sentiment`56- `summarize`57- `topics`58- `customTopic`59- `customTopicMode`60- `intents`61- `customIntent`62- `customIntentMode`63- `detectEntities`64- `detectLanguage`65- `diarize`66- `redact`6768## Quick start — WebSocket subset6970```java71import com.deepgram.resources.listen.v1.websocket.V1ConnectOptions;72import com.deepgram.resources.listen.v1.websocket.V1WebSocketClient;73import com.deepgram.types.ListenV1Model;74import java.util.concurrent.TimeUnit;7576V1WebSocketClient wsClient = client.listen().v1().v1WebSocket();77wsClient.onResults(result -> System.out.println(result));7879wsClient.connect(V1ConnectOptions.builder()80 .model(ListenV1Model.NOVA3)81 .diarize(true)82 .build())83 .get(10, TimeUnit.SECONDS);84```8586In this Java checkout, the WebSocket connect options include `diarize`, `detectEntities`, `redact`, and the normal streaming transcription controls, but **not** `summarize`, `topics`, `intents`, or `detectLanguage`.8788## Key parameters / API surface8990- REST builders: `ListenV1RequestUrl` and `MediaTranscribeRequestOctetStream`91- REST analysis fields verified in source: `sentiment`, `summarize`, `topics`, `customTopic`, `customTopicMode`, `intents`, `customIntent`, `customIntentMode`, `detectEntities`, `detectLanguage`, `diarize`, `redact`92- Helpful transcription companions: `smartFormat`, `punctuate`, `paragraphs`, `utterances`, `numerals`, `keywords`, `keyterm`, `replace`, `search`93- WebSocket subset: `diarize`, `detectEntities`, `redact`, plus standard live transcription options9495## API reference (layered)96971. **In-repo source of truth**: `src/main/java/com/deepgram/resources/listen/v1/media/requests/` and `src/main/java/com/deepgram/resources/listen/v1/websocket/` plus `examples/listen/AdvancedOptions.java`. `reference.md` is absent here.982. **Canonical OpenAPI (REST)**: https://developers.deepgram.com/openapi.yaml993. **Canonical AsyncAPI (WSS subset)**: https://developers.deepgram.com/asyncapi.yaml1004. **Context7**: `/llmstxt/developers_deepgram_llms_txt`1015. **Product docs**:102 - https://developers.deepgram.com/docs/stt-intelligence-feature-overview103 - https://developers.deepgram.com/docs/summarization104 - https://developers.deepgram.com/docs/topic-detection105 - https://developers.deepgram.com/docs/intent-recognition106 - https://developers.deepgram.com/docs/sentiment-analysis107 - https://developers.deepgram.com/docs/language-detection108 - https://developers.deepgram.com/docs/redaction109 - https://developers.deepgram.com/docs/diarization110111## Gotchas1121131. **There is no separate “audio intelligence client”.** Everything hangs off Listen V1.1142. **Most intelligence fields are REST-only in this SDK surface.** The WebSocket connect options do not expose `summarize`, `topics`, `intents`, or `detectLanguage`.1153. **`summarize` on Listen V1 is its own generated type.** Do not assume the Read API shape is identical.1164. **The repo example only demonstrates diarization-level options.** There is no dedicated example file for sentiment/topics/intents in this checkout.1175. **`redact` is currently a single `String` field on the REST builders.** Do not assume Python-style string-or-list support here.1186. **Model support matters.** The examples consistently use `NOVA3`; follow that unless you have verified another model supports the overlays you need.1197. **These fields live on both URL and byte-upload request builders.** Pick the builder that matches your input source.120121## Example files in this repo122123- `examples/listen/AdvancedOptions.java`124- `examples/listen/TranscribeUrl.java`125- `examples/listen/FileUploadTypes.java`126127## Central product skills128129For cross-language Deepgram product knowledge — the consolidated API reference, documentation finder, focused runnable recipes, third-party integration examples, and MCP setup — install the central skills:130131```bash132npx skills add deepgram/skills133```134135This SDK ships language-idiomatic code skills; `deepgram/skills` ships cross-language product knowledge (see `api`, `docs`, `recipes`, `examples`, `starters`, `setup-mcp`).