Interruptible Conversational Voice AI

A voice assistant in Chinese and English that understands and answers on the device, with hardware acceleration doing the work.

A voice terminal that answers on the device and can be interrupted mid-answer. Listening and speaking stay local; the conversation model is either your own cloud endpoint or on-device. Runs on a reComputer RK, a reComputer J30 / J40 (Orin) or a reComputer R2000 series, with the conversation language fixed at deploy time.

SenseCraftIntermediate30minAcoustic & Audio AISource Code

The voice terminal in one picture — an AEC microphone array and a speaker on an edge board, with the conversation model either behind an API or on the board itself

Reusable Site Templates

Places where someone speaks out loud, hands busy, and has to be able to cut the answer off.

Service desks and exhibits

Service desks and exhibits

Government service counters, trade-show booths, in-store advice desks. A wrong answer gets interrupted and asked again.

Voice front end for robots and machines

Voice front end for robots and machines

Desktop robots, delivery robots, shop-floor consoles. Whatever sits behind it changes; this layer does not.

Room and home terminals

Room and home terminals

Living rooms, meeting rooms, hotel rooms. Far-field speech works and the box never triggers on its own playback.

Not a fit: a microphone without hardware echo cancellation, and Chinese on reComputer R2000 series.

How it works

A microphone array captures speech, an edge voice host handles recognition and synthesis, and a speaker plays the reply. The conversation model runs on that host or behind your own endpoint.

Device composition for the conversational voice AI: an AEC microphone array captures over USB into an edge voice host that runs ASR, TTS and the resident agent; the reply plays out over a USB or 3.5 mm speaker, and the cloud preset calls an OpenAI-compatible LLM endpoint over HTTPS

Four things: a microphone array that has already removed the echo, a speaker, one edge board that runs recognition, synthesis and the resident agent, and one conversation model that sits either behind an API or on that same board. The first three are always on site. Whether anything crosses the internet is decided by the fourth alone.

On-Site Capture

The microphone is a hard requirement. It must expose a capture channel with echo already removed in hardware; a plain USB microphone re-captures the speaker, and the terminal starts interrupting itself.

  • reSpeaker XVF3800 is the validated default — hardware echo cancellation, noise suppression and beamforming over USB, with the processed channel selected automatically.
  • Any other array falls back to the first capture channel and needs an acoustic check on site.
  • A USB or 3.5 mm speaker plays the reply. Muting the microphone during playback removes barge-in along with the echo.

The microphone can be unplugged and plugged back in while the agent runs; capture recovers without a restart.

Engineering details, test methodology and measured dataRead the engineering wiki →

How well it works

The whole conversation, as you watch it happen in a browser panel.

Every turn lands on screen

  • Partial transcript shows grey, then firms up
  • Status pill tracks idle, thinking and speaking
  • Filter the log by message type

Barge in mid-answer

  • Talking mid-answer stops playback and interrupts
  • New utterance drops straight into the log
  • Barge-in can be turned off in settings

Latency out in the open

  • TTFT / TTFA shown live, with a history strip
  • TTS card logs sentence count, bytes and synth time
  • SLV card shows connection state and reconnects

Persona, voice and listening mode — all in the browser

  • Edit the system prompt in-browser, no restart to apply
  • Switch built-in voices or clone a new one by recording
  • Listening mode: always-on, wake word or push-to-talk

One deployment knob flips the language

  • Panel stays Chinese; language is a deploy setting
  • Set LANGUAGE to en and the whole pipeline switches
  • Same panel, same controls either way
Measured results

Measured on two boards; no conversation model in the loop unless the row says so.

What the user hearsTypicalDeviceWith the model
Speaking stops to the first frame of the spoken replyunder 800 msreComputer J40 Seriesyes
Speaking stops to the first frame of the spoken reply100 ms p50reComputer J40 Seriesno
Speaking stops to the first frame of the spoken replyabout 1.6 sreComputer RK3576no
Speaking stops to the text result16 ms p50reComputer J40 Seriesno
Chinese recognition error, short utterances1.05% CERreComputer RK3576—
English recognition error, short utterances3.65% WERreComputer RK3576—

For the rows without the model, add the response time of whichever model you connect; a cloud endpoint depends on the network round trip. On 10–20 s utterances recognition error rises to 9.62% CER in Chinese and 6.99% WER in English.

The session answers at the first natural pause. Turn detection waits for 400 ms of silence after a 2.5 s minimum, so a long sentence with a pause in the middle is answered after its first clause. For per-device latency and benchmark matrices, see Engineering Wiki · Conversational Voice AI.

