SettingLoader.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. from YAMLLoader import YAMLLoader
  2. import logging
  3. FILE_NAME = "settings.yml"
  4. logging.basicConfig()
  5. logger = logging.getLogger("jarvis")
  6. class DefaultSpeechToTextNotFound(Exception):
  7. pass
  8. class DefaultSpeechNull(Exception):
  9. pass
  10. class NoSpeechToTextConfiguration(Exception):
  11. pass
  12. class SettingLoader(YAMLLoader):
  13. def __init__(self, filename=None):
  14. self.fileName = filename
  15. if filename is None:
  16. self.fileName = FILE_NAME
  17. self.filePath = "../../" + self.fileName
  18. YAMLLoader.__init__(self, self.filePath)
  19. def get_config(self):
  20. return YAMLLoader.get_config(self)
  21. def get_default_speech_to_text(self):
  22. settings = self.get_config()
  23. try:
  24. default_speech_to_text = settings["default_speech_to_text"]
  25. if default_speech_to_text is None:
  26. raise DefaultSpeechNull("Attribute default_speech_to_text is null")
  27. logger.info("Default STT: %s" % default_speech_to_text)
  28. return default_speech_to_text
  29. except KeyError:
  30. raise DefaultSpeechToTextNotFound("Attribute default_speech_to_text not found in settings")
  31. def get_default_text_to_speech(self):
  32. settings = self.get_config()
  33. try:
  34. default_text_to_speech = settings["default_text_to_speech"]
  35. if default_text_to_speech is None:
  36. raise DefaultSpeechNull("Attribute default_text_to_speech is null")
  37. logger.info("Default TTS: %s" % default_text_to_speech)
  38. return default_text_to_speech
  39. except KeyError:
  40. raise DefaultSpeechToTextNotFound("Attribute default_text_to_speech not found in settings")
  41. def get_stt_args(self, default_stt_plugin_name):
  42. """
  43. Return argument set for the current STT engine
  44. :param default_stt_plugin_name: Name of the STT engine
  45. :return:
  46. """
  47. def find(lst, key):
  48. """
  49. Find a key name in a list
  50. :param lst: list()
  51. :param key: key name to find i the list
  52. :return: Return the dict
  53. """
  54. for el in lst:
  55. try:
  56. if el[key]:
  57. return el[key]
  58. except TypeError:
  59. pass
  60. except KeyError:
  61. pass
  62. return None
  63. settings = self.get_config()
  64. try:
  65. speechs_to_text = settings["speech_to_text"]
  66. except KeyError:
  67. raise NoSpeechToTextConfiguration("No speech_to_text in settings")
  68. logger.debug("Settings file content: %s" % speechs_to_text)
  69. # get args
  70. args = find(speechs_to_text, default_stt_plugin_name)
  71. logger.debug("Args for %s STT: %s" % (default_stt_plugin_name, args))
  72. return args
  73. def get_tts_args(self, tts_name):
  74. """
  75. Return argument set for the current STT engine
  76. :param tts_name: Name of the TTS engine
  77. :return:
  78. """
  79. def find(lst, key):
  80. """
  81. Find a key name in a list
  82. :param lst: list()
  83. :param key: key name to find i the list
  84. :return: Return the dict
  85. """
  86. for el in lst:
  87. try:
  88. if el[key]:
  89. return el[key]
  90. except TypeError:
  91. pass
  92. except KeyError:
  93. pass
  94. return None
  95. settings = self.get_config()
  96. try:
  97. texts_to_speech = settings["text_to_speech"]
  98. except KeyError:
  99. raise NoSpeechToTextConfiguration("No text_to_speech in settings")
  100. logger.debug("Settings file content: %s" % texts_to_speech)
  101. # get args
  102. args = find(texts_to_speech, tts_name)
  103. logger.debug("Args for %s TTS: %s" % (tts_name, args))
  104. # print args
  105. return args