[marytts] Add LRU cache (#15227)
Signed-off-by: Gwendal Roulleau <gwendal.roulleau@gmail.com>
This commit is contained in:
parent
7c9f66ffb3
commit
28e6da6342
|
@ -43,3 +43,8 @@ The sample frequency depends on the chosen voice and ranges from 16kHz to 48kHz.
|
||||||
## Log files
|
## Log files
|
||||||
|
|
||||||
The log messages of Mary TTS are not bundled with the openHAB log messages in the `openhab.log` file of your log directory but are stored in their own log file at `server.log` of your log directory.
|
The log messages of Mary TTS are not bundled with the openHAB log messages in the `openhab.log` file of your log directory but are stored in their own log file at `server.log` of your log directory.
|
||||||
|
|
||||||
|
## Caching
|
||||||
|
|
||||||
|
The MaryTTS service uses the openHAB TTS cache to cache audio files produced from the most recent queries in order to reduce traffic, improve performance and reduce number of requests.
|
||||||
|
|
||||||
|
|
|
@ -21,9 +21,13 @@ import java.util.Set;
|
||||||
|
|
||||||
import org.openhab.core.audio.AudioFormat;
|
import org.openhab.core.audio.AudioFormat;
|
||||||
import org.openhab.core.audio.AudioStream;
|
import org.openhab.core.audio.AudioStream;
|
||||||
|
import org.openhab.core.voice.AbstractCachedTTSService;
|
||||||
|
import org.openhab.core.voice.TTSCache;
|
||||||
import org.openhab.core.voice.TTSException;
|
import org.openhab.core.voice.TTSException;
|
||||||
import org.openhab.core.voice.TTSService;
|
import org.openhab.core.voice.TTSService;
|
||||||
|
import org.osgi.service.component.annotations.Activate;
|
||||||
import org.osgi.service.component.annotations.Component;
|
import org.osgi.service.component.annotations.Component;
|
||||||
|
import org.osgi.service.component.annotations.Reference;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -39,8 +43,8 @@ import marytts.modules.synthesis.Voice;
|
||||||
* @author Kelly Davis - Initial contribution and API
|
* @author Kelly Davis - Initial contribution and API
|
||||||
* @author Kai Kreuzer - Refactored to updated APIs and moved to openHAB
|
* @author Kai Kreuzer - Refactored to updated APIs and moved to openHAB
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component(service = TTSService.class)
|
||||||
public class MaryTTSService implements TTSService {
|
public class MaryTTSService extends AbstractCachedTTSService {
|
||||||
|
|
||||||
private final Logger logger = LoggerFactory.getLogger(MaryTTSService.class);
|
private final Logger logger = LoggerFactory.getLogger(MaryTTSService.class);
|
||||||
|
|
||||||
|
@ -56,7 +60,9 @@ public class MaryTTSService implements TTSService {
|
||||||
*/
|
*/
|
||||||
private Set<AudioFormat> audioFormats;
|
private Set<AudioFormat> audioFormats;
|
||||||
|
|
||||||
protected void activate() {
|
@Activate
|
||||||
|
public MaryTTSService(final @Reference TTSCache ttsCache) {
|
||||||
|
super(ttsCache);
|
||||||
try {
|
try {
|
||||||
marytts = new LocalMaryInterface();
|
marytts = new LocalMaryInterface();
|
||||||
voices = initVoices();
|
voices = initVoices();
|
||||||
|
@ -77,7 +83,7 @@ public class MaryTTSService implements TTSService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AudioStream synthesize(String text, org.openhab.core.voice.Voice voice, AudioFormat requestedFormat)
|
public AudioStream synthesizeForCache(String text, org.openhab.core.voice.Voice voice, AudioFormat requestedFormat)
|
||||||
throws TTSException {
|
throws TTSException {
|
||||||
// Validate arguments
|
// Validate arguments
|
||||||
if (text == null || text.isEmpty()) {
|
if (text == null || text.isEmpty()) {
|
||||||
|
|
Loading…
Reference in New Issue