Test methodology, scope footnotes and the four full measurement tables · Read the engineering wiki →
What you get out of it

Everything is served by the voice host itself; nothing goes to the cloud unless you point the conversation model outward.

InterfaceWhere it runsWhat it carries
ws://<host>:8621/v2v/streamSpeech service, every presetThe duplex session: PCM in, transcript and synthesized audio out, plus the abort a barge-in triggers
POST http://<host>:8621/asrSpeech serviceOffline whole-file transcription; the accuracy figures above were measured here
POST http://<host>:8621/ttsSpeech serviceSynthesis, with the realtime factor in a response header
http://<host>:18000AgentWeb dashboard — listening / thinking / speaking / barged-in, and each turn's transcript
http://<host>:1828/v1RK1828 card, RK local presetOpenAI-compatible Chat Completions for the on-device Qwen3-4B
http://<host>:8000/v1Orin NX, Jetson local presetOpenAI-compatible Chat Completions for the on-device Qwen3.5-4B
Conversation model address (outbound)Cloud presetAny OpenAI-compatible endpoint; Qwen API by default

The integration point is the conversation model interface, not a message topic. Point the model address at your own service — an agent framework, a RAG endpoint, a robot command layer — and the speech layer stays unchanged.

Every payload field and the Home Assistant discovery entities · Read the engineering wiki →
Porting It to Your Own System

The reusable unit is the chain hardware echo-cancelled capture → local recognition → one OpenAI-compatible call → local synthesis → interruptible playback. Only one link is bound to what the product does, and it sits behind a URL.

LayerWhat porting costs you
Microphone selection, channel detection, hot-plug recoveryreuse as-is
Qwen3-ASR and Matcha-TTS across the four accelerator runtimesreuse as-is
Duplex session, barge-in, playback drainreuse as-is
Language and board check, with refusal on unsupported pairsreuse as-is
The service behind the conversation model addressthis is where your product goes
System prompt and reply-length policytune for the new task

Anything already speaking streaming Chat Completions drops in: a RAG service over your documents, an agent framework with tool calls, a robot command layer, a ticketing or ordering backend.

Where this shape does not fit

  • A wake-word-only appliance. For a press-and-speak or single-command device, the always-listening session and barge-in are cost without benefit.
  • Deployments that need a stated latency budget. The figures above hold for the board and model each row names; measure end to end on your own configuration.
  • Languages outside the 30-language catalogue, and Chinese on reComputer R2000 series. Both are refused at deploy time.

How to deploy

Tell us about your site — we work out the hardware, then you connect the data and follow the steps.

Language

Which language will people speak to it? The board has to be able to both recognize and speak that language back. Not every board can do all of them.

Or compare them yourself: preset specificationsDeployment Guide · 30min →
SetupRoleDeviceQty
Cloud or OpenAI-Compatible LLMCompute DevicereComputer RK3576 Series / reComputer RK3588 Series / reComputer J30 Series (Jetson Orin Nano) / reComputer J40 Series (Jetson Orin NX) / external_raspberry_pi_5(either one)1
AEC MicrophonereSpeaker XVF3800 4-Mic Array1
Fully Local ConversationLocal AI DevicereComputer RK3588 Series / reComputer J40 Series (Jetson Orin NX)(either one)1
AEC MicrophonereSpeaker XVF3800 4-Mic Array1
PresetConversation modelSupported voice hostsRuns offlineBest for
Cloud or OpenAI-Compatible LLMQwen API by default, or any endpoint / key / model you enterRK3576 · RK3588 · Orin Nano 8GB · Orin NX 16GB · reComputer R2000 seriesNo — the model call needs the networkGetting a full conversation working fastest, and any model you already pay for
Fully Local ConversationQwen3-4B on RK1828 / RM182X, or Qwen3.5-4B on Orin NX 16GBRK3588 + RK1828 · Orin NX 16GBYes, once images and model artifacts are cachedConversation text that must not leave the site, and a fixed operating cost

Speech is local on both presets; the preset only decides where the conversation model runs. The cloud preset carries the upstream Recommended badge.

Difficulty is rated intermediate, about 30 minutes; the fully local presets take longer because the first start downloads model artifacts.

FAQ

Yes. Capture stays open during playback, so speech during a reply stops generation, clears the queued audio and opens the next turn. Acceptance is a manual test in the deployment guide — three turns, interrupting 0.5–1 second after each answer starts.

Didn't find your answer?
Contact Us
We Are Glad to Be Your Hardware Partner !
Next