* New translations units.properties (French)
* New translations chart.properties (French)
* New translations voice.properties (French)
* New translations defaultsystemchannels.properties (French)
* New translations addons.properties (French)
* New translations voice.properties (French)
* New translations voice.properties (Hebrew)
* New translations voice.properties (Hungarian)
* New translations addons.properties (Hungarian)
* New translations scriptprofile.properties (Hungarian)
* New translations systemprofiles.properties (Hungarian)
* New translations chart.properties (Hungarian)
* New translations voice.properties (Hungarian)
* New translations magic.properties (Hungarian)
* New translations jsr223.properties (Hungarian)
* New translations defaultsystemchannels.properties (Danish)
Abstract classes should not have public constructors.
Constructors of abstract classes can only be called in constructors of their subclasses.
So there is no point in making them public.
The protected modifier should be enough.
Signed-off-by: Wouter Born <github@maindrain.net>
* Iterate using Map entries
Iteration using Map entries is preferred because it is more efficient and helps preventing NPEs.
Signed-off-by: Wouter Born <github@maindrain.net>
* [voice] Support custom rules on item metadata
* fix isTemplate functionality and test
* fix filter location based for non labeled rules
Signed-off-by: Miguel Álvarez <miguelwork92@gmail.com>
Simplifies the code by using List.of, List.copyOf etc. where possible which results in less code and imports.
Signed-off-by: Wouter Born <github@maindrain.net>
Stream.toList was introduced in Java 16 and creates an unmodifiable List so it can be used to simplify code whenever the List is not expected to be modified.
Signed-off-by: Wouter Born <github@maindrain.net>
* [voice] Add length limit to TTS handled by cache
We can safely assume that long TTS are generated for report (meteo, chatGPT ?), probably not meant to be repeated, and so not cached.
Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
* [voice] Add voice commands for register/unregister dialogs and list dialogs and dialog registrations
Signed-off-by: Miguel Álvarez <miguelwork92@gmail.com>
* [audio] More capabilities for AudioSink using the AudioServlet
AudioServlet can now serve all type of AudioStream multiple times by buffering data in memory or in temporary file.
Adding method to ease disposal of temporary file after playing a sound
Adding an identifyier to audio stream for further development (allow audio sink to cache computation data)
We can now send audio with a Runnable for a delayed task to be executed after. This delayed task includes temporary file deletion and volume restoration.
This is a no breaking change / no behaviour modification for other addon AudioSink, as existing AudioSink must explicitly override the old behaviour to use this capability.
Add AudioSinkSync / AudioSinkAsync abstract classes to use this capability easily.
WebAudioSink now implements this capability, with the help of a modified AudioServlet
Adding (approximative, better than nothing) sound duration computation method for MP3 and WAV.
Use this sound duration computation to guess when the async sound is finished and when to do the post process (i.e. volume restoration)
Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
* New translations lsp.properties (Italian)
* New translations hli.properties (Italian)
* New translations addons.properties (Finnish)
* New translations automation.properties (Italian)
* New translations LanguageSupport.properties (Portuguese)
* Remove redundant public modifiers from interfaces
* Remove redundant abstract modifiers from interfaces
Signed-off-by: Wouter Born <github@maindrain.net>