1
0
mirror of https://github.com/janvarev/Irene-Voice-Assistant.git synced 2025-11-23 22:45:08 +02:00

10.8.0 добавлен Elevenlabs TTS (онлайн)

This commit is contained in:
Janvarev Vladislav
2024-04-03 14:31:36 +03:00
parent c4b38b53b7
commit c6a43c7dc9
7 changed files with 74 additions and 3 deletions

View File

@@ -59,6 +59,8 @@ _Доп инфа:_
---
**plugin_tts_elevenlabs.py** - (онлайн) позволяет озвучивать через онлайн-сервис Elevellabs.
**plugin_tts_pyttsx.py** - (оффлайн) позволяет делать TTS (Text-To-Speech, озвучку текста) через pyttsx движок. Используется по умолчанию.
**plugin_tts_console.py** - (оффлайн) заглушка для отладки. Вместо работы TTS просто выводит текст в консоль.

View File

@@ -18,7 +18,7 @@ def start(core:VACore):
"isOnline": "Будут ли выполняться команды плагинов, требующие онлайн",
# "ttsIndex": 0,
"useTTSCache": "Кешировать озвучку текста (требует больше места на диске, может сбоить при переключении голосов)",
"ttsEngineId": "ID основного движка озвучки. Если что-то не работает - попробуйте сменить на pyttsx, vosk или silero_v3 (последний требует полной установки из install - т.е. c torch)",
"ttsEngineId": "ID основного движка озвучки. Если что-то не работает - попробуйте сменить на pyttsx, elevenlabs, vosk или silero_v3 (последний требует полной установки из install - т.е. c torch)",
"ttsEngineId2": "ID дополнительного движка озвучки. Всегда озвучивает результат на той машине, где запущена Ирина (без веб-интерфейса)", # двиг для прямой озвучки на сервере. Если пуст - используется ttsEngineId
"playWavEngineId": "ID движка воспроизведения аудио. Если есть проблемы - попробуйте сменить на audioplayer или sounddevice",
"linguaFrancaLang": "Язык для библиотеки lingua-franca конвертирования чисел", # язык для библиотеки lingua-franca конвертирования чисел

View File

@@ -0,0 +1,64 @@
# TTS plugin for Elevenlabs.io
# author: Vladislav Janvarev
import os
from vacore import VACore
modname = os.path.basename(__file__)[:-3] # calculating modname
# функция на старте
def start(core:VACore):
manifest = {
"name": "TTS Elevenlabs",
"version": "1.0",
"require_online": True,
"default_options": {
"speaker": "Bella",
"model": "eleven_multilingual_v2",
"api_key": "", # not required
},
"tts": {
"elevenlabs": (init,None,towavfile) # первая функция инициализации, вторая - говорить
}
}
return manifest
def start_with_options(core:VACore, manifest:dict):
pass
def init(core:VACore):
options = core.plugin_options(modname)
import elevenlabs
def towavfile(core:VACore, text_to_speech:str, wavfile:str):
options = core.plugin_options(modname)
speaker = options["speaker"]
model = options["model"]
api_key = options["api_key"]
from elevenlabs.client import ElevenLabs
from elevenlabs import save
el_client:ElevenLabs = None
if api_key == "":
el_client = ElevenLabs()
else:
el_client = ElevenLabs(
api_key=api_key
)
audio = el_client.generate(
text=text_to_speech,
voice=speaker,
model=model,
)
# рендерим wav (здесь это будет MP3)
save(audio,wavfile)

View File

@@ -13,6 +13,9 @@ vosk~=0.3.45
vosk-tts~=0.3.52
#torch~=2.1.2 #для Silero
# tts elevenlabs
elevenlabs==1.0.3
# Локальные запись и воспроизведение звука
sounddevice~=0.4.3
soundfile~=0.10.3.post1

View File

@@ -13,3 +13,4 @@ python-dateutil~=2.6.0
gradio~=3.28.3
fsspec==2023.1.0
openai==0.28.0
elevenlabs==1.0.3

View File

@@ -13,4 +13,5 @@ uvicorn[standard]
gradio~=3.28.3
fsspec==2023.1.0
openai==0.28.0
elevenlabs==1.0.3

View File

@@ -12,7 +12,7 @@ from jaa import JaaCore
from collections.abc import Callable
version = "10.7.0"
version = "10.8.0"
# main VACore class