Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions examples/src/expressive-agent/README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Expressive agent

A free-form voice agent that demonstrates [Expressive Mode](https://docs.livekit.io/agents/build/expressive/).
A free-form voice agent that demonstrates [expressive mode](https://docs.livekit.io/agents/models/tts/expressive/).
There is no task and no tool: you talk to it like a friend, and it matches your
register. Tell it good news and it gets excited; tell it something went wrong
and it drops the energy.

Expressive Mode is the single `expressive: true` flag on `AgentSession`. With it
Expressive mode is the single `expressive: true` flag on `AgentSession`. With it
enabled the framework injects the TTS provider's markup guide into the LLM
prompt, so the model emits inline delivery tags (emotion, pacing, non-verbal
sounds) that the TTS renders and the transcript never shows.
Expand All @@ -16,8 +16,8 @@ sounds) that the TTS renders and the transcript never shows.
- `prompt.ts` holds the persona only. It steers _what_ the agent says, and
expressive mode owns _how_ it sounds, so the two never restate each other.

The pipeline uses LiveKit Inference with Gemini 2.5 Flash, AssemblyAI Universal
Streaming, Fish Audio S2.1 Pro, and the LiveKit turn detector.
The pipeline uses LiveKit Inference with Gemini 2.5 Flash, AssemblyAI Universal-3.5 Pro,
Fish Audio S2.1 Pro, and the LiveKit turn detector.
Comment on lines +19 to +20

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Readme names a speech-to-text model the example does not actually use

The example's description of its speech-to-text component was changed to "Universal-3.5 Pro" (examples/src/expressive-agent/README.md:19) even though the example is configured with AssemblyAI Universal Streaming (examples/src/expressive-agent/expressive_agent.ts:29), so readers are told about a setup that does not match the code.
Impact: Anyone following the example is misinformed about which speech recognition model runs, making the demo harder to reproduce or reason about.

Doc/code mismatch on the configured STT model

expressive_agent.ts:29 sets new inference.STT({ model: 'assemblyai/universal-streaming', language: 'en' }). The inference STT model union (agents/src/inference/stt.ts:48-51) lists assemblyai/universal-3-5-pro as a distinct model, confirming the two are different models. Either the README should keep saying "Universal Streaming" or the example code should switch to assemblyai/universal-3-5-pro.

Prompt for agents
The README now describes the pipeline as using "AssemblyAI Universal-3.5 Pro", but examples/src/expressive-agent/expressive_agent.ts configures inference.STT with model 'assemblyai/universal-streaming'. agents/src/inference/stt.ts lists 'assemblyai/universal-3-5-pro' as a separate model, so these are not the same. Align the two: either revert the README wording to Universal Streaming, or update the example's STT model to 'assemblyai/universal-3-5-pro' (verifying language support/config).
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.


## Run locally

Expand All @@ -37,7 +37,7 @@ The comparison is the point of the demo. Run it once with `expressive: true` and
once with `expressive: false`, and say the same thing to each. The words come out
much the same; the delivery does not.

Expressive Mode requires an `inference.TTS` model that declares a markup
Expressive mode requires an `inference.TTS` model that declares a markup
dialect. Fish Audio, Inworld TTS 2, Cartesia Sonic 3, and xAI qualify; providers
without a dialect synthesize normally and the flag stays inert. To hear another
one, swap the `tts` model in `expressive_agent.ts`:
Expand Down
Loading