{"id":13579588,"url":"https://github.com/AlexxIT/StreamAssist","last_synced_at":"2025-04-05T23:31:50.878Z","repository":{"id":165095064,"uuid":"640482053","full_name":"AlexxIT/StreamAssist","owner":"AlexxIT","description":"Home Assistant custom component that allows you to turn almost any camera and almost any speaker into a local voice assistant","archived":false,"fork":false,"pushed_at":"2024-05-23T07:32:47.000Z","size":33,"stargazers_count":143,"open_issues_count":13,"forks_count":10,"subscribers_count":8,"default_branch":"main","last_synced_at":"2024-05-23T07:38:45.961Z","etag":null,"topics":["hacs","home-assistant","voice-assistant","voice-control","voice-recognition"],"latest_commit_sha":null,"homepage":"","language":"Python","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/AlexxIT.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":"2023-05-14T08:32:39.000Z","updated_at":"2024-06-12T14:19:57.539Z","dependencies_parsed_at":null,"dependency_job_id":"45afbccd-b573-4a8a-acc8-9ff9e19f85e6","html_url":"https://github.com/AlexxIT/StreamAssist","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexxIT%2FStreamAssist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexxIT%2FStreamAssist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexxIT%2FStreamAssist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexxIT%2FStreamAssist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlexxIT","download_url":"https://codeload.github.com/AlexxIT/StreamAssist/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247415783,"owners_count":20935383,"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":["hacs","home-assistant","voice-assistant","voice-control","voice-recognition"],"created_at":"2024-08-01T15:01:40.834Z","updated_at":"2025-04-05T23:31:45.857Z","avatar_url":"https://github.com/AlexxIT.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Stream Assist\n\n[Home Assistant](https://www.home-assistant.io/) custom component that allows you to turn almost [any camera](https://www.home-assistant.io/integrations/#camera) and almost [any speaker](https://www.home-assistant.io/integrations/#media-player) into a local [voice assistant](https://www.home-assistant.io/integrations/#voice).\n\nComponent will use:\n\n- [Stream](https://www.home-assistant.io/integrations/stream/) integration for receiving audio from camera (RTSP/HTTP/RTMP) and automatic transcoding of audio codec into a format suitable for Speech-to-Text (STT)\n- [Assist pipeline](https://www.home-assistant.io/integrations/assist_pipeline/) integration for run: Speech-to-Text (STT) =\u003e Natural Language Processing (NLP) =\u003e Text-to-Speech (TTS)\n- Almost any [Media player](https://www.home-assistant.io/integrations/#media-player) for play audio respose from Text-to-Speech (TTS)\n\nAssist pipeline can use:\n\n- [openWakeWord](https://github.com/home-assistant/addons) core Add-on for wake word detection\n- [Whisper](https://github.com/home-assistant/addons) core Add-on for local STT\n- [Piper](https://github.com/home-assistant/addons) core Add-on for local TTS\n- [Faster Whisper](https://github.com/AlexxIT/FasterWhisper) custom integration for local STT\n- [Google Translate](https://www.home-assistant.io/integrations/google_translate/) core integration for cloud TTS\n\n**Video instruction from fixtSE**\n\n[![Local Voice Assistant: Using your Cameras \u0026 Speakers in HA](https://img.youtube.com/vi/fP_BNFWLYnk/mqdefault.jpg)](https://www.youtube.com/watch?v=fP_BNFWLYnk)\n\n## Installation\n\n[HACS](https://hacs.xyz/) \u003e Integrations \u003e 3 dots (upper top corner) \u003e Custom repositories \u003e URL: `AlexxIT/StreamAssist`, Category: Integration \u003e Add \u003e wait \u003e Stream Assist \u003e Install\n\nOr manually copy `stream_assist` folder from [latest release](https://github.com/AlexxIT/StreamAssist/releases/latest) to `/config/custom_components` folder.\n\n## Configuration\n\n### Config wake word detection (WAKE)\n\n1. Add wake word detection Add-on\n   Settings \u003e Add-ons \u003e Add-on Store \u003e openWakeWord \u003e Install\n2. Config WAKE Add-on:  \n   openWakeWord \u003e Configuration\n3. Add WAKE Integration:  \n   Settings \u003e Integrations \u003e openWakeWord \u003e Configure\n\n### Config local Speech-to-Text (STT)\n\n1. Add local Speech-to-Text Add-on  \n   Settings \u003e Add-ons \u003e Add-on Store \u003e Whisper \u003e Install\n2. Config STT Add-on:  \n   Whisper \u003e Configuration\n3. Add STT Integration:  \n   Settings \u003e Integrations \u003e Whisper \u003e Configure\n\n### Config local Text-to-Speech (TTS)\n \n1. Add local Text-to-Speech Add-on  \n   Settings \u003e Add-ons \u003e Add-on Store \u003e Piper \u003e Install\n2. Config TTS Integration:  \n   Piper \u003e Configuration\n3. Add TTS Integration:  \n   Settings \u003e Integrations \u003e Piper \u003e Configure\n\n### Config local Voice assistant (INTENT)\n\n1. Config Voice assistant:  \n   Settings \u003e Voice assistants \u003e Home Assistant \u003e Select: STT, TTS and WAKE\n\n### Config Stream Assist\n\n1. Add **Stream Assist** Integration  \n   Settings \u003e Integrations \u003e Add Integration \u003e Stream Assist\n2. Config **Stream Assist** Integration  \n   Settings \u003e Integrations \u003e Stream Assist \u003e Configure\n\nYou can select or camera entity_id as audio (MIC) source or stream URL.\n\nYou can select Voice Assistant Pipeline for recognition process: **WAKE =\u003e STT =\u003e NLP =\u003e TTS**. By default componen will use default pipeline. You can create several **Pipelines** with different settings. And several **Stream Assist** components with different settings.\n\nYou can select one or multiple Media players (SND) to output audio response. If your camera support two way audio you can use [WebRTC Camera](https://github.com/AlexxIT/WebRTC#stream-to-camera) custom integration to add it as Media player.\n\nYou can set STT start media for play \"beep\" after WAKE detection (ex: `media-source://media_source/local/beep.mp3`).\n\n## Using\n\nComponent has MIC switch and multiple sensors - WAKE, STT, INTENT, TTS. There may be fewer sensors, depending on the Pipeline settings.\n\nThe sensor attributes contain a lot of useful information about the results of each step of the assistant.\n\nYou can also view the pipelines running history in the Home Assistant interface:\n\n- Settings \u003e Voice assistants \u003e Pipeline \u003e 3 dots \u003e Debug\n\n## Service\n\nYou can run pipeline as a service. Almost all settings optional. But allow you to achieve customisations that are not possible in Hass by default.\n\n```yaml\nservice: stream_assist.run\ndata:\n  stream_source: rtsp://...\n  camera_entity_id: camera.xxx\n  player_entity_id: media_player.xxx\n  stt_start_media: media-source://media_source/local/beep.mp3\n  pipeline_id: abcdefg...\n  assist:\n    start_stage: wake_word  # wake_word, stt, intent, tts\n    end_stage: tts\n    pipeline:\n      conversation_language: en\n      conversation_engine: homeassistant\n      language: en\n      name: Home Assistant\n      stt_engine: stt.faster_whisper\n      stt_language: en\n      tts_engine: tts.google_en_com\n      tts_language: en\n      tts_voice: None\n      wake_word_entity: wake_word.openwakeword\n      wake_word_id: None\n    wake_word_settings: { timeout: 5 }\n    audio_settings:\n      noise_suppression_level: None\n      auto_gain_dbfs: None\n      volume_multiplier: None\n    conversation_id: None\n    device_id: None\n    intent_input: None\n    tts_audio_output: None  # None, wav, mp3\n    tts_input: None\n  stream:\n    file: ...\n    options: {}\n```\n\n## Tips\n\n1. Recommended settings for Whisper:\n   - Model: `small-int8` or `medium-int8`\n   - Beam size: `5`\n\n2. You can add remote Whisper/Piper installation from another server:\n   - First server: Settings \u003e Add-ons \u003e Whisper/Piper \u003e Configuration \u003e Network \u003e Select port\n   - Second server: Settings \u003e Integrations \u003e Add integration \u003e Wyoming Protocol \u003e Select: first server IP, add-on port\n\n3. You can use Google Translate integration instead of Piper, which support many languages for TTS.\n\n4. If your environment does not allow you to install add-ons, you can install [Faster Whisper](https://github.com/AlexxIT/FasterWhisper) custom integration for local STT.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAlexxIT%2FStreamAssist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAlexxIT%2FStreamAssist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAlexxIT%2FStreamAssist/lists"}