{"id":44052387,"url":"https://github.com/pulp-platform/eae-kws","last_synced_at":"2026-02-07T23:36:28.840Z","repository":{"id":281299328,"uuid":"928418648","full_name":"pulp-platform/eae-kws","owner":"pulp-platform","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-07T09:04:07.000Z","size":43,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-07T10:23:40.319Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pulp-platform.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-06T15:55:55.000Z","updated_at":"2025-05-07T09:04:11.000Z","dependencies_parsed_at":"2025-03-08T06:26:31.535Z","dependency_job_id":"e6ce54ad-0c3a-4a1e-af6f-011a06630d56","html_url":"https://github.com/pulp-platform/eae-kws","commit_stats":null,"previous_names":["pulp-platform/eae-kws"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/pulp-platform/eae-kws","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulp-platform%2Feae-kws","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulp-platform%2Feae-kws/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulp-platform%2Feae-kws/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulp-platform%2Feae-kws/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pulp-platform","download_url":"https://codeload.github.com/pulp-platform/eae-kws/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulp-platform%2Feae-kws/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29212755,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-07T23:36:15.537Z","status":"ssl_error","status_checked_at":"2026-02-07T23:36:12.879Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-07T23:36:28.105Z","updated_at":"2026-02-07T23:36:28.825Z","avatar_url":"https://github.com/pulp-platform.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Environment-Aware Embeddings for Keyword Spotting \n\nThis repository contains the implementation of \"Boosting keyword spotting through on-device learnable user speech characteristics\". It implements an on-device learning architecture, composed of a (pretrained) backbone and an environment-aware embeding. The embeddings can learn the speech caracteristics of a target user or the characteristics of the background noise present in the environment. The embeddings are fused with the backbone and can be trained separately or together with the classifier and/or the backbone. Please cite the following publication if you use our implementation:\n\n```\n@misc{cioflan2024boostingkeywordspottingondevice,\n      title={Boosting keyword spotting through on-device learnable user speech characteristics}, \n      author={Cristian Cioflan and Lukas Cavigelli and Luca Benini},\n      year={2024},\n      eprint={2403.07802},\n      archivePrefix={arXiv},\n      primaryClass={cs.SD},\n      url={https://arxiv.org/abs/2403.07802}, \n}\n```\n\nThe repository contains the resources to train and fine-tune neural networks. The resources containing deployment and on-device training will be added soon. \n\n## Requirements\n\nTo install the packages required to pretraind and fine-tune the models, a conda environment can be created from environment.yml by running:\n```\nconda env create -f environment.yml\n```\n\n\n## Example\n\nTo run the main script, use the command:\n\n```\npython main.py --config_file example.json\n```\n\nThe preprocessing, environment, architecture, training, and experimental parameters can be configured individually in the `.json` configuration file. For instance, `example.json` sets up the pretraining of a DSCNNS network, followed by the learning of the user embedings, fused with the backbone through element-wise multiplication. The number of training utterances per user per class during the fine-tuning stage is fixed to four. The pretrained model is robust to noises (i.e, \"noise aware\", as described by Cioflan et al. in [On-Device Domain Learning for Keyword Spotting on Low-Power Extreme Edge Embedded Systems](https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=\u0026arnumber=10595987)) and the testing environment is a *meeting* environment with speech background noise.\n\n\n## Contributors\n\n* Cristian Cioflan, ETH Zurich [cioflanc@iis.ee.ethz.ch](cioflanc@iis.ee.ethz.ch)\n* Jacky Choi, ETH Zurich\n* Maximilian Grözinger, ETH Zurich\n\n\n## Acknowledgements\nThis work received support from the Swiss National Science Foundation Project 207913 \"TinyTrainer: On-chip Training for TinyML devices\".\n\n\n## License\nUnless explicitly stated otherwise, the code is released under Apache 2.0, see the LICENSE file in the root of this repository for details. \n\nAs an exception, the proposed partitions of the [Google Speech Commands v2](https://arxiv.org/abs/1804.03209) dataset available in `dataset/` are released under Creative Commons Attribution-NoDerivatives 4.0 International. Please see the LICENSE file in their respective directory. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpulp-platform%2Feae-kws","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpulp-platform%2Feae-kws","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpulp-platform%2Feae-kws/lists"}