{"id":13537605,"url":"https://github.com/evancohen/sonus","last_synced_at":"2025-05-16T02:08:22.772Z","repository":{"id":57366147,"uuid":"66981433","full_name":"evancohen/sonus","owner":"evancohen","description":":speech_balloon: /so.nus/ STT (speech to text) for Node with offline hotword detection","archived":false,"fork":false,"pushed_at":"2024-07-02T19:09:52.000Z","size":1409,"stargazers_count":636,"open_issues_count":36,"forks_count":79,"subscribers_count":30,"default_branch":"master","last_synced_at":"2025-05-10T02:44:39.153Z","etag":null,"topics":["alexa","hotword-detection","keyword-spotting","node","speech","speech-recognition","speech-to-text","stt","voice-control","voice-recognition"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/evancohen.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":"2016-08-30T22:10:06.000Z","updated_at":"2025-03-24T00:07:02.000Z","dependencies_parsed_at":"2024-06-18T18:27:29.008Z","dependency_job_id":"a683464c-8020-4f51-b362-864c3946869b","html_url":"https://github.com/evancohen/sonus","commit_stats":{"total_commits":92,"total_committers":13,"mean_commits":7.076923076923077,"dds":0.1630434782608695,"last_synced_commit":"efb3cfbc449fba8c22ae4f67592723f6c41c9bf7"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evancohen%2Fsonus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evancohen%2Fsonus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evancohen%2Fsonus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evancohen%2Fsonus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/evancohen","download_url":"https://codeload.github.com/evancohen/sonus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254453655,"owners_count":22073617,"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","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":["alexa","hotword-detection","keyword-spotting","node","speech","speech-recognition","speech-to-text","stt","voice-control","voice-recognition"],"created_at":"2024-08-01T09:01:01.010Z","updated_at":"2025-05-16T02:08:22.755Z","avatar_url":"https://github.com/evancohen.png","language":"JavaScript","readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"./sonus.png\" alt=\"sonus\" /\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://travis-ci.org/evancohen/sonus\"\u003e\u003cimg src=\"https://api.travis-ci.org/evancohen/sonus.svg?branch=master\" alt=\"Build Status\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://codeclimate.com/github/evancohen/sonus\"\u003e\u003cimg src=\"https://codeclimate.com/github/evancohen/sonus/badges/gpa.svg\" /\u003e\u003c/a\u003e\n\u003ca href='https://dependencyci.com/github/evancohen/sonus'\u003e\u003cimg src='https://dependencyci.com/github/evancohen/sonus/badge' alt='Dependency Status'/\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n\u003cstrong\u003eA dead simple STT library in Node\u003c/strong\u003e\n\u003c/p\u003e\n\nSonus lets you quickly and easily add a VUI (Voice User Interface) to any hardware or software project. Just like Alexa, Google Assistant, and Siri, Sonus is always listening offline for a *customizable* hotword. Once that hotword is detected your speech is streamed to the cloud recognition service of your choice - then you get the results in realtime.\n\n### Platform Support\n- [X] Linux - most major distros (Including Raspbian)\n- [X] macOS\n- [ ] Windows\n\n### Streaming Recognition Services\n\n- [X] Google Cloud Speech\n- [ ] Alexa Voice Services\n- [ ] Wit.ai\n- [ ] Microsoft Cognitive Services\n- [ ] Houndify\n\n## Installation\n\n```\nnpm install --save sonus\n```\n\n## Dependencies\n\nGenerally, running `npm install` should suffice. This module however, requires you to install [SoX](http://sox.sourceforge.net).\n\n### For most linux disto's\nRecommended: use `arecord`, which comes with most linux distros.\nAlternatively:\n```\nsudo apt-get install sox libsox-fmt-all\n```\n\n### For macOS\n```\nbrew install sox\n```\n\n## Usage\n\nConfigure out cloud speech recognition system of choice, like [Google Cloud\nSpeech API](https://cloud.google.com/speech/docs/getting-started).\n\n__Note:__ You need to use the `GOOGLE_APPLICATION_CREDENTIALS` environment variable for your JSON keyfile, or check the examples to see how you can pass in the keyflie path. \n\nAdd sonus and said recognizer:\n``` javascript\nconst Sonus = require('sonus')\nconst speech = require('@google-cloud/speech')\nconst client = new speech.SpeechClient()\n```\n\nAdd your keyword and initialize Sonus with a [Snowboy](https://snowboy.kitt.ai)\nhotword:\n``` javascript\nconst hotwords = [{ file: 'resources/snowboy.umdl', hotword: 'snowboy' }]\nconst sonus = Sonus.init({ hotwords }, client)\n```\n\nCreate your own Alexa in less than a tweet:\n``` javascript\nSonus.start(sonus)\nsonus.on('hotword', (index, keyword) =\u003e console.log(\"!\"))\nsonus.on('final-result', console.log)\n```\n\n### [Full API Documentation](docs/API.md)\n\n## Versioning\n\nThis project uses semantic versioning as of `v0.1.0`\n\n## How do I set up Google Cloud Speech API?\n\nFollow [these instructions](https://cloud.google.com/speech/docs/getting-started).\n\n## How do I make my own hotword?\n\nSonus uses [Snowboy](https://snowboy.kitt.ai) for offline hotword recognition.\nYou can use [their website](https://snowboy.kitt.ai) or\n[API](http://docs.kitt.ai/snowboy/#restful-api) to train a model for a new\nhotword. Hotword training must occur online through their web service.\n\n\n## Built [#withsonus](https://twitter.com/hashtag/withsonus?src=github)\n- [L.I.S.A. - Home automation project](https://github.com/mylisabox/lisa-box)\n- [ioBroker - Home automation project](https://github.com/ioBroker/ioBroker.sonus)\n\n*If you've build a project with Sonus [send a PR](https://github.com/evancohen/sonus/edit/master/README.md) and include it here!*\n\n## Authors\nEvan Cohen: [@_evnc](https://twitter.com/_evnc)  \nAshish Chandwani: [@ashishschandwa1](https://twitter.com/ashishschandwa1)\n\n## License\nLicensed under [MIT](https://github.com/evancohen/sonus/blob/master/LICENSE).\n","funding_links":[],"categories":["目录","Software","JavaScript","Projects"],"sub_categories":["Others"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevancohen%2Fsonus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevancohen%2Fsonus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevancohen%2Fsonus/lists"}