Commit graph

53 commits

Author SHA1 Message Date
Michael Hansen
257686fcfe
Dynamic wake word loading for Wyoming ()
* Change supported_wake_words property to async method

* Add test

* Add timeout + test

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2023-10-11 10:21:32 -07:00
Michael Hansen
244f6d8002
Add wake word cooldown to avoid duplicate wake-ups () 2023-10-06 09:18:35 +02:00
Michael Hansen
e6504218bc
Pipeline runs are only equal with same id ()
* Pipeline runs are only equal with same id

* Use dict instead of list in PipelineRuns

* Let it blow up

* Test

* Test rest of __eq__
2023-10-03 16:52:31 -05:00
Michael Hansen
cc7e35e299
Increase pipeline timeout to 5 minutes () 2023-10-03 19:41:00 +02:00
Erik Montnemery
a9bcfe5700
Abort wake word detection when assist pipeline is modified () 2023-09-26 20:24:55 +02:00
Erik Montnemery
734c4e8e32
Rename WakeWord.ww_id to WakeWord.id ()
* Rename WakeWord.ww_id to WakeWord.wake_word_id

* Revert unrelated changes

* Rename to id

* Correct rebase
2023-09-26 19:12:16 +02:00
Erik Montnemery
1e76d37cee
Rename PipelineData.pipeline_runs to pipeline_debug () 2023-09-26 11:35:51 +02:00
Michael Hansen
785618909a
Use webrtc-noise-gain for audio enhancement in Assist pipelines ()
* Use webrtc-noise-gain instead of webrtcvad package

* Switching to ProcessedAudioChunk

* Refactor VAD and fix tests

* Add vad no chunking test

* Add test that runs audio enhancements
2023-09-25 20:03:50 -04:00
Erik Montnemery
803d24ad1a
Rename wake_word.async_default_engine to wake_word.async_default_entity ()
* Rename wake_word.async_default_engine to wake_word.async_default_entity

* tweak

* Some more rename

* Update tests
2023-09-25 17:08:37 +02:00
Erik Montnemery
5a3efb9149
Store wakeword settings in assist pipelines ()
* Store wakeword settings in assist pipelines

* wakeword -> wake_word

* Remove unneeded variable
2023-09-25 16:07:26 +02:00
Paulus Schoutsen
23b239ba77
Allow passing a wake word ID to detect wake word ()
* Allow passing a wake word ID to detect wake word

* Do not inject default wake words in wake_word integration
2023-09-25 15:33:54 +02:00
Michael Hansen
e69c88a0d2
Use aliases when listing pipeline languages () 2023-09-08 08:22:08 -04:00
Michael Hansen
054a63c3a2
Add option to save Assist pipeline audio ()
* Add pipeline option to save wake/stt audio to media

* Add debug_recording_dir to assist_pipeline YAML config

* Clean up and additional tests

* Remove I/O in event loop

* Organize saved audio by pipeline name and device id

* Record wake/stt debug audio in separate thread

* Fix after rebase

* Use timestamp instead of pipeline id for directory name

* Add WAV write error test

* Join thread in executor
2023-08-29 23:07:27 -04:00
Michael Hansen
8768c39021
Wake word cleanup ()
* Make arguments for async_pipeline_from_audio_stream keyword-only after hass

* Use a bytearray ring buffer

* Move generator outside

* Move stt stream generator outside

* Clean up execute

* Refactor VAD to use bytearray

* More tests

* Refactor chunk_samples to be more correct and robust

* Change AudioBuffer to use append instead of setitem

* Cleanup

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2023-08-25 13:28:48 -04:00
Ville Skyttä
3b4774d9ed
Remove unnnecessary pylint configs from components/[a-d]* () 2023-08-24 00:54:02 +02:00
Michael Hansen
49d2c60992
Add pipeline VAD events ()
* Add stt-vad-start and stt-vad-end pipeline events

