Queue Announcer — Multi-Language TTS for Queue Systems
Preview and demo
Status: available · Last verified 7. 11. 2026. Availability checks are not a security guarantee.
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
Requirements
JavaScript hand-written vanilla CSS
Changelog
Vanilla JavaScript (ES2020), shipped as UMD + ESM
Automated Security Scan Passed
- Product version:
- 1.0.0
- Archive verified:
- Yes
- Scan date:
- 31 October 2026
- Malware scan:
- Passed
- Secret detection:
- Passed
- Dependency scan:
- Not applicable
- Static analysis:
- Passed with 2 non-blocking findings
A passed automated scan does not guarantee that the software is free from every vulnerability or security risk. The result applies only to this version. View scan methodology
Technical requirements
- Vanilla JavaScript
- Database: SQLite
- Node.js required
- Composer required during installation
- Shared hosting may not be sufficient
- Docker deployment supported
What is included
- Full application package with full downloadable files
- Documentation included for installation and setup
- Readable source code for customization
- 12 listed features
- Working live demo or preview access
- Changelog included on the product page
Who is this product for
- Buyers who need a full application rather than a custom build from scratch
- Teams shopping within Cross-platform
Updates and support
- Support terms are provided by the seller and should be reviewed before purchase
- Recent changes are visible in the product changelog
- Use the changelog to confirm ongoing maintenance before rollout
Asking price: $48.00
This listing is for a one-time acquisition of the complete project, not a standard source-code licence.
Project details and operational claims are seller-provided unless explicitly marked as verified by ESDecode.
Financial information is seller-reported unless explicitly marked verified by ESDecode. Current verification status: SELLER REPORTED.
What is included in the acquisition
- Source code
- Deployment configuration
- Website
- Documentation
Ownership and transfer
External transfers such as domains, store listings, hosting and third-party accounts are arranged directly between buyer and seller after payment.
Technical details
- Current version
- 1.0.0
- Last updated
- Nov 1, 2026
- Framework
- Vanilla JavaScript
- Databases
- SQLite
- Shared hosting
- No
- Docker
- Yes
- Composer required
- Yes
- Node.js required
- Yes
- Documentation
- Yes
- Source encrypted
- No
- Source obfuscated
- No
Marketplace review
Content review processReviewed 1. 11. 2026. The current version was reviewed.
The marketplace reviewed the listing content, package structure and required documentation.
Automated checks looked for suspicious files and common malware indicators.
The product received an additional security-focused review beyond the baseline listing checks.
This is not a full penetration test or a guarantee that the product is vulnerability-free.
Related Items
Full Project Acquisition
This listing is for a one-time acquisition of the complete project, not a standard source-code licence.
Review the Included Assets, commitment and Handover rules before purchasing.
Item Details
- Last Update
- November 1, 2026
- Published
- October 31, 2026
- Version
- 1.0.0
- Category
- Cross-platform
- Product Type
- Full application
- Sale Type
- Full Project Acquisition
- Sales
- 0
- Reviews
- No reviews