Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

12345678910111213141516171819202122232425262728293031323334353637
  1. """
  2. pytts voice service (offline)
  3. """
  4. import time
  5. import pyttsx3
  6. from bridge.reply import Reply, ReplyType
  7. from common.log import logger
  8. from common.tmp_dir import TmpDir
  9. from voice.voice import Voice
  10. class PyttsVoice(Voice):
  11. engine = pyttsx3.init()
  12. def __init__(self):
  13. # 语速
  14. self.engine.setProperty('rate', 125)
  15. # 音量
  16. self.engine.setProperty('volume', 1.0)
  17. for voice in self.engine.getProperty('voices'):
  18. if "Chinese" in voice.name:
  19. self.engine.setProperty('voice', voice.id)
  20. def textToVoice(self, text):
  21. try:
  22. mp3File = TmpDir().path() + '语音回复_' + str(int(time.time())) + '.mp3'
  23. self.engine.save_to_file(text, mp3File)
  24. self.engine.runAndWait()
  25. logger.info(
  26. '[Pytts] textToVoice text={} voice file name={}'.format(text, mp3File))
  27. reply = Reply(ReplyType.VOICE, mp3File)
  28. except Exception as e:
  29. reply = Reply(ReplyType.ERROR, str(e))
  30. finally:
  31. return reply