Voice Features
Voice input (STT) and voice output (TTS) — when and how to enable.
Your NovixAgent AI widget can talk and listen. Visitors can tap a microphone and speak instead of typing (voice input, speech-to-text), and they can have an assistant reply read aloud (voice output, text-to-speech). Both are handy for accessibility, hands-free browsing, mobile, and kiosk-style deployments.
The two capabilities are separate features on your plan and are unlocked by the plan you're on. When a plan includes them, they're on by default: the microphone and the "Listen" controls appear in your widget the next time a page with it loads, without re-pasting your embed snippet. You can turn each one off per widget from Dashboard → Chat Configuration → Voice (see Turning voice on or off below). When a plan doesn't include them, those controls aren't shown.
Plan availability
| Starter | Pro | Business | |
|---|---|---|---|
| Voice output (text to speech) | — | ✓ | ✓ |
| Spoken characters per month | — | 150,000 | 500,000 |
| Voice input (speech to text) | — | ✓ | ✓ |
| Minutes transcribed per month | — | Unlimited | Unlimited |
Text-to-Speech carries a monthly character budget (see The TTS character budget below); speech-to-text is not metered. How much of the budget is left shows in Dashboard → Analytics → Overview under Plan Usage. See Billing & plans for how plans and quotas work.
Turning voice on or off
When your plan includes voice, each feature is on by default, but you control it per widget from Dashboard → Chat Configuration → Voice — two toggles, Text-to-Speech and Speech-to-Text. Switch either off and its control disappears from the widget the next time a page with it loads (turning off Speech-to-Text hides the microphone button) — handy if you want, say, spoken replies but no microphone input. On a plan without voice, a toggle that is off is locked and one that is still on can be switched off. Turning one on is refused by the server as well: the save is not stored, and the notice says the setting is not included in the site's plan.
Voice output — Text-to-Speech (TTS)
A finished assistant reply carries a "Listen" control. A visitor clicks it to hear the answer spoken aloud. There's also a speaker toggle in the input row for auto-read — turn it on and each new reply is read out automatically as it arrives, so a visitor can keep their eyes off the screen entirely.
The control appears once a reply has finished streaming.
How it works
- Where the audio comes from. The widget sends the reply text to our backend, which synthesizes audio through one of two providers — Speechify or OpenAI — and sends it back as one finished clip to play in the visitor's browser. We generate it on demand and do not store it on our servers.
- Which provider is used depends on the language of the reply. Our server reads it from the reply text itself; the microphone's language and the browser's language are not used. Speechify officially covers six languages (English, German, Spanish, French, Italian, Portuguese) and is asked first for those; for a reply in another language, including one whose language is unclear, OpenAI is asked first and takes the language from the text. Either way, the other provider is the fallback if the first is unavailable. You don't configure this and it isn't a quality setting — it's about the six languages Speechify has validated, so a reply in another language doesn't come back from it sounding wrong.
- Auto-read is off by default. Because each spoken reply draws on your character budget, the widget does not read replies aloud unless the visitor opts in — either by clicking "Listen" on a message, or by switching on the auto-read speaker toggle. This keeps your budget spent only where a visitor actually wants audio.
- Replays are free. Clicking "Listen" again on the same message during the same page visit replays it from the browser's memory (the twenty most recent clips are kept) — it doesn't reach our servers again and doesn't spend more of your budget. After a page reload, a replay is a new request and is charged.
- The browser may swallow the very first play. Browsers block audio from playing until the visitor has interacted with the page, so the first "Listen" on a freshly loaded page can be silent. That clip has still been made and charged; pressing "Listen" again plays it from the browser's memory at no extra charge. This is the browser's rule, not a fault in the widget.
Voices and language
The reply is spoken with a natural-sounding voice for the language it is written in, detected automatically from the reply text. Changing the microphone's language changes how speech is recognised and leaves how an answer that is already written is read aloud untouched. TTS covers English, Spanish, French, German, Italian, Portuguese, Dutch, Polish, Russian, Ukrainian, Turkish, Swedish, Danish, Norwegian, Finnish, Czech, Hungarian, Romanian, Greek, Arabic, Hebrew, Japanese, Korean, Chinese, Indonesian, Malay, Vietnamese, Thai and Hindi.
A reply written in a language outside that set is still read. OpenAI's voice is asked first and takes the language from the text; we have not validated the result for those languages, so the pronunciation may be off. Your text answer is unaffected and shows in full.
The TTS character budget
Text-to-Speech has its own monthly budget, measured in characters of spoken text — separate from your AI message quota.
The budget for each plan is in Plan availability above.
- Per-request cap. A single spoken reply is capped at 3,000 characters. Most assistant answers are well under that; a longer one is refused rather than truncated, so the visitor sees the "Listen" control report a problem instead of hearing half an answer. The text answer is still shown in full either way.
- When the budget runs out. The "Listen" and auto-read controls quietly disable until the budget resets. Chat itself is unaffected — visitors keep getting text answers normally. The budget resets monthly on the same day as your message quota, also on a yearly plan (see Billing & plans).
- Need more? The budget grows when you upgrade. There is no character top-up to buy on top of a plan — the add-on packs sold in the dashboard extend your message allowance, not your TTS characters. See Billing & plans.
You can watch consumption in real time under Dashboard → Analytics → Overview → Plan Usage — the TTS characters / month card shows characters used against your monthly limit.
Voice input — Speech-to-Text (STT)
When voice input is on your plan, visitors see a microphone button in the chat input. They tap it and speak, their words appear in the message box as they talk, and they send the message as usual — no typing needed.
How it works
- It runs in the visitor's browser, not on our servers. Transcription uses the browser's built-in Web Speech API. We don't receive the audio, store it, or bill for it, and there's no monthly meter on voice input. We get the text, and only once the visitor sends the message.
- On most desktop browsers it is not done on the device. Chrome sends the captured audio to Google's speech service; by default a browser's speech recognition runs on a server, and the widget does not ask for on-device recognition. The browser chooses the speech service; the widget has no setting to change or redirect it, so the way to avoid it is to turn voice input off. You are the data controller for your visitors, so this is yours to disclose, and it is written up in our Privacy Policy section 4.4 and the DPA section 5.4. If it does not suit your visitors, leave voice input off; text chat is unaffected.
- No feedback loop. If a visitor is both speaking and having replies read aloud, speech recognition pauses while the assistant is talking and resumes when it stops, so the reply's audio isn't transcribed back into the chat.
Language
Voice input starts from the visitor's saved voice-language choice, or from the detected browser preference when there is no saved choice. The visitor can change it from the microphone's language control. This recognition choice tells the browser how to transcribe speech; it does not translate the words, automatically follow a later conversation-language switch, or force the assistant's reply language.
Browser support and permissions
- Browser support. Works in Chrome and modern Safari. Edge, Brave and Opera show the microphone button, but recognition there often fails and the visitor sees a notice. On a browser without the Web Speech API, the microphone button simply isn't shown and text chat works as usual.
- HTTPS and microphone permission. Browsers only allow microphone access on secure (HTTPS) sites, and the visitor is asked to grant permission the first time. If your page blocks microphone access to embedded content, the button won't appear — see Installing the Widget.
Where voice fits with the rest of the widget
- Language. Voice input uses its own saved recognition language; it does not automatically follow the assistant's conversation language. If a visitor switches the language they are speaking, they should select that language from the microphone's language control before recording. The widget's interface and the assistant's reply language are configured and resolved separately under Dashboard → Chat Configuration — see Customizing the chat widget.
- Usage and limits. Your Text-to-Speech character consumption appears alongside your other plan meters in Dashboard → Analytics → Overview → Plan Usage — see Website Analytics.
- Getting set up. New to the widget? Start with Getting Started.
What voice does not do
- Voice in the widget is assistant-output audio and visitor-input transcription only: it offers no continuous, spoken, phone-style conversation with the assistant and no outbound phone calls. Speaking to a person is a different feature and it does exist: on the plans that include it, a visitor in a live chat can call one of your operators from the widget. See Voice Calls.
- Voice output needs an internet round-trip to synthesize each reply, so there's a brief "preparing…" moment before audio starts on the first play of a message.
- Voice input depends on the visitor's browser and its microphone permission; on browsers without the speech API, or pages whose policy blocks the microphone, it's hidden; where recognition fails after that — a refused permission, a speech service that doesn't answer — the button stays and the visitor sees a notice.
- Voice is a per-website capability, governed by the plan on that website. Per-page enable/disable isn't available today.
Got a specific voice use case — kiosk, accessibility compliance, or a voice-first product — or want a limit that's not on the standard plans? Email support@novixagent.ai and we'll help you set it up.