Commit Graph
30 Commits
Author SHA1 Message Date
Gwendal RoulleauandGitHub 59ebd37a88 [pollyTTS] Replace custom TTS cache with common TTS cache (#15228)
* [pollyTTS] Replace custom TTS cache with common TTS cache

---------

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2023-07-16 12:24:20 +02:00
Gwendal RoulleauandGitHub 7587e0c504 [mimictts] Add LRU cache (#14564)
* [mimictts] Add LRU cache

And simplifies code with new core capabilities (no more need to create temporary files implementing FixedLengthAudioStream)

---------

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2023-07-12 21:59:48 +02:00
Gwendal RoulleauandGitHub 28e6da6342 [marytts] Add LRU cache (#15227)
Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2023-07-12 19:23:51 +02:00
Gwendal RoulleauandGitHub 18ae834d68 [chromecast] Harmonize exception processing (#15225)
Rethrow a wrapped exception instead of only logging, like the other audio sinks.

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2023-07-12 10:54:42 +02:00
Gwendal RoulleauandGitHub 2899421ec3 [googletts] Replace custom TTS cache with common TTS cache (#15208)
* [googletts] Replace custom TTS cache with common TTS cache

--------

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2023-07-11 00:29:13 +02:00
Gwendal RoulleauandGitHub b17246f00a [picotts] Add LRU cache (#14565)
* [picotts] Add LRU cache

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

---------

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2023-07-08 18:09:06 +02:00
Gwendal RoulleauandGitHub 081bf3a9d4 [kodi] Support for more audio streams through the HTTP audio servlet (#15192)
* [kodi] Support for more audio streams through the HTTP audio servlet

[kodi] Audio sink supporting more audio streams

Related to #15113

---------

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2023-07-08 11:18:44 +02:00
Gwendal RoulleauandGitHub 06abd44a7d [chromecast] Support for more audio streams through the audio servlet (#15180)
* [chromecast] Support for more audio streams through the HTTP audio servlet

Separates audiosink in its own class.
Improves volume change/restauration and temporary file handling by using the new core capabilities

---------

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2023-07-06 21:05:21 +02:00
Gwendal RoulleauandGitHub dee79190a9 [squeezebox] Support for more audio streams through the audio servlet (#15194)
* [squeezebox] Support for more audio streams through the audio servlet

Audio sink supporting more audio streams

---------

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2023-07-06 21:02:05 +02:00
Gwendal RoulleauandGitHub 11512a9db9 [doorbird] Support for more audio streams (#15189)
* [doorbird] Support for more audio streams

And proper use of a synchronous base class.

---------

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2023-07-06 20:07:18 +02:00
Gwendal RoulleauandGitHub 94a761f84e [pulseaudio] Make the process method asynchronous (#15179)
* [pulseaudio] Make the process method asynchronous

And use the new 'complete' system to signal core that the sound is fully played.

---------

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2023-07-06 19:21:12 +02:00
Gwendal RoulleauandGitHub d07580c0a7 [doorbird] Add audio sink information to README (#14737)
Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2023-04-02 13:30:28 +02:00
Gwendal RoulleauandGitHub d497defe34 [mimictts] Fix ssml and playing from audiosinks using the audio servlet (#14120)
* [mimictts] Fix ssml and playing from an audiosink using the audio servlet

Fix :
- ssml not working
- add an option to store the audio on a file before sending it to openhab. It enables audiosink based on the audio servlet to play the sound (the servlet requires the getClonedStream method, unavailable with a pure streaming approach). The files are stored in the user data directory and deleted as soon as possible (stream close detection).
- fix error with voice name not encoded

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2023-01-14 09:39:59 +01:00
Gwendal RoulleauandGitHub 2c2097d646 [doorbird] Add audiosink (#14122)
* [doorbird] Add audiosink

Add audiosink capability to a doorbird thing

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2023-01-08 10:57:04 +01:00
Gwendal RoulleauandGitHub 0c1728511f [smsmodem] Add codeowners (#13834)
Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2022-12-04 11:30:00 +01:00
56728b6091 [smsmodem] Initial contribution (#12250)
* [smsmodem] Initial contribution

This binding connects to a USB serial GSM modem (or a network exposed one, a.k.a ser2net) and allows openHAB to send and receive SMS through it.

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

* [smsmodem] README fix

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

* [smsmodem] build/spotless fix

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

* [smsmodem] compliance with 3rd party license

And long running thread naming convention
And treated some code warning 

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

* [smsmodem] i18n

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

* [smsmodem] Small fixes

update channel
rename action to avoid colision with other binding and a too generic name

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

* [smsmodem] Use of standard Thing properties

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

* [smsmodem] Fix sender identifier error with special character

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

* [smsmodem] Add encoding parameter

For non latin character in SMS

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

* [smsmodem] Apply review

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

* [smsmodem] Split local and remote modem in two thing-types

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

* [smsmodem] Apply review

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

* [smsmodem] Apply review

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

* [smsmodem] Apply code review (removing unnecessary method)

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
Co-authored-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2022-12-03 21:35:30 +01:00
Gwendal RoulleauandGitHub b7cbf2ba72 [pulseaudio] Apply real disconnection when needed (#13338)
* [pulseaudio] Removing isIdle test

The isIdle boolean was not properly handled.
When disconnection is called, isIdle is not relevant : we should always honnor the disconnection request.
In fact, isIdle prevented disconnection when it is necessary (example : when a IOException occurs when sending audio to sink)

+Little bug fix on volume parsing: some volume request doesn't respond with a space after the comma separating left/right channel.

* [pulseaudio] Enhancement to the idle detection for disconnection

Using a counter to count client instead of a isIdle variable, which was not thread safe.
The PulseaudioSimpleProtocolStream parent class is now the sole responsible for closing source or sink stream.

* [pulseaudio] Small performance enhancement

Avoid a costly synchronized operation for a method called very often.

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2022-09-25 12:59:30 +02:00
Gwendal RoulleauandGitHub 2b62f74e5f [mimictts] Use http method POST instead of GET (#13239)
* [mimictts] Use http method POST instead of GET

Using POST method allows longer request size.
Also, using InputStreamResponseListener avoid keeping the response in-memory

* [mimictts] quick fix for regression : providing length

Some audiosink needs it

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2022-09-03 12:00:32 +02:00
Gwendal RoulleauandGitHub 7a53e313cd [mimictts] Initial contribution (#13045)
* [mimictts] Initial contribution

Add a voice service for Mimic (version 3) TTS from Mycroft AI. 

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2022-07-12 18:49:01 +02:00
Gwendal RoulleauandGitHub ae20f93f19 [pulseaudio] Allow flexible parameters to find a given pulseaudio device (#12598)
* [pulseaudio] Allow flexible parameters to find a given pulseaudio device

To identify the device on the pulseaudio server, you can now use the description instead of the technical id (a.k.a. "name").
To filter furthermore, you can also use the parameter additionalFilters (optional regular expressions that need to match a property value of a device on the pulseaudio server)

Closes #12555

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2022-04-28 23:25:23 +02:00
2be9a658d5 [pulseaudio] Small bugfixes and rewrite (#12581)
* [pulseaudio] small fixes and rewrite

- All classes are now @NonNullByDefault
- all build warnings cleared
- no more need for a watchdog scheduled thread for every pulseaudio device : the bridge now handles sending information to child
- fix bug : exception at startup when child handler try to get information from the bridge too soon is now handled by waiting 2 seconds if necessary
- fix bug : playing MP3 with high bitrate is now OK with the replacement of the ResetableInputStream by a standard BufferedInputStream that handle mark/reset method better
- fix bug : ghost device listener no longer receive event after dispose
- fix bug : discovery doesn't show already added thing anymore
- Updating the status bridge to ONLINE only AFTER the update method is done.
- Use the bridgeStatusChanged method in the childhandler to get opportunity to test if the child could go ONLINE, (and by the way initialize the audiosink and audiosource, has they also need information from the bridge)

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
Co-authored-by: Laurent Garnier <lg.hc@free.fr>
2022-04-10 00:25:45 +02:00
dalgwenandGitHub f1a1bd5f1d [marytts] Fix incorrect wav header (#12571)
With this simple fix, MaryTTS creates the correct wav header for the audio inputstream (audioformat is now assigned before we use it)

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2022-04-04 08:50:30 +02:00
ecf8aa32b0 [pulseaudio] Fix misconfiguration example in README (#12553)
Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

Co-authored-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2022-04-01 09:24:53 +02:00
dalgwenandGitHub 682cb8a1b5 [mycroft] Init i18n (#12020)
(and by the way, reorder alphabetically the CODEOWNERS file)
Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2022-01-11 13:17:33 +01:00
dalgwenandGitHub 40b5932817 [mycroft] Initial contribution (#11040)
This binding will connect to Mycroft A.I. in order to control it or react to event by listening on the message bus.

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2022-01-10 16:51:07 +01:00
dalgwenandGitHub 82974b4c2f [googletts] Use returned sound to get play informations (#11877)
* [googletts] Use real sound returned to get play informations (#10015)

When google tts returns a wav file, it is now parsed to get correct informations about it.(mandatory for playing it with at least the System speaker audio sink)
Close #10015

* Fix a regression, as the WAV fix was incorrectly applied to the MP3 file

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2022-01-08 00:44:28 +01:00
374a89a9fb [pulseaudio] Add reencoding to play more audio formats (#11630) (#11631)
Add a pass to reencode PCM sound in 16 bit, 44100 hz, 2 channels, before sending it to the pulseaudio audio sink.

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

Co-authored-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2021-12-11 13:08:03 +01:00
83fd01498a [pulseaudio] Fix sink-input configuration and other (#11272) (#11276)
* [pulseaudio] Fix sink-input configuration  and other small improvements (#11272)

The binding requires a parameter to activate the parsing of sink-input entries on the pulseaudio server. This patch :
- document this behaviour
- fix the parsing of these parameters if a configuration file is used (the old method of casting launched a class cast exception)

Other small improvements :
- Force a refresh/new parsing when the configuration changes
- Fix scheduled disconnection : if a sound is played during the grace period, the scheduled disconnection is postponed, not added to the last
- add a possibility to never disconnect the audio sink (in order to have a lower latency when playing sound)
Closes #11272

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

* Small fixes after proofreading

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

Co-authored-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2021-10-09 11:44:20 +02:00
dalgwenandGitHub 0a96792a93 [pulseaudio] Fix playing time with pulseaudio sink (#11170) (#11171)
Fixes #11170 by introducing an intelligent thread.sleep (getting the duration of the sound, if possible, then wait the appropriate time for letting the sound play). By the way, the method to get the sound duration is not as easy as I thought.

Also fix a minor issue with the last volume not propertly saved.

And fix some minor warnings by using final local variable.

Signed-off-by: Gwendal ROULLEAU <gwendal.roulleau@gmail.com>
2021-09-08 21:08:05 +02:00
c3b29e0fe6 [pulseaudio] Add pulseaudio sink as openhab audio sink (#1895) (#10423)
* [pulseaudio] Add pulseaudio sink as openhab audio sink (#1895)

This add to the pulseaudio binding the capability to use "pulseaudio sink" as an "openhab sink" to output sound from openhab to a pulse audio server on the network.
You need to load module-simple-protocol-tcp sink in addition to the usual module-cli-protocol-tcp, and enable the sink in the thing configuration.

Closes #1895

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

* Small corrections after review

And getting rid of some other compilation warnings
Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

* Fix some registration errors  and allow the binding to load the simple module remotely

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

* Small corrections after reviews

initialize audiosink in a thread with scheduler.submit
clear some warning related code.

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
Better interruptexception handling

* Fix two small concurrency bugs

Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>

Co-authored-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
2021-04-09 22:44:38 +02:00