Exemplo n.º 1
0
 def __init__(self, *args, **kwargs):
     if not platform.system().lower() == 'darwin':
         raise ImportError('Invalid platform!')
     if not diagnose.check_executable(EXECUTABLE):
         raise ImportError("Executable '%s' not found!" % EXECUTABLE)
     plugin.TTSPlugin.__init__(self, *args, **kwargs)
     self._logger = logging.getLogger(__name__)
     self._logger.warning("This TTS plugin doesn't have multilanguage " +
                          "support!")
Exemplo n.º 2
0
import logging
import os
import pipes
import subprocess
import tempfile
import unittest
from naomi import diagnose
from naomi import plugin
from naomi import profile

EXECUTABLE = 'flite'

if not diagnose.check_executable(EXECUTABLE):
    raise unittest.SkipTest(
        "Skipping flite-tts, executable '{}' not found".format(EXECUTABLE))
    raise ImportError("Executable '%s' not found!" % EXECUTABLE)


class FliteTTSPlugin(plugin.TTSPlugin):
    """
    Uses the flite speech synthesizer
    Requires flite to be available
    """
    def __init__(self, *args, **kwargs):
        plugin.TTSPlugin.__init__(self, *args, **kwargs)

        self._logger = logging.getLogger(__name__)
        self._logger.warning(
            "This TTS plugin doesn't have multilanguage support!")
        voice = profile.get(['flite-tts', 'voice'], 'slt')
        self._logger.info("Voice: {}".format(voice))
Exemplo n.º 3
0
import re
import subprocess
import tempfile
import unittest
from collections import OrderedDict
from naomi import diagnose
from naomi import plugin
from naomi import profile
from . import juliusvocab

if not diagnose.check_executable('julius'):
    raise unittest.SkipTest("Skipping julius, 'julius' executable not found")
    raise ImportError("Can't find julius executable")

RE_SENTENCE = re.compile(r'sentence(\d+): <s> (.+) </s>')


class JuliusSTTPlugin(plugin.STTPlugin):
    """
    A very basic Speech-to-Text engine using Julius.
    """
    def __init__(self, *args, **kwargs):
        plugin.STTPlugin.__init__(self, *args, **kwargs)

        vocabulary_path = self.compile_vocabulary(
            juliusvocab.compile_vocabulary)

        self._dfa_file = juliusvocab.get_dfa_path(vocabulary_path)
        self._dict_file = juliusvocab.get_dict_path(vocabulary_path)

        hmmdefs = profile.get(
Exemplo n.º 4
0
import collections
import logging
import pipes
import re
import subprocess
import tempfile
from naomi import diagnose
from naomi import plugin

if not diagnose.check_executable('espeak'):
    raise ImportError("espeak executable not found!")

RE_PATTERN = re.compile(r'(?P<pty>\d+)\s+' + r'(?P<lang>[a-z-]+)\s+' +
                        r'(?P<gender>[MF-])\s+' +
                        r'(?P<name>[\w-]+)\s+\S+\s+' +
                        r'(?P<other>(?:\([a-z-]+\s+\d+\))*)')
RE_OTHER = re.compile(r'\((?P<lang>[a-z-]+)\s+(?P<pty>\d+)\)')

Voice = collections.namedtuple('Voice',
                               ['name', 'gender', 'priority', 'language'])


class EspeakTTSPlugin(plugin.TTSPlugin):
    """
    Uses the eSpeak speech synthesizer included in the Naomi disk image
    Requires espeak to be available
    """
    def __init__(self, *args, **kwargs):
        plugin.TTSPlugin.__init__(self, *args, **kwargs)

        self._logger = logging.getLogger(__name__)
Exemplo n.º 5
0
import logging
import pipes
import subprocess
import tempfile
from naomi import diagnose
from naomi import plugin

if not all(diagnose.check_executable(e) for e in ('text2wave', 'festival')):
    raise ImportError('Executables "text2wave" and/or  "festival" not found!')


class FestivalTTSPlugin(plugin.TTSPlugin):
    """
    Uses the festival speech synthesizer
    Requires festival (text2wave) to be available
    """
    def __init__(self, *args, **kwargs):
        plugin.TTSPlugin.__init__(self, *args, **kwargs)

        self._logger = logging.getLogger(__name__)

        available_voices = self.get_voices()
        if len(available_voices) == 0:
            raise ValueError('No voices available!')

        self._logger.warning("This TTS plugin doesn't have multilanguage " +
                             "support!")
        self._logger.info('Available voices: %s', ', '.join(available_voices))

        try:
            voice = self.profile['festival-tts']['voice']