#!/usr/bin/python

# Espeak driver

class speech():
    def __init__(self, ):
        self._es = None
        self._isInitialized = False
        try:
            from espeak import espeak 
            self._es = espeak
            self._isInitialized = True
        except:
            self._initialized = False


    def speak(self,text, queueable=True):
        if not self._isInitialized:
            return False
        if queueable == False: self.cancel()
        self._es.synth(text)
        return True

    def cancel(self):
        if not self._isInitialized:
            return False
        self._es.cancel()
        return True

    def setCallback(self, callback):
        pass

    def clear_buffer(self):
        if not self._isInitialized:
            return False
        return True

    def setVoice(self, voice):
        if not self._isInitialized:
            return False
        return self._es.set_voice(voice)

    def setPitch(self, pitch):
        if not self._isInitialized:
            return False
        return self._es.set_parameter(self._es.Parameter().Pitch, pitch) 

    def setSpeed(self, speed):
        if not self._isInitialized:
            return False
        return self._es.set_parameter(self._es.Parameter().Rate, speed) 

    def setModule(self, module):
        if not self._isInitialized:
            return False

    def setLanguage(self, language):
        if not self._isInitialized:
            return False
        return self._es.set_voice(language)

    def setVolume(self, volume):
        if not self._isInitialized:
            return False    
        return self._es.set_parameter(self._es.Parameter().Volume, int(volume * 200))

    def shutdown(self):
        pass