* Update tests
2023-08-17 19:58:58 -04:00
Erik Montnemery
1869177f08
Rename some incorrectly named assist_pipeline tests () 2023-08-14 15:47:55 +02:00
Erik Montnemery
045c327928
Move DeviceInfo from entity to device registry ()
* Move DeviceInfo from entity to device registry

* Update integrations
2023-08-10 22:04:26 -04:00
Michael Hansen
7ea2998b55
Add wake word integration ()
* Add wake component

* Add wake support to Wyoming

* Add helper function to assist_pipeline (not complete)

* Rename wake to wake_word

* Fix platform

* Use send_event and clean up

* Merge wake word into pipeline

* Add wake option to async_pipeline_from_audio_stream

* Add start/end stages to async_pipeline_from_audio_stream

* Add wake timeout

* Remove layer in wake_output

* Use VAD for wake word timeout

* Include audio metadata in wake-start

* Remove unnecessary websocket command

* wake -> wake_word

* Incorporate feedback

* Clean up wake_word tests

* Add wyoming wake word tests

* Add pipeline wake word test

* Add last processed state

* Fix tests

* Add tests for wake word

* More tests for the codebot
2023-08-07 22:22:16 -04:00
Erik Montnemery
7539cf25be
Don't require passing identifiers to DeviceRegistry.async_get_device ()
* Require keyword arguments to DeviceRegistry.async_get_device

* Update tests

* Update tests

* Don't enforce keyword arguments
2023-07-13 13:39:25 -04:00
Michael Hansen
65454c945d
Add VAD sensitivity option to VoIP devices ()
* Add VAD sensitivity option to VoIP devices

* Use select entitiy for VAD sensitivity

* Add sensitivity to tests

* Add to assist pipeline tests

* Update homeassistant/components/assist_pipeline/select.py

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>

* Update tests/components/voip/test_voip.py

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2023-06-23 23:28:13 -04:00
Paulus Schoutsen
c42d0feec1
Allow passing in device_id to pipeline run WS API () 2023-06-23 21:29:56 -05:00
Paulus Schoutsen
65b62d877d
Keep track what devices support Assist features () 2023-06-03 08:26:28 -05:00
c0ffeeca7
c3a3ddcfa4
Standardize spelling of TTS and STT ()
* Standardize spelling of TTS and STT

* Apply suggestions from code review

* Update homeassistant/components/tts/media_source.py

---------

Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2023-05-31 11:00:19 -04:00
Erik Montnemery
30d9d7d905
Minor adjustment of tts typing () 2023-05-24 21:02:55 +02:00
Erik Montnemery
68379dd55a
Improve TTS cache dir mocking () 2023-05-24 21:00:35 +02:00
Erik Montnemery
887e656570
Small improvement of assist_pipeline test coverage () 2023-05-04 19:01:41 +02:00
Erik Montnemery
f8f7de5d5a
Remove homeassistant from conversation dependencies ()
* Remove homeassistant from conversation dependencies

* Fix tests
2023-04-28 18:17:48 +02:00
Paulus Schoutsen
7c696754ed
Use pipeline ID in event ()
* Use pipeline ID in event

* Fix tests
2023-04-26 22:40:17 -04:00
Erik Montnemery
57a59d808b
Automaticially create an assist pipeline using cloud stt + tts ()
* Automaticially create an assist pipeline using cloud stt + tts

* Return the id of the cloud enabled pipeline

* Wait for platforms to load

* Fix typing

* Fix startup race

* Update tests

* Create a cloud pipeline only when logging in

* Fix tests

* Tweak _async_resolve_default_pipeline_settings

* Improve assist_pipeline test coverage

* Improve cloud test coverage
2023-04-25 20:40:01 -05:00
Erik Montnemery
792ea92e55
Remove fuzzy language matching from stt and tts ()
* Remove fuzzy language matching from stt and tts

* Update tests
2023-04-25 17:54:42 +02:00
Erik Montnemery
b601fb17d3
Create a default assist pipeline on start ()
* Create a default assist pipeline on start

* Minor adjustments

* Address review comments

* Remove tts.async_get_agent

