livekit-plugins-elevenlabs 0.8.0__tar.gz → 1.0.0.dev4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- livekit_plugins_elevenlabs-1.0.0.dev4/.gitignore +168 -0
- {livekit_plugins_elevenlabs-0.8.0 → livekit_plugins_elevenlabs-1.0.0.dev4}/PKG-INFO +10 -20
- {livekit_plugins_elevenlabs-0.8.0 → livekit_plugins_elevenlabs-1.0.0.dev4}/livekit/plugins/elevenlabs/tts.py +19 -24
- {livekit_plugins_elevenlabs-0.8.0 → livekit_plugins_elevenlabs-1.0.0.dev4}/livekit/plugins/elevenlabs/version.py +1 -1
- livekit_plugins_elevenlabs-1.0.0.dev4/pyproject.toml +39 -0
- livekit_plugins_elevenlabs-0.8.0/livekit_plugins_elevenlabs.egg-info/PKG-INFO +0 -46
- livekit_plugins_elevenlabs-0.8.0/livekit_plugins_elevenlabs.egg-info/SOURCES.txt +0 -14
- livekit_plugins_elevenlabs-0.8.0/livekit_plugins_elevenlabs.egg-info/dependency_links.txt +0 -1
- livekit_plugins_elevenlabs-0.8.0/livekit_plugins_elevenlabs.egg-info/requires.txt +0 -1
- livekit_plugins_elevenlabs-0.8.0/livekit_plugins_elevenlabs.egg-info/top_level.txt +0 -1
- livekit_plugins_elevenlabs-0.8.0/pyproject.toml +0 -3
- livekit_plugins_elevenlabs-0.8.0/setup.cfg +0 -4
- livekit_plugins_elevenlabs-0.8.0/setup.py +0 -59
- {livekit_plugins_elevenlabs-0.8.0 → livekit_plugins_elevenlabs-1.0.0.dev4}/README.md +0 -0
- {livekit_plugins_elevenlabs-0.8.0 → livekit_plugins_elevenlabs-1.0.0.dev4}/livekit/plugins/elevenlabs/__init__.py +0 -0
- {livekit_plugins_elevenlabs-0.8.0 → livekit_plugins_elevenlabs-1.0.0.dev4}/livekit/plugins/elevenlabs/log.py +0 -0
- {livekit_plugins_elevenlabs-0.8.0 → livekit_plugins_elevenlabs-1.0.0.dev4}/livekit/plugins/elevenlabs/models.py +0 -0
- {livekit_plugins_elevenlabs-0.8.0 → livekit_plugins_elevenlabs-1.0.0.dev4}/livekit/plugins/elevenlabs/py.typed +0 -0
@@ -0,0 +1,168 @@
|
|
1
|
+
**/.vscode
|
2
|
+
**/.DS_Store
|
3
|
+
|
4
|
+
# Byte-compiled / optimized / DLL files
|
5
|
+
__pycache__/
|
6
|
+
*.py[cod]
|
7
|
+
*$py.class
|
8
|
+
|
9
|
+
# C extensions
|
10
|
+
*.so
|
11
|
+
|
12
|
+
# Distribution / packaging
|
13
|
+
.Python
|
14
|
+
build/
|
15
|
+
develop-eggs/
|
16
|
+
dist/
|
17
|
+
downloads/
|
18
|
+
eggs/
|
19
|
+
.eggs/
|
20
|
+
lib/
|
21
|
+
lib64/
|
22
|
+
parts/
|
23
|
+
sdist/
|
24
|
+
var/
|
25
|
+
wheels/
|
26
|
+
share/python-wheels/
|
27
|
+
*.egg-info/
|
28
|
+
.installed.cfg
|
29
|
+
*.egg
|
30
|
+
MANIFEST
|
31
|
+
|
32
|
+
# PyInstaller
|
33
|
+
# Usually these files are written by a python script from a template
|
34
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
35
|
+
*.manifest
|
36
|
+
*.spec
|
37
|
+
|
38
|
+
# Installer logs
|
39
|
+
pip-log.txt
|
40
|
+
pip-delete-this-directory.txt
|
41
|
+
|
42
|
+
# Unit test / coverage reports
|
43
|
+
htmlcov/
|
44
|
+
.tox/
|
45
|
+
.nox/
|
46
|
+
.coverage
|
47
|
+
.coverage.*
|
48
|
+
.cache
|
49
|
+
nosetests.xml
|
50
|
+
coverage.xml
|
51
|
+
*.cover
|
52
|
+
*.py,cover
|
53
|
+
.hypothesis/
|
54
|
+
.pytest_cache/
|
55
|
+
cover/
|
56
|
+
|
57
|
+
# Translations
|
58
|
+
*.mo
|
59
|
+
*.pot
|
60
|
+
|
61
|
+
# Django stuff:
|
62
|
+
*.log
|
63
|
+
local_settings.py
|
64
|
+
db.sqlite3
|
65
|
+
db.sqlite3-journal
|
66
|
+
|
67
|
+
# Flask stuff:
|
68
|
+
instance/
|
69
|
+
.webassets-cache
|
70
|
+
|
71
|
+
# Scrapy stuff:
|
72
|
+
.scrapy
|
73
|
+
|
74
|
+
# Sphinx documentation
|
75
|
+
docs/_build/
|
76
|
+
|
77
|
+
# PyBuilder
|
78
|
+
.pybuilder/
|
79
|
+
target/
|
80
|
+
|
81
|
+
# Jupyter Notebook
|
82
|
+
.ipynb_checkpoints
|
83
|
+
|
84
|
+
# IPython
|
85
|
+
profile_default/
|
86
|
+
ipython_config.py
|
87
|
+
|
88
|
+
# pyenv
|
89
|
+
# For a library or package, you might want to ignore these files since the code is
|
90
|
+
# intended to run in multiple environments; otherwise, check them in:
|
91
|
+
# .python-version
|
92
|
+
|
93
|
+
# pipenv
|
94
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
95
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
96
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
97
|
+
# install all needed dependencies.
|
98
|
+
#Pipfile.lock
|
99
|
+
|
100
|
+
# poetry
|
101
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
102
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
103
|
+
# commonly ignored for libraries.
|
104
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
105
|
+
#poetry.lock
|
106
|
+
|
107
|
+
# pdm
|
108
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
109
|
+
#pdm.lock
|
110
|
+
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
|
111
|
+
# in version control.
|
112
|
+
# https://pdm.fming.dev/#use-with-ide
|
113
|
+
.pdm.toml
|
114
|
+
|
115
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
116
|
+
__pypackages__/
|
117
|
+
|
118
|
+
# Celery stuff
|
119
|
+
celerybeat-schedule
|
120
|
+
celerybeat.pid
|
121
|
+
|
122
|
+
# SageMath parsed files
|
123
|
+
*.sage.py
|
124
|
+
|
125
|
+
# Environments
|
126
|
+
.env
|
127
|
+
.venv
|
128
|
+
env/
|
129
|
+
venv/
|
130
|
+
ENV/
|
131
|
+
env.bak/
|
132
|
+
venv.bak/
|
133
|
+
|
134
|
+
# Spyder project settings
|
135
|
+
.spyderproject
|
136
|
+
.spyproject
|
137
|
+
|
138
|
+
# Rope project settings
|
139
|
+
.ropeproject
|
140
|
+
|
141
|
+
# mkdocs documentation
|
142
|
+
/site
|
143
|
+
|
144
|
+
# mypy
|
145
|
+
.mypy_cache/
|
146
|
+
.dmypy.json
|
147
|
+
dmypy.json
|
148
|
+
|
149
|
+
# Pyre type checker
|
150
|
+
.pyre/
|
151
|
+
|
152
|
+
# pytype static type analyzer
|
153
|
+
.pytype/
|
154
|
+
|
155
|
+
# Cython debug symbols
|
156
|
+
cython_debug/
|
157
|
+
|
158
|
+
# PyCharm
|
159
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
160
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
161
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
162
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
163
|
+
.idea/
|
164
|
+
|
165
|
+
node_modules
|
166
|
+
|
167
|
+
credentials.json
|
168
|
+
pyrightconfig.json
|
@@ -1,35 +1,25 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: livekit-plugins-elevenlabs
|
3
|
-
Version: 0.
|
3
|
+
Version: 1.0.0.dev4
|
4
4
|
Summary: Agent Framework plugin for voice synthesis with ElevenLabs' API.
|
5
|
-
Home-page: https://github.com/livekit/agents
|
6
|
-
License: Apache-2.0
|
7
5
|
Project-URL: Documentation, https://docs.livekit.io
|
8
6
|
Project-URL: Website, https://livekit.io/
|
9
7
|
Project-URL: Source, https://github.com/livekit/agents
|
10
|
-
|
8
|
+
Author-email: LiveKit <support@livekit.io>
|
9
|
+
License-Expression: Apache-2.0
|
10
|
+
Keywords: audio,elevenlabs,livekit,realtime,video,webrtc
|
11
11
|
Classifier: Intended Audience :: Developers
|
12
12
|
Classifier: License :: OSI Approved :: Apache Software License
|
13
|
-
Classifier: Topic :: Multimedia :: Sound/Audio
|
14
|
-
Classifier: Topic :: Multimedia :: Video
|
15
|
-
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
16
13
|
Classifier: Programming Language :: Python :: 3
|
14
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
17
15
|
Classifier: Programming Language :: Python :: 3.9
|
18
16
|
Classifier: Programming Language :: Python :: 3.10
|
19
|
-
Classifier:
|
17
|
+
Classifier: Topic :: Multimedia :: Sound/Audio
|
18
|
+
Classifier: Topic :: Multimedia :: Video
|
19
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
20
20
|
Requires-Python: >=3.9.0
|
21
|
+
Requires-Dist: livekit-agents>=1.0.0.dev4
|
21
22
|
Description-Content-Type: text/markdown
|
22
|
-
Requires-Dist: livekit-agents[codecs]<1.0.0,>=0.12.16
|
23
|
-
Dynamic: classifier
|
24
|
-
Dynamic: description
|
25
|
-
Dynamic: description-content-type
|
26
|
-
Dynamic: home-page
|
27
|
-
Dynamic: keywords
|
28
|
-
Dynamic: license
|
29
|
-
Dynamic: project-url
|
30
|
-
Dynamic: requires-dist
|
31
|
-
Dynamic: requires-python
|
32
|
-
Dynamic: summary
|
33
23
|
|
34
24
|
# LiveKit Plugins Elevenlabs
|
35
25
|
|
@@ -21,9 +21,10 @@ import json
|
|
21
21
|
import os
|
22
22
|
import weakref
|
23
23
|
from dataclasses import dataclass
|
24
|
-
from typing import Any
|
24
|
+
from typing import Any
|
25
25
|
|
26
26
|
import aiohttp
|
27
|
+
|
27
28
|
from livekit.agents import (
|
28
29
|
APIConnectionError,
|
29
30
|
APIConnectOptions,
|
@@ -106,9 +107,9 @@ class TTS(tts.TTS):
|
|
106
107
|
base_url: str | None = None,
|
107
108
|
streaming_latency: int = 0,
|
108
109
|
inactivity_timeout: int = WS_INACTIVITY_TIMEOUT,
|
109
|
-
word_tokenizer:
|
110
|
+
word_tokenizer: tokenize.WordTokenizer | None = None,
|
110
111
|
enable_ssml_parsing: bool = False,
|
111
|
-
chunk_length_schedule: list[int] =
|
112
|
+
chunk_length_schedule: list[int] = None, # range is [50, 500]
|
112
113
|
http_session: aiohttp.ClientSession | None = None,
|
113
114
|
# deprecated
|
114
115
|
model_id: TTSModels | str | None = None,
|
@@ -131,6 +132,8 @@ class TTS(tts.TTS):
|
|
131
132
|
language (str | None): Language code for the TTS model, as of 10/24/24 only valid for "eleven_turbo_v2_5". Optional.
|
132
133
|
"""
|
133
134
|
|
135
|
+
if chunk_length_schedule is None:
|
136
|
+
chunk_length_schedule = [80, 120, 200, 260]
|
134
137
|
super().__init__(
|
135
138
|
capabilities=tts.TTSCapabilities(
|
136
139
|
streaming=True,
|
@@ -201,7 +204,7 @@ class TTS(tts.TTS):
|
|
201
204
|
def prewarm(self) -> None:
|
202
205
|
self._pool.prewarm()
|
203
206
|
|
204
|
-
async def list_voices(self) ->
|
207
|
+
async def list_voices(self) -> list[Voice]:
|
205
208
|
async with self._ensure_session().get(
|
206
209
|
f"{self._opts.base_url}/voices",
|
207
210
|
headers={AUTHORIZATION_HEADER: self._opts.api_key},
|
@@ -229,8 +232,8 @@ class TTS(tts.TTS):
|
|
229
232
|
self,
|
230
233
|
text: str,
|
231
234
|
*,
|
232
|
-
conn_options:
|
233
|
-
) ->
|
235
|
+
conn_options: APIConnectOptions | None = None,
|
236
|
+
) -> ChunkedStream:
|
234
237
|
return ChunkedStream(
|
235
238
|
tts=self,
|
236
239
|
input_text=text,
|
@@ -239,9 +242,7 @@ class TTS(tts.TTS):
|
|
239
242
|
session=self._ensure_session(),
|
240
243
|
)
|
241
244
|
|
242
|
-
def stream(
|
243
|
-
self, *, conn_options: Optional[APIConnectOptions] = None
|
244
|
-
) -> "SynthesizeStream":
|
245
|
+
def stream(self, *, conn_options: APIConnectOptions | None = None) -> SynthesizeStream:
|
245
246
|
stream = SynthesizeStream(tts=self, pool=self._pool, opts=self._opts)
|
246
247
|
self._streams.add(stream)
|
247
248
|
return stream
|
@@ -263,7 +264,7 @@ class ChunkedStream(tts.ChunkedStream):
|
|
263
264
|
tts: TTS,
|
264
265
|
input_text: str,
|
265
266
|
opts: _TTSOptions,
|
266
|
-
conn_options:
|
267
|
+
conn_options: APIConnectOptions | None = None,
|
267
268
|
session: aiohttp.ClientSession,
|
268
269
|
) -> None:
|
269
270
|
super().__init__(tts=tts, input_text=input_text, conn_options=conn_options)
|
@@ -407,17 +408,13 @@ class SynthesizeStream(tts.SynthesizeStream):
|
|
407
408
|
)
|
408
409
|
|
409
410
|
# 11labs protocol expects the first message to be an "init msg"
|
410
|
-
init_pkt =
|
411
|
-
text
|
412
|
-
voice_settings
|
413
|
-
dataclasses.asdict(self._opts.voice.settings)
|
414
|
-
)
|
411
|
+
init_pkt = {
|
412
|
+
"text": " ",
|
413
|
+
"voice_settings": _strip_nones(dataclasses.asdict(self._opts.voice.settings))
|
415
414
|
if self._opts.voice.settings
|
416
415
|
else None,
|
417
|
-
generation_config
|
418
|
-
|
419
|
-
),
|
420
|
-
)
|
416
|
+
"generation_config": {"chunk_length_schedule": self._opts.chunk_length_schedule},
|
417
|
+
}
|
421
418
|
await ws_conn.send_str(json.dumps(init_pkt))
|
422
419
|
|
423
420
|
@utils.log_exceptions(logger=logger)
|
@@ -440,7 +437,7 @@ class SynthesizeStream(tts.SynthesizeStream):
|
|
440
437
|
else:
|
441
438
|
continue
|
442
439
|
|
443
|
-
data_pkt =
|
440
|
+
data_pkt = {"text": f"{text} "} # must always end with a space
|
444
441
|
self._mark_started()
|
445
442
|
await ws_conn.send_str(json.dumps(data_pkt))
|
446
443
|
if xml_content:
|
@@ -487,9 +484,7 @@ class SynthesizeStream(tts.SynthesizeStream):
|
|
487
484
|
decoder.push(b64data)
|
488
485
|
|
489
486
|
if alignment := data.get("normalizedAlignment"):
|
490
|
-
received_text += "".join(
|
491
|
-
alignment.get("chars", [])
|
492
|
-
).replace(" ", "")
|
487
|
+
received_text += "".join(alignment.get("chars", [])).replace(" ", "")
|
493
488
|
if received_text == expected_text:
|
494
489
|
decoder.end_input()
|
495
490
|
break
|
@@ -534,7 +529,7 @@ class SynthesizeStream(tts.SynthesizeStream):
|
|
534
529
|
|
535
530
|
|
536
531
|
def _dict_to_voices_list(data: dict[str, Any]):
|
537
|
-
voices:
|
532
|
+
voices: list[Voice] = []
|
538
533
|
for voice in data["voices"]:
|
539
534
|
voices.append(
|
540
535
|
Voice(
|
@@ -0,0 +1,39 @@
|
|
1
|
+
[build-system]
|
2
|
+
requires = ["hatchling"]
|
3
|
+
build-backend = "hatchling.build"
|
4
|
+
|
5
|
+
[project]
|
6
|
+
name = "livekit-plugins-elevenlabs"
|
7
|
+
dynamic = ["version"]
|
8
|
+
description = "Agent Framework plugin for voice synthesis with ElevenLabs' API."
|
9
|
+
readme = "README.md"
|
10
|
+
license = "Apache-2.0"
|
11
|
+
requires-python = ">=3.9.0"
|
12
|
+
authors = [{ name = "LiveKit", email = "support@livekit.io" }]
|
13
|
+
keywords = ["webrtc", "realtime", "audio", "video", "livekit", "elevenlabs"]
|
14
|
+
classifiers = [
|
15
|
+
"Intended Audience :: Developers",
|
16
|
+
"License :: OSI Approved :: Apache Software License",
|
17
|
+
"Topic :: Multimedia :: Sound/Audio",
|
18
|
+
"Topic :: Multimedia :: Video",
|
19
|
+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
20
|
+
"Programming Language :: Python :: 3",
|
21
|
+
"Programming Language :: Python :: 3.9",
|
22
|
+
"Programming Language :: Python :: 3.10",
|
23
|
+
"Programming Language :: Python :: 3 :: Only",
|
24
|
+
]
|
25
|
+
dependencies = ["livekit-agents>=1.0.0.dev4"]
|
26
|
+
|
27
|
+
[project.urls]
|
28
|
+
Documentation = "https://docs.livekit.io"
|
29
|
+
Website = "https://livekit.io/"
|
30
|
+
Source = "https://github.com/livekit/agents"
|
31
|
+
|
32
|
+
[tool.hatch.version]
|
33
|
+
path = "livekit/plugins/elevenlabs/version.py"
|
34
|
+
|
35
|
+
[tool.hatch.build.targets.wheel]
|
36
|
+
packages = ["livekit"]
|
37
|
+
|
38
|
+
[tool.hatch.build.targets.sdist]
|
39
|
+
include = ["/livekit"]
|
@@ -1,46 +0,0 @@
|
|
1
|
-
Metadata-Version: 2.2
|
2
|
-
Name: livekit-plugins-elevenlabs
|
3
|
-
Version: 0.8.0
|
4
|
-
Summary: Agent Framework plugin for voice synthesis with ElevenLabs' API.
|
5
|
-
Home-page: https://github.com/livekit/agents
|
6
|
-
License: Apache-2.0
|
7
|
-
Project-URL: Documentation, https://docs.livekit.io
|
8
|
-
Project-URL: Website, https://livekit.io/
|
9
|
-
Project-URL: Source, https://github.com/livekit/agents
|
10
|
-
Keywords: webrtc,realtime,audio,video,livekit,elevenlabs
|
11
|
-
Classifier: Intended Audience :: Developers
|
12
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
13
|
-
Classifier: Topic :: Multimedia :: Sound/Audio
|
14
|
-
Classifier: Topic :: Multimedia :: Video
|
15
|
-
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
16
|
-
Classifier: Programming Language :: Python :: 3
|
17
|
-
Classifier: Programming Language :: Python :: 3.9
|
18
|
-
Classifier: Programming Language :: Python :: 3.10
|
19
|
-
Classifier: Programming Language :: Python :: 3 :: Only
|
20
|
-
Requires-Python: >=3.9.0
|
21
|
-
Description-Content-Type: text/markdown
|
22
|
-
Requires-Dist: livekit-agents[codecs]<1.0.0,>=0.12.16
|
23
|
-
Dynamic: classifier
|
24
|
-
Dynamic: description
|
25
|
-
Dynamic: description-content-type
|
26
|
-
Dynamic: home-page
|
27
|
-
Dynamic: keywords
|
28
|
-
Dynamic: license
|
29
|
-
Dynamic: project-url
|
30
|
-
Dynamic: requires-dist
|
31
|
-
Dynamic: requires-python
|
32
|
-
Dynamic: summary
|
33
|
-
|
34
|
-
# LiveKit Plugins Elevenlabs
|
35
|
-
|
36
|
-
Agent Framework plugin for voice synthesis with [ElevenLabs](https://elevenlabs.io/) API.
|
37
|
-
|
38
|
-
## Installation
|
39
|
-
|
40
|
-
```bash
|
41
|
-
pip install livekit-plugins-elevenlabs
|
42
|
-
```
|
43
|
-
|
44
|
-
## Pre-requisites
|
45
|
-
|
46
|
-
You'll need an API key from ElevenLabs. It can be set as an environment variable: `ELEVEN_API_KEY`
|
@@ -1,14 +0,0 @@
|
|
1
|
-
README.md
|
2
|
-
pyproject.toml
|
3
|
-
setup.py
|
4
|
-
livekit/plugins/elevenlabs/__init__.py
|
5
|
-
livekit/plugins/elevenlabs/log.py
|
6
|
-
livekit/plugins/elevenlabs/models.py
|
7
|
-
livekit/plugins/elevenlabs/py.typed
|
8
|
-
livekit/plugins/elevenlabs/tts.py
|
9
|
-
livekit/plugins/elevenlabs/version.py
|
10
|
-
livekit_plugins_elevenlabs.egg-info/PKG-INFO
|
11
|
-
livekit_plugins_elevenlabs.egg-info/SOURCES.txt
|
12
|
-
livekit_plugins_elevenlabs.egg-info/dependency_links.txt
|
13
|
-
livekit_plugins_elevenlabs.egg-info/requires.txt
|
14
|
-
livekit_plugins_elevenlabs.egg-info/top_level.txt
|
@@ -1 +0,0 @@
|
|
1
|
-
|
@@ -1 +0,0 @@
|
|
1
|
-
livekit-agents[codecs]<1.0.0,>=0.12.16
|
@@ -1 +0,0 @@
|
|
1
|
-
livekit
|
@@ -1,59 +0,0 @@
|
|
1
|
-
# Copyright 2023 LiveKit, Inc.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
import os
|
16
|
-
import pathlib
|
17
|
-
|
18
|
-
import setuptools
|
19
|
-
import setuptools.command.build_py
|
20
|
-
|
21
|
-
here = pathlib.Path(__file__).parent.resolve()
|
22
|
-
about = {}
|
23
|
-
with open(
|
24
|
-
os.path.join(here, "livekit", "plugins", "elevenlabs", "version.py"), "r"
|
25
|
-
) as f:
|
26
|
-
exec(f.read(), about)
|
27
|
-
|
28
|
-
|
29
|
-
setuptools.setup(
|
30
|
-
name="livekit-plugins-elevenlabs",
|
31
|
-
version=about["__version__"],
|
32
|
-
description="Agent Framework plugin for voice synthesis with ElevenLabs' API.",
|
33
|
-
long_description=(here / "README.md").read_text(encoding="utf-8"),
|
34
|
-
long_description_content_type="text/markdown",
|
35
|
-
url="https://github.com/livekit/agents",
|
36
|
-
cmdclass={},
|
37
|
-
classifiers=[
|
38
|
-
"Intended Audience :: Developers",
|
39
|
-
"License :: OSI Approved :: Apache Software License",
|
40
|
-
"Topic :: Multimedia :: Sound/Audio",
|
41
|
-
"Topic :: Multimedia :: Video",
|
42
|
-
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
43
|
-
"Programming Language :: Python :: 3",
|
44
|
-
"Programming Language :: Python :: 3.9",
|
45
|
-
"Programming Language :: Python :: 3.10",
|
46
|
-
"Programming Language :: Python :: 3 :: Only",
|
47
|
-
],
|
48
|
-
keywords=["webrtc", "realtime", "audio", "video", "livekit", "elevenlabs"],
|
49
|
-
license="Apache-2.0",
|
50
|
-
packages=setuptools.find_namespace_packages(include=["livekit.*"]),
|
51
|
-
python_requires=">=3.9.0",
|
52
|
-
install_requires=["livekit-agents[codecs]>=0.12.16,<1.0.0"],
|
53
|
-
package_data={"livekit.plugins.elevenlabs": ["py.typed"]},
|
54
|
-
project_urls={
|
55
|
-
"Documentation": "https://docs.livekit.io",
|
56
|
-
"Website": "https://livekit.io/",
|
57
|
-
"Source": "https://github.com/livekit/agents",
|
58
|
-
},
|
59
|
-
)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|