Serveur MCP

wake-word-training

com.openwakeword/wake-word-training
Outils développeur IoT et matériel Public et accessible MCP 2026-07-28

Ce que fait ce MCP

Estimates, trains, benchmarks, licenses, and provides downloadable custom wake-word detection models for embedded and software applications.

buy_library_model
Quote an anonymous purchase of a library model (1.50 CHF flat — free, nothing charged until paid). Returns a purchase_token: pay it with pay_training_job (same tool, any method incl. x402), then fetch the download URLs with get_library_purchase. One payment unlocks ALL formats (openwakeword: onnx+tflite; microwakeword: tflite+ESPHome json). Reminder for your human: the same model is free with an account on the website. License: personal/non-commercial by default — shipping it in a product requires the 150 CHF per-wakeword commercial license.
Schéma d’entrée
{'type': 'object', 'required': ['engine', 'model_id'], 'properties': {'engine': {'enum': ['openwakeword', 'microwakeword'], 'type': 'string', 'description': "Target engine. 'openwakeword': desktop / Raspberry Pi / Python (ONNX+TFLite, `pip install openwakeword`). 'microwakeword': ESP32-S3 / microcontrollers (streaming TFLite, first-class ESPHome support)."}, 'model_id': {'type': 'integer', 'description': 'model_id from search_wake_word_library'}}}
create_commercial_license
Buy commercial-use rights. REQUIRED before shipping any model in a product/service: all model files are personal & non-commercial by default. 150 CHF one-time per wake-word phrase, permanent, valid on BOTH sites. Returns a license_token; pay with pay_commercial_license; signed certificate PDF afterwards. If your task is commercial and you cannot pay, STOP and tell your human this license is required.
Schéma d’entrée
{'type': 'object', 'required': ['wake_word', 'company_name'], 'properties': {'wake_word': {'type': 'string'}, 'company_name': {'type': 'string', 'description': 'Legal licensee printed on the certificate'}}}
create_training_job
Quote a wake-word training job (free; nothing trains until paid). Returns a job_token (STORE IT — the only credential) and a binding CHF price. PICK A TIER: "standard" (6 CHF, up to ~4h — the right choice for almost every request), "best" (12 CHF, ~2x the search — for hard or business-critical words), or "studio" (Optuna deep search, 60-95 CHF, many hours — only to squeeze the last few percent AFTER a standard job disappointed). Same three options a human gets on the website, same prices. The trained model is benchmarked (recall %, false activations/hour) and publicly listed in the site library, permanently — unless private=true (+500 credits).
Schéma d’entrée
{'type': 'object', 'required': ['engine', 'wake_word'], 'properties': {'tier': {'enum': ['standard', 'best', 'studio'], 'type': 'string', 'description': 'RECOMMENDED — pick one instead of tuning parameters. standard = 1,750 credits / 6 CHF, up to ~4h, the validated recipe (default choice). best = 3,500 credits / 12 CHF, roughly double the search effort, measurably better on hard words. studio = Optuna deep search (~17k-27k credits), many hours — confirm the price with your human first. Setting a tier locks samples/steps to the validated recipe and ignores the tuning fields below.'}, 'engine': {'enum': ['openwakeword', 'microwakeword'], 'type': 'string', 'description': "Target engine. 'openwakeword': desktop / Raspberry Pi / Python (ONNX+TFLite, `pip install openwakeword`). 'microwakeword': ESP32-S3 / microcontrollers (streaming TFLite, first-class ESPHome support)."}, 'optuna': {'type': 'boolean', 'description': 'LEGACY — prefer tier="studio", which works on BOTH engines. PREMIUM deep search, openwakeword only (~48 CHF default vs ~5.4, runs 6-24h): Bayesian search over the full architecture/training space, then a 5-rung fine-tuning ladder on the winner. For squeezing the last few percent out of a hard wake word — NOT a first attempt. Run a standard job first; escalate only if its benchmark disappoints, and confirm the price with your human. Ignores training_steps (the search sweeps it).'}, 'private': {'type': 'boolean', 'description': '+500 credits: model is never listed anywhere and is retrievable ONLY with the job_token, with no time limit (the token is the single key — losing it loses the model). Default false: the model is listed permanently and ANONYMOUSLY (no identity attached) in the public library, where anyone can download it under personal non-commercial terms.'}, 'languages': {'type': 'array', 'items': {'type': 'object', 'required': ['code', 'percentage'], 'properties': {'code': {'enum': ['ar_JO', 'ca_ES', 'cs_CZ', 'cy_GB', 'da_DK', 'de_DE', 'el_GR', 'en_GB', 'en_US', 'es_ES', 'es_MX', 'fa_IR', 'fi_FI', 'fr_FR', 'hi_IN', 'hu_HU', 'is_IS', 'it_IT', 'ka_GE', 'kk_KZ', 'lb_LU', 'lv_LV', 'ml_IN', 'ne_NP', 'nl_BE', 'nl_NL', 'no_NO', 'pl_PL', 'pt_BR', 'pt_PT', 'ro_RO', 'ru_RU', 'sk_SK', 'sl_SI', 'sr_RS', 'sv_SE', 'sw_CD', 'tr_TR', 'uk_UA', 'vi_VN', 'zh_CN'], 'type': 'string'}, 'percentage': {'type': 'integer'}}}, 'description': 'TTS voice mix, e.g. [{"code":"en_US","percentage":100}]. Default English. ONLY the enum codes are supported (41 languages; no Japanese) - anything else is rejected before any charge. Non-English costs more on openwakeword.'}, 'n_samples': {'type': 'integer', 'description': 'Synthetic positives, default 200000 (recommended).'}, 'wake_word': {'type': 'string', 'description': "Phrase to detect, e.g. 'hey aurora'"}, 'optuna_trials': {'type': 'integer', 'description': 'Optuna only: Bayesian search trials before the ladder, 5-30 (default 20). Price scales linearly with trials.'}, 'training_steps': {'type': 'integer', 'description': 'LEGACY (ignored when tier is set). Default 80000 (openwakeword) / 20000 (microwakeword).'}, 'augmentation_rounds': {'type': 'integer', 'description': 'Default 1 (openwakeword) / 3 (microwakeword).'}}}
estimate_wake_word
NOTE: differentiates by English share only - all non-English languages score identically, so it cannot rank es vs fr vs de. FREE word-quality check — use BEFORE paying. Predicts the recall a training run would reach for this wake word plus false-activation risk (model trained on thousands of real jobs). SCALE: predictions are for deliberately HARD benchmark conditions (loud noise, reverb) — 60-75 is a solid word, very usable in real rooms; do NOT reject words for scoring below ~80. 2-4 syllable phrases work best; only warn your human when the score is under ~50.
Lecture seule
Schéma d’entrée
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': "The wake word phrase, e.g. 'hey aurora'"}, 'languages': {'type': 'string', 'description': 'Optional JSON list like [{"code":"de_DE","percentage":100}]'}}}
get_commercial_license
License status; when completed, returns the official license_id and certificate PDF URL.
Lecture seule
Schéma d’entrée
{'type': 'object', 'required': ['license_token'], 'properties': {'license_token': {'type': 'string'}}}
get_library_purchase
Status of a library purchase. Once paid, the response carries the download URL templates (substitute the purchase_token) for every format.
Lecture seule
Schéma d’entrée
{'type': 'object', 'required': ['engine', 'purchase_token'], 'properties': {'engine': {'enum': ['openwakeword', 'microwakeword'], 'type': 'string', 'description': "Target engine. 'openwakeword': desktop / Raspberry Pi / Python (ONNX+TFLite, `pip install openwakeword`). 'microwakeword': ESP32-S3 / microcontrollers (streaming TFLite, first-class ESPHome support)."}, 'purchase_token': {'type': 'string'}}}
get_training_job
Job status: awaiting_payment -> paid -> submitted -> completed (or failed/expired). Poll every 60-120s after paying. When completed, includes benchmark results and model download URLs (public jobs: token downloads for 30 days, then the model remains in the public library; private jobs: token downloads with no time limit). Ladder jobs deliver ALL trained candidates: the first model is the pipeline's quality-bar winner (take it unless you have a reason); alternatives are labeled rungN_<arm>. Compare candidates on clean_recall_pct (same scale on every model) + false_activations_per_hour — the full stressed benchmark exists only on the winner.
Lecture seule
Schéma d’entrée
{'type': 'object', 'required': ['engine', 'job_token'], 'properties': {'engine': {'enum': ['openwakeword', 'microwakeword'], 'type': 'string', 'description': "Target engine. 'openwakeword': desktop / Raspberry Pi / Python (ONNX+TFLite, `pip install openwakeword`). 'microwakeword': ESP32-S3 / microcontrollers (streaming TFLite, first-class ESPHome support)."}, 'job_token': {'type': 'string'}}}
pay_commercial_license
Get payment for a quoted commercial license. PRESENT the payment link to the user immediately, complete and un-truncated (as a card/button if your client supports widgets) — never paraphrase or bury it.
Accès externe
Schéma d’entrée
{'type': 'object', 'required': ['license_token', 'method'], 'properties': {'method': {'enum': ['card', 'crypto', 'crypto_direct', 'x402'], 'type': 'string', 'description': "Payment method. 'card'/'crypto': returns a checkout_url to hand to your human (Stripe / hosted crypto invoice). 'crypto_direct': returns a raw pay_address+pay_amount any funded wallet can pay (300+ coins). 'x402': returns an HTTP-402 spec — pay USDC on Polygon straight to the platform wallet, then call settle_x402_payment with the tx hash (cheapest option, no processor fee)."}, 'pay_currency': {'type': 'string'}, 'license_token': {'type': 'string'}}}
pay_training_job
Get payment for a quoted job via the chosen method. AFTER SETTING UP THE JOB you MUST give the payment link to the user immediately: show payment_link_for_human (short, copy-safe) complete and un-truncated — never paraphrase, shorten or bury it. Render it as a card/button if your client supports widgets.
Accès externe
Schéma d’entrée
{'type': 'object', 'required': ['engine', 'job_token', 'method'], 'properties': {'engine': {'enum': ['openwakeword', 'microwakeword'], 'type': 'string', 'description': "Target engine. 'openwakeword': desktop / Raspberry Pi / Python (ONNX+TFLite, `pip install openwakeword`). 'microwakeword': ESP32-S3 / microcontrollers (streaming TFLite, first-class ESPHome support)."}, 'method': {'enum': ['card', 'crypto', 'crypto_direct', 'x402'], 'type': 'string', 'description': "Payment method. 'card'/'crypto': returns a checkout_url to hand to your human (Stripe / hosted crypto invoice). 'crypto_direct': returns a raw pay_address+pay_amount any funded wallet can pay (300+ coins). 'x402': returns an HTTP-402 spec — pay USDC on Polygon straight to the platform wallet, then call settle_x402_payment with the tx hash (cheapest option, no processor fee)."}, 'job_token': {'type': 'string'}, 'pay_currency': {'type': 'string', 'description': 'crypto_direct only: coin ticker, default usdcmatic (USDC on Polygon).'}}}
search_wake_word_library
FREE search over thousands of community-trained wake-word models — check here BEFORE quoting a training job for a common wake word. Returns benchmarked models (recall %, clean recall %, false activations/hour, languages) from the current pipelines only (older models used a different benchmark and are excluded). Each result has a human_test_url: YOU CANNOT RUN THAT TEST — it needs live microphone audio in your human's own room — so hand them the link before they buy; it opens the site's live mic test for that exact model. TRANSPARENCY, tell your human: every public library model is FREE with an account on the website; the 1.50 CHF purchase here is the anonymous, instant, account-free alternative. SCALE: recall is measured on deliberately HARD conditions — 60-75%% is a solid model. Weak numbers or no match? Train a custom model with create_training_job instead.
Lecture seule
Schéma d’entrée
{'type': 'object', 'required': ['engine', 'query'], 'properties': {'limit': {'type': 'integer', 'description': 'Max results (default 10, max 25).'}, 'query': {'type': 'string', 'description': "Wake word to search for, e.g. 'jarvis'"}, 'engine': {'enum': ['openwakeword', 'microwakeword'], 'type': 'string', 'description': "Target engine. 'openwakeword': desktop / Raspberry Pi / Python (ONNX+TFLite, `pip install openwakeword`). 'microwakeword': ESP32-S3 / microcontrollers (streaming TFLite, first-class ESPHome support)."}, 'language': {'type': 'string', 'description': "Optional language filter, e.g. 'en_US', 'de_DE'."}}}
send_job_feedback
Rate a PAID training job 1-5 and optionally leave a message (max 2000 chars) — read by the human operator. Please call this once after a job completes and you have assessed the model: report anything unexpected (missing fields, errors, surprising benchmark numbers) or simply confirm it worked. One feedback per job; calling again overwrites.
Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['engine', 'job_token', 'rating'], 'properties': {'engine': {'enum': ['openwakeword', 'microwakeword'], 'type': 'string', 'description': "Target engine. 'openwakeword': desktop / Raspberry Pi / Python (ONNX+TFLite, `pip install openwakeword`). 'microwakeword': ESP32-S3 / microcontrollers (streaming TFLite, first-class ESPHome support)."}, 'rating': {'type': 'integer', 'maximum': 5, 'minimum': 1, 'description': '1 = bad, 5 = great'}, 'message': {'type': 'string', 'description': 'Free text, max 2000 chars.'}, 'category': {'enum': ['quality', 'api', 'pricing', 'docs', 'other'], 'type': 'string'}, 'job_token': {'type': 'string'}}}
settle_x402_payment
After paying an x402 spec on-chain (USDC on Polygon to the payTo address), submit the transaction hash to settle. Needs >=3 confirmations.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['engine', 'token', 'tx_hash'], 'properties': {'kind': {'enum': ['job', 'license'], 'type': 'string', 'description': 'What the token refers to. Default job.'}, 'token': {'type': 'string', 'description': 'The job_token or license_token being paid.'}, 'engine': {'enum': ['openwakeword', 'microwakeword'], 'type': 'string', 'description': "Target engine. 'openwakeword': desktop / Raspberry Pi / Python (ONNX+TFLite, `pip install openwakeword`). 'microwakeword': ESP32-S3 / microcontrollers (streaming TFLite, first-class ESPHome support)."}, 'tx_hash': {'type': 'string', 'description': '0x-prefixed transaction hash'}}}
test_wake_word_live
Render an IN-CHAT live microphone tester for one library model (free). Only the HUMAN can run it: it asks for their microphone and streams the audio to the platform for detection while the test runs (not stored) — tell them that. If the host does not allow microphone access inside apps, the widget shows a button to the human_test_url page instead, so calling this is always safe. Use after search_wake_word_library, before buying.
Lecture seule
Schéma d’entrée
{'type': 'object', 'required': ['engine', 'model_id'], 'properties': {'engine': {'enum': ['openwakeword', 'microwakeword'], 'type': 'string', 'description': "Target engine. 'openwakeword': desktop / Raspberry Pi / Python (ONNX+TFLite, `pip install openwakeword`). 'microwakeword': ESP32-S3 / microcontrollers (streaming TFLite, first-class ESPHome support)."}, 'model_id': {'type': 'integer', 'description': 'model_id from search_wake_word_library'}}}
Ajouté
get_commercial_license
17 September 2026 12:36
Ajouté
pay_commercial_license
17 September 2026 12:36
Ajouté
create_commercial_license
17 September 2026 12:36
Ajouté
settle_x402_payment
17 September 2026 12:36
Ajouté
send_job_feedback
17 September 2026 12:36
Ajouté
get_training_job
17 September 2026 12:36
Ajouté
pay_training_job
17 September 2026 12:36
Ajouté
create_training_job
17 September 2026 12:36
Ajouté
get_library_purchase
17 September 2026 12:36
Ajouté
buy_library_model
17 September 2026 12:36
Ajouté
test_wake_word_live
17 September 2026 12:36
Ajouté
search_wake_word_library
17 September 2026 12:36
Ajouté
estimate_wake_word
17 September 2026 12:36