Commit Graph

4152 Commits

Author SHA1 Message Date
Fabio Manganiello 317241eb36
[assistant.picovoice] Various improvements.
- Added `intent_model_path` parameter.

- Always apply `expanduser` to configuration paths.

- Better logic to infer the fallback model path.

- The Picovoice Leonardo object should always be removed after
  `assistant.picovoice.transcribe` is called.
2024-04-14 21:24:06 +02:00
Fabio Manganiello 6305934f97
Added `assistant.picovoice.transcribe` and `assistant.picovoice.say`.
continuous-integration/drone/push Build is passing Details
2024-04-14 01:07:17 +02:00
Fabio Manganiello 1044f82a6a
[tts.picovoice] Better text pre-processing logic. 2024-04-14 00:43:28 +02:00
Fabio Manganiello ea1fa39cb7
[assistant.picovoice] Implemented `assistant.picovoice.send_text_query`.
continuous-integration/drone/push Build is passing Details
2024-04-14 00:09:25 +02:00
Fabio Manganiello 7e9b19d328
[tts.picovoice] Added text pre-processing workaround.
continuous-integration/drone/push Build is passing Details
This workaround is required until
https://github.com/Picovoice/orca/issues/10 is fixed.
2024-04-13 21:40:05 +02:00
Fabio Manganiello c86e3be0d1
[assistant.picovoice] Leverage upstream `_on_mute_changed`.
The plugin should leverage `AssistantPlugin._on_mute_changed` to handle
the boilerplate state managent on mute/unmute actions instead of
re-implementing the same logic.
2024-04-13 21:00:30 +02:00
Fabio Manganiello 8082123c58
[assistant.picovoice] Implemented mic mute/unmute handling.
continuous-integration/drone/push Build is passing Details
2024-04-13 20:51:34 +02:00
Fabio Manganiello 19a90ee045 Merge branch 'master' into 304-new-picovoice-integration
continuous-integration/drone/push Build is passing Details
2024-04-13 20:04:32 +02:00
Fabio Manganiello fa49db4107
[assistant.picovoice] Conversation flow improvements.
continuous-integration/drone/push Build is passing Details
- The `Responding` state should be modelled as an extra event/binary
  flag, not as an assistant state. The assistant may be listening for
  hotwords even while the `tts` plugin is responding, and we don't want
  the two states to interfere with each either - neither to build a more
  complex state machine that also needs to take concurrent states into
  account.

- Stop any responses being rendered upon the `tts` plugin when a new
  hotword audio is detected. If e.g. I say "Ok Google", I should always
  be able to trigger the assistant and stop any concurrent audio
  process.

- `SpeechRecognizedEvent` should be emitted even if `cheetah`'s latest
  audio frame results weren't marked as final, and the speech detection
  window timed out. Cheetah's `is_final` detection seems to be quite
  buggy sometimes, and it may not properly detect the end of utterances,
  especially with non-native accents. The workaround is to flush out
  whatever text is available (if at least some speech was detected) into
  a `SpeechRecognizedEvent` upon timeout.
2024-04-13 20:03:35 +02:00
Fabio Manganiello 24e93ad160
Added more default imports under the `platypush` module root.
These objects can now also be imported in scripts through
`from platypush import <name>`:

- `Variable`
- `cron`
- `hook`
- `procedure`
2024-04-10 23:33:48 +02:00
Fabio Manganiello 3b73b22db9
[assistant.picovoice] More features.
- Added wiring between `assistant.picovoice` and `tts.picovoice`.

- Added `RESPONDING` status to the assistant.

- Added ability to override the default speech model upon
  `start_conversation`.

- Better handling of conversation timeouts.

- Cache Cheetah objects in a `model -> object` map - at least the
  default model should be pre-loaded, since model loading at runtime
  seems to take a while, and that could impact the ability to detect the
  speech in the first seconds after a hotword is detected.
