Queue Announcer Multi-Language TTS for Queue Systems
Add multi-language voice announcements to any queue system. No cloud TTS.
Item Description
Queue Announcer adds multi-language voice announcements to a queue system you already have.
If you have built a ticketing or calling system for a clinic, bank branch, government service centre, pharmacy or international school, the last piece is usually the voice: "Ticket A-015, please proceed to counter 3" — in English, Arabic and Spanish, on a device that already sits at the counter. Cloud TTS means an API key, a monthly bill, a network dependency and a privacy review. Queue Announcer takes the other road: it speaks through the browser's native Web Speech API, so there is no cloud service, no key, no per-announcement cost and no audio ever leaving the machine.
WHAT IT IS
A single, dependency-free JavaScript module. You feed it queue events, it speaks them. It handles the queue, the language, the voice, the wording and the edge cases — and nothing else. Drop one script tag into Laravel, Node, Django, PHP or a plain HTML page; there is no bundler, no npm install and no build step.
const announcer = new QueueAnnouncer({
defaultLanguage: 'en',
repeat: 2,
ticketSpeech: 'sequential'
});
await announcer.init();
await announcer.unlock(); // once, inside a click handler
announcer.announce({
type: 'ticket.called',
ticketNumber: 'A-015',
counter: '3',
language: 'ar'
});
WHAT MAKES IT USEFUL IN PRODUCTION
Announcements are serial, never overlapping. Each one enters a FIFO queue with a repeat count, an interval and an optional priority. A failure on one ticket is reported and the queue moves on — a dead utterance never silences the counter. Duplicate events from a polling loop are absorbed by a deduplication window, so the same ticket called twice within 1.5 seconds is announced once. The queue has a hard ceiling and rejects work with an explicit QUEUE_FULL error instead of dropping it silently.
Ticket numbers are spoken the way a human would say them. "A-015" becomes "A zero one five" in sequential mode, "A fifteen" in number mode, or is passed through raw. Separators are ignored, letters and digits are split into runs, and a phonetic map lets you swap "A" for "Alpha" or "0" for "oh" without touching the language pack.
Voice selection degrades gracefully: your explicit voiceURI, then an exact locale match, then a language prefix, then the fallback language, then the system default. When a device has no Arabic voice, the module falls back to English, raises NO_VOICE, and keeps a note in getDiagnostics() — so you find out from telemetry instead of from a customer at the counter.
Arabic is a first-class language, not a translation afterthought. The language pack carries RTL direction metadata, digits are spelled in Arabic, and getLanguageDirection() lets you flip the container — while deliberately never touching document.documentElement.dir, because the module is a guest in your layout, not the owner of it.
WHY NO CLOUD TTS
No API keys to rotate. No monthly bill that scales with footfall. No audio of customer ticket numbers leaving the building — which matters for clinics and government work. It works on an air-gapped LAN. Browser voices are already installed on the device and cost nothing per call.
WHAT'S IN THE PACKAGE
- queue-announcer.umd.js and queue-announcer.esm.js — the same module in both formats
- lang/en.json, lang/ar.json, lang/es.json — English, Arabic and Spanish packs with templates and digit words
- A complete interactive demo page (static, opens with a double-click)
- Full HTML documentation: installation, configuration, API reference, language pack spec, events, error codes, browser compatibility, known limitations
- README with quick start, CHANGELOG, license
WHAT THIS IS NOT
This is an announcement layer, not a queue management system. It does not include ticket issuing, queue management, a counter workbench, a display/kiosk UI, a database or backend APIs. It does not generate audio files, cache audio, or speak SSML — the Web Speech API does not support SSML. Voice timbre and availability come from the browser and the operating system, not from this module, and an Arabic voice is not present on every device — that is exactly what the fallback and diagnostics exist for.
Browsers refuse to speak before a user gesture, so unlock() must be called once from a click; the demo shows the correct pattern.
REQUIREMENTS
Any modern browser (Chrome, Edge, Safari 16+, Firefox) on any stack that can serve a static file. No server runtime, no build tooling, no third-party services.
If you already have the queue, this is the voice.
Features
• Dependency-free vanilla JavaScript (ES2020) — UMD and ESM builds, no bundler, no npm install
• Serial FIFO announcement queue — announcements never overlap
• Repeat count, inter-repeat interval, optional priority and a hard queue limit with explicit QUEUE_FULL error
• Three built-in language packs: English, Arabic (RTL) and Spanish, shipped as readable JSON
• Extensible language packs — register French, German, Japanese or your own at runtime
• Ticket speech modes: sequential ("A zero one five"), numeric ("A fifteen") or raw
• Smart voice resolution: voiceURI → exact locale → language prefix → fallback language → system default
• NO_VOICE fallback with diagnostics instead of silent failure
• Arabic RTL support with direction metadata and Arabic digit words, without touching the host page layout
• Deduplication window for polling-based integrations (no double announcements)
• Mute, volume, rate and pitch control, with optional localStorage persistence
• Browser autoplay handling — unlock() plus NOT_UNLOCKED queueing that resumes automatically after the gesture
• Lifecycle events (start, end, error, queueEmpty, voicesChanged) and seven documented error codes
• cancelAll(), pause(), resume() for live operator control
• Zero network requests — ticket numbers never leave the browser
• Whitelisted template variables only; no eval, no innerHTML
• Under 30 KB uncompressed, no external CDN assets
• Static demo page and full HTML API documentation included
All Reviews
Verified source code
Free support included
Download code immediately
Quality guarantee for your satisfaction
Support: info@sellanycode.com
All Questions
- Verified source code
- Join 35502+ buyers which trust us!
- Download code immediately
Satisfaction guarantee policy.
Information
| Category | Scripts & Code / JavaScript |
| First Release | 31 October 2026 |
| Files included | .html, .css, .cs, .c |
| Framework HTML/CSS | Bootstrap, YAML |
| Framework Javascript | jQuery, EXT JS, Node.js |
| Software version | .NET 3.5 |
| File Size | 1 MB |
| Database version | MySQL 5.x |
| Frameworks | JavaScript |