{"id":30428829,"url":"https://github.com/voice-engine/make-a-smart-speaker","last_synced_at":"2025-08-22T16:03:00.225Z","repository":{"id":37774129,"uuid":"116494378","full_name":"voice-engine/make-a-smart-speaker","owner":"voice-engine","description":"A collection of resources to make a smart speaker","archived":false,"fork":false,"pushed_at":"2019-12-20T11:00:15.000Z","size":180,"stargazers_count":388,"open_issues_count":3,"forks_count":85,"subscribers_count":32,"default_branch":"master","last_synced_at":"2023-11-07T18:24:53.137Z","etag":null,"topics":["aec","beamforming","kws","nlu","stt","tts","voice-assistant"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/voice-engine.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-06T15:37:44.000Z","updated_at":"2023-11-06T16:37:34.000Z","dependencies_parsed_at":"2022-08-18T04:55:50.994Z","dependency_job_id":null,"html_url":"https://github.com/voice-engine/make-a-smart-speaker","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/voice-engine/make-a-smart-speaker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voice-engine%2Fmake-a-smart-speaker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voice-engine%2Fmake-a-smart-speaker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voice-engine%2Fmake-a-smart-speaker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voice-engine%2Fmake-a-smart-speaker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/voice-engine","download_url":"https://codeload.github.com/voice-engine/make-a-smart-speaker/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voice-engine%2Fmake-a-smart-speaker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271664762,"owners_count":24799291,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-22T02:00:08.480Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["aec","beamforming","kws","nlu","stt","tts","voice-assistant"],"created_at":"2025-08-22T16:01:40.432Z","updated_at":"2025-08-22T16:03:00.201Z","avatar_url":"https://github.com/voice-engine.png","language":null,"funding_links":[],"categories":["Others"],"sub_categories":[],"readme":"To make a smart speaker\r\n=======================\r\n\r\n[中文](zh.md)\r\n\r\nHere is a collection of resources to make a smart speaker. ~~Hope we can make an open source one for daily use.~~ \r\nI believe we have enough resources to make an open source smart speaker. Let's do it. Take a look at [the progress of the project named `smart speaker from scratch` on hackaday](https://hackaday.io/project/164221-smart-speaker-from-scratch). [The first hardware kit is available now.](https://www.makerfabs.com/voicen-linear-4-mic-array-kit.html)\r\n\r\n![](https://wiki.voicen.io/assets/images/speaker_front.png)\r\n\r\n\r\nThe simplified flowchart of a smart speaker is like:\r\n\r\n```\r\n+---+   +----------------+   +---+   +---+   +---+\r\n|Mic|--\u003e|Audio Processing|--\u003e|KWS|--\u003e|STT|--\u003e|NLU|\r\n+---+   +----------------+   +---+   +---+   +-+-+\r\n                                               |\r\n                                               |\r\n+-------+   +---+   +----------------------+   |\r\n|Speaker|\u003c--|TTS|\u003c--|Knowledge/Skill/Action|\u003c--+\r\n+-------+   +---+   +----------------------+\r\n```\r\n\r\n+ Audio Processing includes Acoustic Echo Cancellation (AEC), Beamforming, Noise Suppression (NS), etc.\r\n+ Keyword Spotting (KWS) detects a keyword (such as OK Google, Hey Siri) to start a conversation.\r\n+ Speech To Text (STT)\r\n+ Natural Language Understanding (NLU) converts raw text into structured data.\r\n+ Knowledge/Skill/Action - Knowledge base and plugins (Alexa Skill, Google Action) to provide an answer.\r\n+ Text To Speech\r\n\r\n------------------\r\n\r\n\r\n### KWS + STT + NLU + Skill + TTS\r\n\r\n#### Active open source projects\r\n\r\n+ [Snips :star:](https://snips.ai) - the first 100% on-device and private-by-design open-source Voice AI platform\r\n+ [Mycroft :star:](https://github.com/MycroftAI/mycroft-core) - a hackable open source voice assistant\r\n+ [SEPIA :robot:](https://sepia-framework.github.io/) - Highly customizable, open-source, cross-platform voice assistant and VUI framework (HTML + Java + x)\r\n+ [Kalliope](https://github.com/kalliope-project/kalliope) - a framework that will help you to create your own personal assistant, kind of similar with Mycroft (Both written by Python)\r\n+ [dingdang robot](https://github.com/dingdang-robot/dingdang-robot) - a :cn: voice interaction robot based on [Jasper](https://github.com/jasperproject/jasper-client) and built with raspberry pi\r\n\r\n\r\n#### SDK\r\n+ Amazon Alexa Voice Service - is the most widely used voice assistant\r\n  + [C++ SDK](https://github.com/alexa/avs-device-sdk)\r\n  + [Java Client](https://github.com/alexa/alexa-avs-sample-app)\r\n  + [Python Client](https://github.com/respeaker/avs)\r\n\r\n+ [Google Assistant SDK](https://github.com/googlesamples/assistant-sdk-python)\r\n\r\n  It has the smartest brain, its extension called Google Action can be created on a few steps with digitalflow.ai and its Device Action is very suit for home smart devices.\r\n\r\n+ [Baidu DuerOS](https://github.com/dueros)\r\n\r\n+ [Snips](https://snips.ai)\r\n  + [Install Snips](https://snips.gitbook.io/documentation/installing-snips) on Raspberry Pi 3, Linux, osX, iOS and Android\r\n\r\n+ [SEPIA Installation](https://medium.com/sepia-framework/hosting-your-own-private-virtual-assistant-533b86553d63), [SEPIA with Porcupine + ReSpeaker](https://github.com/SEPIA-Framework/sepia-wakeword-tools/tree/master/Porcupine)\r\n\r\n\r\n### KWS\r\n+ [Mycroft Precise](https://github.com/MycroftAI/mycroft-precise) - A lightweight, simple-to-use, RNN wake word listener\r\n+ [Snowboy](https://github.com/Kitt-AI/snowboy) - DNN based hotword and wake word detection toolkit\r\n+ [Honk](https://github.com/castorini/honk) - PyTorch reimplementation of Google's TensorFlow CNNs for keyword spotting\r\n+ [ML-KWS-For-MCU](https://github.com/ARM-software/ML-KWS-for-MCU) - Maybe the most promise for resource constrained devices such as ARM Cortex M7 microcontroller\r\n+ [Porcupine](https://picovoice.ai/products/#wake-word) - Lightweight, cross-platform engine to build custom wake words in seconds\r\n\r\n### STT\r\n+ [Mozilla DeepSpeech](https://github.com/mozilla/DeepSpeech) - A TensorFlow implementation of Baidu's DeepSpeech architecture\r\n+ [Kaldi](https://github.com/kaldi-asr/kaldi)\r\n+ [wav2letter++](https://github.com/facebookresearch/wav2letter) -  a fast, open source speech processing toolkit from the Speech team at Facebook AI Research built to facilitate research in end-to-end models for speech recognition. \r\n+ [Zamia Speech](https://github.com/gooofy/zamia-speech) - Open tools, data, models (kaldi models and wav2letter++ models) for cloudless automatic speech recognition. It can be run on Raspberry Pi\r\n+ [PocketSphinx](https://github.com/cmusphinx/pocketsphinx) - a lightweight speech recognition engine using HMM + GMM\r\n\r\n\r\n### NLU\r\n+ [Rasa NLU](https://github.com/RasaHQ/rasa_nlu)\r\n\r\n  + [Rasa NLU for Chinese](https://github.com/crownpku/Rasa_NLU_Chi)\r\n  \r\n+ [Snips NLU](https://github.com/snipsco/snips-nlu) - a Python library that allows to parse sentences written in natural language and extracts structured information.\r\n\r\n### TTS\r\n+ [Mozilla TTS](https://github.com/mozilla/TTS) - Deep learning for Text to Speech\r\n+ [Mimic](https://github.com/MycroftAI/mimic) - Mycroft's TTS engine, based on CMU's Flite (Festival Lite)\r\n+ [manytts](https://github.com/marytts/marytts) - an open-source, multilingual text-to-speech synthesis system written in pure java\r\n+ [espeak-ng](https://github.com/espeak-ng/espeak-ng) - an open source speech synthesizer that supports 99 languages and accents.\r\n+ [ekho](https://github.com/hgneng/ekho) - Chinese text-to-speech engine\r\n+ WaveNet, Tacotron 2\r\n\r\n\r\n### Audio Processing\r\n+ Acoustic Echo Cancellation\r\n\r\n  + [SpeexDSP](https://github.com/xiph/speexdsp), its python binding [speexdsp-python](github.com/xiongyihui/speexdsp-python)\r\n  + [EC](https://github.com/voice-engine/ec) - Echo Cancelation Daemon based on SpeexDSP AEC for Raspberry Pi or other devices running Linux.\r\n\r\n+ Direction Of Arrival (DOA) - Most used DOA algorithms is GCC-PHAT\r\n\r\n  + [tdoa](https://github.com/xiongyihui/tdoa)\r\n  + [odas](https://github.com/introlab/odas) - ODAS stands for Open embeddeD Audition System. This is a library dedicated to perform sound source localization, tracking, separation and post-filtering. ODAS is coded entirely in C, for more portability, and is optimized to run easily on low-cost embedded hardware. ODAS is free and open source.\r\n\r\n+ [Beamforming](https://github.com/search?utf8=%E2%9C%93\u0026q=beamforming\u0026type=)\r\n\r\n  + [BeamformIt](https://github.com/xanguera/BeamformIt) - filter\u0026sum beamforming\r\n  + CGMM Beamforming - [a reference implementation](https://github.com/funcwj/CGMM-MVDR)\r\n  + MVDR Beamforming\r\n  + GSC Beamforming\r\n\r\n+ Voice Activity Detection\r\n\r\n  + WebRTC VAD, [py-webrtcvad](https://github.com/wiseman/py-webrtcvad)\r\n  + DNN VAD\r\n\r\n+ Noise Suppresion\r\n\r\n  + NS of WebRTC audio processing, [python-webrtc-audio-processing](https://github.com/xiongyihui/python-webrtc-audio-processing)\r\n\r\n\r\n\r\n### Audio I/O\r\n+ PortAudio, pyaudio\r\n+ [libsoundio](https://github.com/andrewrk/libsoundio)\r\n+ ALSA\r\n+ PulseAudio\r\n+ [Pipewire](https://github.com/PipeWire/pipewire)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoice-engine%2Fmake-a-smart-speaker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvoice-engine%2Fmake-a-smart-speaker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoice-engine%2Fmake-a-smart-speaker/lists"}