2024-04-10 22:26:45 +02:00
Fabio Manganiello 9761cc2eef
Added `tts.picovoice` plugin. 2024-04-10 20:32:32 +02:00
Fabio Manganiello 6bd20bfcf6
Added ffmpeg requirement for `assistant.picovoice`. 2024-04-10 20:31:38 +02:00
Fabio Manganiello 8702eaa25b
s/partial_transcript/transcript/g 2024-04-09 00:19:51 +02:00
Fabio Manganiello 6feb824c04
Refactored `AssistantEvent`.
`AssistantEvent.assistant` is now modelled as an opaque object that
behaves the following way:

- The underlying plugin name is saved under `event.args['_assistant']`.

- `event.assistant` is a property that returns the assistant instance
  via `get_plugin`.

- `event.assistant` is reported as a string (plugin qualified name) upon
  event dump.

This allows event hooks to easily use `event.assistant` to interact with
the underlying assistant and easily modify the conversation flow, while
event hook conditions can still be easily modelled as equality
operations between strings.
2024-04-09 00:15:51 +02:00
Fabio Manganiello 027bcea612
[Automatic] Updated components cache
continuous-integration/drone/push Build is passing Details
2024-04-08 21:05:46 +00:00
Fabio Manganiello b4d0716bc5
Added layer of compatibility with both paho.mqtt >= 2.0.0 and < 2.0.0.
See 28aa2e6b26/ChangeLog.txt (L6)
2024-04-08 23:01:54 +02:00
revil-O 584f226b62 mqtt CallbackAPIVersion fix for paho.mqtt >= 2.0.0
fix to work with paho.mqtt >= 2.0.0
2024-04-08 16:05:27 +02:00
Fabio Manganiello fa70c91a67
[assistant.picovoice] Better partial transcript + flush handling logic.
continuous-integration/drone/push Build is passing Details
2024-04-08 13:33:07 +02:00
Fabio Manganiello c7094c7886
`picovoice` -> `assistant.picovoice` 2024-04-08 13:26:44 +02:00
Fabio Manganiello 0b8e1bb81b
Better integration with the native base API of the assistant plugin.
continuous-integration/drone/push Build is passing Details
2024-04-08 03:02:03 +02:00
Fabio Manganiello f021b471aa
[WIP] Added speech detection logic over Cheetah.
continuous-integration/drone/push Build is passing Details
2024-04-08 01:54:26 +02:00
Fabio Manganiello 01dec0b7a4
[WIP] Added initial hotword integration.
continuous-integration/drone/push Build is passing Details
2024-04-07 22:42:01 +02:00
Fabio Manganiello f0382c73ab
[#304] Removed old Picovoice integrations
continuous-integration/drone/push Build is passing Details
2024-04-06 00:11:46 +02:00
Fabio Manganiello dba0acb82e
[Automatic] Updated components cache
continuous-integration/drone/push Build is passing Details
2024-04-05 18:57:53 +00:00
Fabio Manganiello a026a101cd
Removed `stt.deepspeech` integration.
continuous-integration/drone/push Build is passing Details
The project hasn't seen a commit in three years and it's probably been
abandoned by Mozilla.

New and better maintained speech-to-text integrations will be
investigated.
2024-04-05 20:56:45 +02:00
Fabio Manganiello b00623f655
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2024-04-05 02:00:03 +00:00
Fabio Manganiello 03765ad652
[UI] Better style for music widget.
continuous-integration/drone/push Build is passing Details
2024-04-05 03:58:12 +02:00
Fabio Manganiello 96f3420c8e
[Automatic] Updated components cache
continuous-integration/drone/push Build is passing Details
2024-04-05 01:47:09 +00:00
Fabio Manganiello c31180dae8
[music.mopidy] Fixed parsing of `new_state` upon `playback_state_changed`.
continuous-integration/drone/push Build is passing Details
2024-04-05 03:46:01 +02:00
Fabio Manganiello b1498bfc28
[Automatic] Updated components cache
continuous-integration/drone/push Build is passing Details
2024-04-05 01:41:38 +00:00
Fabio Manganiello 083c9e250e
[music.mopidy] Better handling of client events.
continuous-integration/drone/push Build is passing Details
2024-04-05 03:40:27 +02:00
Fabio Manganiello 88ffc3b795
[Automatic] Updated components cache
continuous-integration/drone/push Build was killed Details
2024-04-05 00:56:48 +00:00
Fabio Manganiello 5f6fd4aa54
Added `--db` CLI option and support for configuration over environment.
continuous-integration/drone/push Build is passing Details
Closes: #280
2024-04-05 02:54:45 +02:00
Fabio Manganiello c8361aa475
[Automatic] Updated components cache
continuous-integration/drone/push Build is passing Details
2024-04-04 00:53:18 +00:00
Fabio Manganiello 496a3f4911 Updated docs 2024-04-04 00:52:30 +00:00
Fabio Manganiello d2ec93b798 [#297] Removed `music.spotify` backend.
1. I no longer I use a Spotify account (I switched to Tidal after
   Spotify deprecated libspotify), and I wouldn't like to create one
   just to test this integration.

2. After a couple of years, the libspotify open fork (Librespot) seems
   to be still in an unstable stage and it's already been discontinued
   once - I would avoid rebuilding the integration against a dependency
   that may change a lot in the near future.
2024-04-04 00:52:30 +00:00
Fabio Manganiello 73cc47b964
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2024-04-03 23:57:10 +00:00
Fabio Manganiello 787b6a6af6
[UI] A more consistent light style for the music widget.
continuous-integration/drone/push Build is passing Details
2024-04-04 01:54:52 +02:00
Fabio Manganiello 6f24504cc4
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2024-04-03 23:11:49 +00:00
Fabio Manganiello 5d9a201a5b
[#297] Mopidy/MPD refactor+migration, UI side.
continuous-integration/drone/push Build is passing Details
2024-04-04 01:07:05 +02:00
Fabio Manganiello e2246c8d30
[Automatic] Updated components cache
continuous-integration/drone/push Build is passing Details
2024-04-03 23:02:09 +00:00
Fabio Manganiello 58518a4d63 Better timeout management on mopidy status refresh. 2024-04-03 23:01:22 +00:00
Fabio Manganiello 5346833152 [WIP] API adaptations for `music.mpd` 2024-04-03 23:01:22 +00:00
Fabio Manganiello 89d618b35f [WIP] `music.mopidy` refactor, initial backend rewrite. 2024-04-03 23:01:22 +00:00
Fabio Manganiello d2e5e5230b [music.mpd] Removed deprecated actions.
- `setvol` ➡️  `set_volume`
- `seekcur` ➡️  `seek`
- `playlistinfo` ➡️  `get_tracks`
- `listplaylists` ➡️  `get_playlists`
- `listplaylist` ➡️  `get_playlist`
- `listplaylistinfo` ➡️  `get_playlist`
- `playlistadd` ➡️  `add_to_playlist`
- `playlistdelete` ➡️  `remove_from_playlist`
- `playlistmove` ➡️  `playlist_move`
- `playlistclear` ➡️  `playlist_clear`
- `rename` ➡️  `rename_playlist`
- `rm` ➡️  `delete_playlist`

stuff
2024-04-03 23:01:22 +00:00
Fabio Manganiello a3b6d411e4 [music.mpd] Adjust default poll_interval: 5 -> 20 seconds. 2024-04-03 23:01:22 +00:00
Fabio Manganiello 288344a348
[Automatic] Updated UI files
continuous-integration/drone/push Build is passing Details
2024-03-05 10:19:13 +00:00
Fabio Manganiello 8f35fbed16
Merge pull request #404 from BlackLight/snyk-upgrade-66089ad9a01450eef161c7e7fac48843
continuous-integration/drone/push Build is passing Details
[Snyk] Upgrade axios from 1.6.4 to 1.6.7
2024-03-05 11:15:26 +01:00
Fabio Manganiello 0e8408a83f
Merge branch 'master' into snyk-upgrade-66089ad9a01450eef161c7e7fac48843 2024-03-05 11:15:09 +01:00