|
import time |
|
|
|
from elevenlabs import set_api_key,generate |
|
|
|
from bridge.reply import Reply, ReplyType |
|
from common.log import logger |
|
from common.tmp_dir import TmpDir |
|
from voice.voice import Voice |
|
from config import conf |
|
|
|
XI_API_KEY = conf().get("xi_api_key") |
|
set_api_key(XI_API_KEY) |
|
name = conf().get("xi_voice_id") |
|
|
|
class ElevenLabsVoice(Voice): |
|
|
|
def __init__(self): |
|
pass |
|
|
|
def voiceToText(self, voice_file): |
|
pass |
|
|
|
def textToVoice(self, text): |
|
audio = generate( |
|
text=text, |
|
voice=name, |
|
model='eleven_multilingual_v1' |
|
) |
|
fileName = TmpDir().path() + "reply-" + str(int(time.time())) + "-" + str(hash(text) & 0x7FFFFFFF) + ".mp3" |
|
with open(fileName, "wb") as f: |
|
f.write(audio) |
|
logger.info("[ElevenLabs] textToVoice text={} voice file name={}".format(text, fileName)) |
|
return Reply(ReplyType.VOICE, fileName) |