elevent_voice.py 924 B

123456789101112131415161718192021222324252627282930313233
  1. import time
  2. from elevenlabs import set_api_key,generate
  3. from bridge.reply import Reply, ReplyType
  4. from common.log import logger
  5. from common.tmp_dir import TmpDir
  6. from voice.voice import Voice
  7. from config import conf
  8. XI_API_KEY = conf().get("xi_api_key")
  9. set_api_key(XI_API_KEY)
  10. name = conf().get("xi_voice_id")
  11. class ElevenLabsVoice(Voice):
  12. def __init__(self):
  13. pass
  14. def voiceToText(self, voice_file):
  15. pass
  16. def textToVoice(self, text):
  17. audio = generate(
  18. text=text,
  19. voice=name,
  20. model='eleven_multilingual_v1'
  21. )
  22. fileName = TmpDir().path() + "reply-" + str(int(time.time())) + "-" + str(hash(text) & 0x7FFFFFFF) + ".mp3"
  23. with open(fileName, "wb") as f:
  24. f.write(audio)
  25. logger.info("[ElevenLabs] textToVoice text={} voice file name={}".format(text, fileName))
  26. return Reply(ReplyType.VOICE, fileName)