esdecode
Full application

Queue Announcer — Multi-Language TTS for Queue Systems

No ratings
|0 Sales|by Jianwei Wang|v1.0.0
Queue Announcer — Multi-Language TTS for Queue Systems screenshot 1

Preview and demo

Status: available · Last verified 7. 11. 2026. Availability checks are not a security guarantee.

0
Sales
—
Rating
0
Reviews

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

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
Full Project AcquisitionAvailableRevenue generating

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

I am the sole owner of this asset, no transfer planned.

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 process
Listing ReviewedFiles ScannedSecurity Audit Completed

Reviewed 1. 11. 2026. The current version was reviewed.

Listing Reviewed

The marketplace reviewed the listing content, package structure and required documentation.

Files Scanned

Automated checks looked for suspicious files and common malware indicators.

Security Audit Completed

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.

Full Project Acquisition

Asking price$48.00
Revenue generating

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.

Asking price$39.00
VAT 23%$8.97
Rounding adjustment$0.03
Total$48.00
Instant digital download
Marketplace review record available
Recent product changes listed in the changelog
Support expectations are listed below

Item Details

Last Update
November 1, 2026
Published
October 31, 2026
Version
1.0.0
Product Type
Full application
Sale Type
Full Project Acquisition
Sales
0
Reviews
No reviews

Share this product

Know someone who might find this useful?