jambonz Adds Speech-to-Speech Support for Alibaba's Qwen Omni-Realtime

Dave Horton

We’re happy to announce that jambonz now supports Alibaba’s Qwen Omni-Realtime models (the models behind the recent Qwen-Audio-3.0-Realtime launch) as a first-class speech-to-speech vendor. If you run jambonz v11 or later with the mediajam media engine, you can connect any phone call to a full-duplex Qwen voice agent with a single verb.

Why Qwen Omni-Realtime Matters for Voice Agents

Qwen Omni-Realtime is a native speech-to-speech model: one model listens, reasons, and speaks over a single persistent connection, rather than chaining STT → LLM → TTS. That architecture shows up where it counts on a phone call:

How to Add Qwen Omni-Realtime to a jambonz Call

If you’ve used the OpenAI Realtime API with jambonz, this will feel instantly familiar. Qwen’s wire protocol is an OpenAI-Realtime dialect, and jambonz exposes it the same way. Here’s a minimal application using the @jambonz/sdk WebSocket interface:

session
  .answer()
  .qwen_s2s({
    model: 'qwen3.5-omni-flash-realtime',
    auth: {
      apiKey: process.env.DASHSCOPE_API_KEY,
    },
    llmOptions: {
      session_update: {
        modalities: ['text', 'audio'],
        voice: 'Ethan',
        instructions: 'You are a friendly and helpful voice assistant. ' +
          'Keep your responses concise and conversational.',
        turn_detection: {
          type: 'semantic_vad',
          threshold: 0.5,
          silence_duration_ms: 800,
        },
      },
      // the agent speaks first; omit this to wait for the caller
      response_create: {
        instructions: 'Greet the caller warmly and ask how you can help.',
      },
    },
    actionHook: '/s2s-complete',
  })
  .send();

A few practical notes from our testing:

Where to Learn More About Qwen Omni-Realtime

As always, come find us in the jambonz community with questions. We’d love to hear what you build with it.

Frequently asked questions

What is Qwen Omni-Realtime?

Qwen Omni-Realtime is Alibaba Cloud's family of full-duplex speech-to-speech models (the models behind the Qwen-Audio-3.0-Realtime launch). A single model listens and speaks simultaneously over a persistent WebSocket connection, handling speech recognition, reasoning, and speech generation natively without a separate STT/LLM/TTS pipeline.

Which Qwen models does jambonz support?

jambonz supports the Omni-Realtime conversation models, including qwen3.5-omni-plus-realtime (strongest reasoning) and qwen3.5-omni-flash-realtime (fastest responses). You choose the model in the verb's model property.

How do I authenticate to Qwen from jambonz?

Provide your Alibaba Cloud Model Studio (DashScope) API key in the verb's auth.apiKey property. An optional auth.host selects the endpoint: the default is the international endpoint (dashscope-intl.aliyuncs.com); you can specify a workspace-scoped host or the China (Beijing) endpoint instead. Note that DashScope keys are region-bound. The key and endpoint must belong to the same region.

How does turn detection work with Qwen on jambonz?

Qwen offers two server-side modes, configured in session_update.turn_detection: server_vad (acoustic only) and semantic_vad, which considers whether the caller's utterance sounds complete before ending their turn. We recommend starting with semantic_vad and a silence_duration_ms of 800.

Can the voice agent speak first when the call connects?

Yes. Include a response_create in llmOptions and jambonz triggers an immediate model response once the session is configured, so the agent greets the caller. Omit it and the agent waits for the caller to speak first.

What latency can I expect?

In our testing against the Singapore endpoint, the first audio of the model's reply arrived roughly 400 milliseconds after the caller stopped speaking — comfortably within the range of natural conversational turn-taking.