diff --git a/requirements-optional.txt b/requirements-optional.txt index e076558..9e042e4 100644 --- a/requirements-optional.txt +++ b/requirements-optional.txt @@ -10,6 +10,7 @@ azure-cognitiveservices-speech # azure voice edge-tts # edge-tts numpy<=1.24.2 langid # language detect +elevenlabs==1.0.3 # elevenlabs TTS #install plugin dulwich diff --git a/voice/elevent/elevent_voice.py b/voice/elevent/elevent_voice.py index 15936ab..2cfa5a3 100644 --- a/voice/elevent/elevent_voice.py +++ b/voice/elevent/elevent_voice.py @@ -1,7 +1,7 @@ import time -from elevenlabs import set_api_key,generate - +from elevenlabs.client import ElevenLabs +from elevenlabs import save from bridge.reply import Reply, ReplyType from common.log import logger from common.tmp_dir import TmpDir @@ -9,7 +9,7 @@ from voice.voice import Voice from config import conf XI_API_KEY = conf().get("xi_api_key") -set_api_key(XI_API_KEY) +client = ElevenLabs(api_key=XI_API_KEY) name = conf().get("xi_voice_id") class ElevenLabsVoice(Voice): @@ -21,13 +21,12 @@ class ElevenLabsVoice(Voice): pass def textToVoice(self, text): - audio = generate( + audio = client.generate( text=text, voice=name, - model='eleven_multilingual_v1' + model='eleven_multilingual_v2' ) fileName = TmpDir().path() + "reply-" + str(int(time.time())) + "-" + str(hash(text) & 0x7FFFFFFF) + ".mp3" - with open(fileName, "wb") as f: - f.write(audio) + save(audio, fileName) logger.info("[ElevenLabs] textToVoice text={} voice file name={}".format(text, fileName)) return Reply(ReplyType.VOICE, fileName) \ No newline at end of file