* Fix bugs, improve test coverage
2023-04-24 14:00:52 -04:00
Erik Montnemery
1c3e1d2e13
Don't resolve default tts engine in assist pipelines ()
* Don't resolve default tts engine in assist pipelines

* Set tts engine when creating default pipeline

* Update tests
2023-04-24 14:40:11 +02:00
Erik Montnemery
c5d0c392a9
Don't resolve default stt engine in assist pipelines ()
* Don't resolve default stt engine in assist pipelines

* Apply suggestion from code review

* Add tests

* Tweak

* Add test

* Improve test coverage
2023-04-24 13:37:13 +02:00
Paulus Schoutsen
a203149133
Allow entity names for STT entities ()
* Allow entity names for STT entities

* Fix tests
2023-04-23 23:06:34 -04:00
Paulus Schoutsen
f4df0ca50a
Assist pipeline to use configured values ()
* Assist pipeline to use configured values

* Include voice in TTS-START event

* Use correct tts language var

* More vars

* Apply suggestions from code review

* Update

---------

Co-authored-by: Bram Kragten <mail@bramkragten.nl>
2023-04-23 12:48:11 -04:00
Paulus Schoutsen
1eef4af493
Use configured voice in TTS output for assist pipeline () 2023-04-22 22:01:32 -04:00
Martin Hjelmare
1a18dc7425
Add tts entity ()
* Add tts entity

* Allow passing engine id to url view

* Update async_resolve_engine

* Add and update more tests

* Fix assist pipeline tests temporarily

* Move fixtures

* Update notify platform

* Complete legacy tests

* Update media source tests

* Update async_get_text_to_speech_languages

* Address comment

---------

Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2023-04-20 22:55:46 -04:00
Erik Montnemery
b3d50e67cd
Fix assist_pipeline tests () 2023-04-20 12:19:31 -04:00
Erik Montnemery
0525ce59d7
Add additional parameters to assist pipelines ()
* Add additional parameters to assist pipelines

* Improve WS schema validation

* Tweak

* Add test

* Address review comments
2023-04-20 11:02:55 -04:00
Erik Montnemery
af193094b5
Add WS command for getting an assist pipeline ()
* Add WS command for getting an assist pipeline

* Return preferred pipeline if none is specified
2023-04-20 09:15:19 -04:00
Erik Montnemery
a98be9dc84
Test specifying pipeline in calls to async_pipeline_from_audio_stream () 2023-04-20 09:01:31 -04:00
Erik Montnemery
6d619579b4
Add WS API for listing languages supported by a full assist pipeline ()
* Add WS API for listing languages supported by a full assist pipeline

* Address review comments, change logic
2023-04-20 08:55:17 -04:00
Erik Montnemery
090f59aaa2
Make context a mandatory parameter for async_pipeline_from_audio_stream () 2023-04-19 09:30:29 -04:00
Erik Montnemery
bdffb1f298
Drop language parameter from async_get_pipeline () 2023-04-18 18:07:20 +02:00
Erik Montnemery
10606c4d1e
Use the preferred assist pipeline if none was specified ()
* Use the preferred assist pipeline if none was specified

* Add test
2023-04-18 17:35:33 +02:00
Erik Montnemery
016e051db6
Add timestamp to pipeline runs ()
* Add timestamp to pipeline runs

* Include the timestamp in the list
2023-04-18 10:43:46 -04:00
Bram Kragten
e3ff7d048a
Make tts/stt/conversation optional on pipeline () 2023-04-17 20:54:04 +02:00
Paulus Schoutsen
bd22e0bd43
Allow picking a pipeline for voip devices ()
* Allow picking a pipeline for voip device

* Add tests

* Fix test

* Adjust on new pipeline data
2023-04-17 12:09:11 -05:00
Erik Montnemery
0ecd23baee
Add WS API for debugging previous assist_pipeline runs ()
* Add WS API for debugging previous assist_pipeline runs

* Improve typing
2023-04-17 11:48:02 -04:00