[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
|
||||
|
||||
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.AudioStream;
|
||||
import org.openhab.core.voice.AbstractCachedTTSService;
|
||||
import org.openhab.core.voice.TTSCache;
|
||||
import org.openhab.core.voice.TTSException;
|
||||
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.Reference;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
@ -39,8 +43,8 @@ import marytts.modules.synthesis.Voice;
|
|||
* @author Kelly Davis - Initial contribution and API
|
||||
* @author Kai Kreuzer - Refactored to updated APIs and moved to openHAB
|
||||
*/
|
||||
@Component
|
||||
public class MaryTTSService implements TTSService {
|
||||
@Component(service = TTSService.class)
|
||||
public class MaryTTSService extends AbstractCachedTTSService {
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(MaryTTSService.class);
|
||||
|
||||
|
@ -56,7 +60,9 @@ public class MaryTTSService implements TTSService {
|
|||
*/
|
||||
private Set<AudioFormat> audioFormats;
|
||||
|
||||
protected void activate() {
|
||||
@Activate
|
||||
public MaryTTSService(final @Reference TTSCache ttsCache) {
|
||||
super(ttsCache);
|
||||
try {
|
||||
marytts = new LocalMaryInterface();
|
||||
voices = initVoices();
|
||||
|
@ -77,7 +83,7 @@ public class MaryTTSService implements TTSService {
|
|||
}
|
||||
|
||||
@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 {
|
||||
// Validate arguments
|
||||
if (text == null || text.isEmpty()) {
|
||||
|
|
Loading…
Reference in New Issue