SettingLoader.py 3.8 KB

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