livekit-plugins-cartesia 0.4.11__tar.gz → 1.0.0.dev5__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.
Files changed (18) hide show
  1. livekit_plugins_cartesia-1.0.0.dev5/.gitignore +168 -0
  2. {livekit_plugins_cartesia-0.4.11 → livekit_plugins_cartesia-1.0.0.dev5}/PKG-INFO +10 -20
  3. {livekit_plugins_cartesia-0.4.11 → livekit_plugins_cartesia-1.0.0.dev5}/livekit/plugins/cartesia/models.py +1 -1
  4. {livekit_plugins_cartesia-0.4.11 → livekit_plugins_cartesia-1.0.0.dev5}/livekit/plugins/cartesia/tts.py +12 -23
  5. {livekit_plugins_cartesia-0.4.11 → livekit_plugins_cartesia-1.0.0.dev5}/livekit/plugins/cartesia/version.py +1 -1
  6. livekit_plugins_cartesia-1.0.0.dev5/pyproject.toml +39 -0
  7. livekit_plugins_cartesia-0.4.11/livekit_plugins_cartesia.egg-info/PKG-INFO +0 -46
  8. livekit_plugins_cartesia-0.4.11/livekit_plugins_cartesia.egg-info/SOURCES.txt +0 -14
  9. livekit_plugins_cartesia-0.4.11/livekit_plugins_cartesia.egg-info/dependency_links.txt +0 -1
  10. livekit_plugins_cartesia-0.4.11/livekit_plugins_cartesia.egg-info/requires.txt +0 -1
  11. livekit_plugins_cartesia-0.4.11/livekit_plugins_cartesia.egg-info/top_level.txt +0 -1
  12. livekit_plugins_cartesia-0.4.11/pyproject.toml +0 -3
  13. livekit_plugins_cartesia-0.4.11/setup.cfg +0 -4
  14. livekit_plugins_cartesia-0.4.11/setup.py +0 -56
  15. {livekit_plugins_cartesia-0.4.11 → livekit_plugins_cartesia-1.0.0.dev5}/README.md +0 -0
  16. {livekit_plugins_cartesia-0.4.11 → livekit_plugins_cartesia-1.0.0.dev5}/livekit/plugins/cartesia/__init__.py +0 -0
  17. {livekit_plugins_cartesia-0.4.11 → livekit_plugins_cartesia-1.0.0.dev5}/livekit/plugins/cartesia/log.py +0 -0
  18. {livekit_plugins_cartesia-0.4.11 → livekit_plugins_cartesia-1.0.0.dev5}/livekit/plugins/cartesia/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.2
1
+ Metadata-Version: 2.4
2
2
  Name: livekit-plugins-cartesia
3
- Version: 0.4.11
3
+ Version: 1.0.0.dev5
4
4
  Summary: LiveKit Agents Plugin for Cartesia
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
- Keywords: webrtc,realtime,audio,video,livekit
8
+ Author-email: LiveKit <support@livekit.io>
9
+ License-Expression: Apache-2.0
10
+ Keywords: audio,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: Programming Language :: Python :: 3 :: Only
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.dev5
21
22
  Description-Content-Type: text/markdown
22
- Requires-Dist: livekit-agents<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 Cartesia
35
25
 
@@ -8,7 +8,7 @@ TTSEncoding = Literal[
8
8
  # "pcm_alaw",
9
9
  ]
10
10
 
11
- TTSModels = Literal["sonic", "sonic-2", "sonic-lite", "sonic-preview", "sonic-turbo"]
11
+ TTSModels = Literal["sonic-english", "sonic-multilingual"]
12
12
  TTSLanguages = Literal["en", "es", "fr", "de", "pt", "zh", "ja"]
13
13
  TTSDefaultVoiceId = "794f9389-aac1-45b6-b726-9d9369183238"
14
14
  TTSVoiceSpeed = Literal["fastest", "fast", "normal", "slow", "slowest"]
@@ -20,9 +20,10 @@ import json
20
20
  import os
21
21
  import weakref
22
22
  from dataclasses import dataclass
23
- from typing import Any, Optional
23
+ from typing import Any
24
24
 
25
25
  import aiohttp
26
+
26
27
  from livekit.agents import (
27
28
  APIConnectionError,
28
29
  APIConnectOptions,
@@ -34,13 +35,7 @@ from livekit.agents import (
34
35
  )
35
36
 
36
37
  from .log import logger
37
- from .models import (
38
- TTSDefaultVoiceId,
39
- TTSEncoding,
40
- TTSModels,
41
- TTSVoiceEmotion,
42
- TTSVoiceSpeed,
43
- )
38
+ from .models import TTSDefaultVoiceId, TTSEncoding, TTSModels, TTSVoiceEmotion, TTSVoiceSpeed
44
39
 
45
40
  API_AUTH_HEADER = "X-API-Key"
46
41
  API_VERSION_HEADER = "Cartesia-Version"
@@ -73,7 +68,7 @@ class TTS(tts.TTS):
73
68
  def __init__(
74
69
  self,
75
70
  *,
76
- model: TTSModels | str = "sonic-2",
71
+ model: TTSModels | str = "sonic",
77
72
  language: str = "en",
78
73
  encoding: TTSEncoding = "pcm_s16le",
79
74
  voice: str | list[float] = TTSDefaultVoiceId,
@@ -90,7 +85,7 @@ class TTS(tts.TTS):
90
85
  See https://docs.cartesia.ai/reference/web-socket/stream-speech/stream-speech for more details on the the Cartesia API.
91
86
 
92
87
  Args:
93
- model (TTSModels, optional): The Cartesia TTS model to use. Defaults to "sonic-2".
88
+ model (TTSModels, optional): The Cartesia TTS model to use. Defaults to "sonic-english".
94
89
  language (str, optional): The language code for synthesis. Defaults to "en".
95
90
  encoding (TTSEncoding, optional): The audio encoding format. Defaults to "pcm_s16le".
96
91
  voice (str | list[float], optional): The voice ID or embedding array.
@@ -137,9 +132,7 @@ class TTS(tts.TTS):
137
132
  url = self._opts.get_ws_url(
138
133
  f"/tts/websocket?api_key={self._opts.api_key}&cartesia_version={API_VERSION}"
139
134
  )
140
- return await asyncio.wait_for(
141
- session.ws_connect(url), self._conn_options.timeout
142
- )
135
+ return await asyncio.wait_for(session.ws_connect(url), self._conn_options.timeout)
143
136
 
144
137
  async def _close_ws(self, ws: aiohttp.ClientWebSocketResponse):
145
138
  await ws.close()
@@ -156,7 +149,7 @@ class TTS(tts.TTS):
156
149
  def update_options(
157
150
  self,
158
151
  *,
159
- model: TTSModels | str | None = None,
152
+ model: TTSModels | None = None,
160
153
  language: str | None = None,
161
154
  voice: str | list[float] | None = None,
162
155
  speed: TTSVoiceSpeed | float | None = None,
@@ -169,7 +162,7 @@ class TTS(tts.TTS):
169
162
  and emotion. If any parameter is not provided, the existing value will be retained.
170
163
 
171
164
  Args:
172
- model (TTSModels, optional): The Cartesia TTS model to use. Defaults to "sonic-2".
165
+ model (TTSModels, optional): The Cartesia TTS model to use. Defaults to "sonic-english".
173
166
  language (str, optional): The language code for synthesis. Defaults to "en".
174
167
  voice (str | list[float], optional): The voice ID or embedding array.
175
168
  speed (TTSVoiceSpeed | float, optional): Voice Control - Speed (https://docs.cartesia.ai/user-guides/voice-control)
@@ -186,7 +179,7 @@ class TTS(tts.TTS):
186
179
  self,
187
180
  text: str,
188
181
  *,
189
- conn_options: Optional[APIConnectOptions] = None,
182
+ conn_options: APIConnectOptions | None = None,
190
183
  ) -> ChunkedStream:
191
184
  return ChunkedStream(
192
185
  tts=self,
@@ -196,16 +189,12 @@ class TTS(tts.TTS):
196
189
  session=self._ensure_session(),
197
190
  )
198
191
 
199
- def stream(
200
- self, *, conn_options: Optional[APIConnectOptions] = None
201
- ) -> "SynthesizeStream":
202
- stream = SynthesizeStream(
192
+ def stream(self, *, conn_options: APIConnectOptions | None = None) -> SynthesizeStream:
193
+ return SynthesizeStream(
203
194
  tts=self,
204
195
  pool=self._pool,
205
196
  opts=self._opts,
206
197
  )
207
- self._streams.add(stream)
208
- return stream
209
198
 
210
199
  async def aclose(self) -> None:
211
200
  for stream in list(self._streams):
@@ -225,7 +214,7 @@ class ChunkedStream(tts.ChunkedStream):
225
214
  input_text: str,
226
215
  opts: _TTSOptions,
227
216
  session: aiohttp.ClientSession,
228
- conn_options: Optional[APIConnectOptions] = None,
217
+ conn_options: APIConnectOptions | None = None,
229
218
  ) -> None:
230
219
  super().__init__(tts=tts, input_text=input_text, conn_options=conn_options)
231
220
  self._opts, self._session = opts, session
@@ -12,4 +12,4 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- __version__ = "0.4.11"
15
+ __version__ = "1.0.0.dev5"
@@ -0,0 +1,39 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "livekit-plugins-cartesia"
7
+ dynamic = ["version"]
8
+ description = "LiveKit Agents Plugin for Cartesia"
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"]
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.dev5"]
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/cartesia/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-cartesia
3
- Version: 0.4.11
4
- Summary: LiveKit Agents Plugin for Cartesia
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
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<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 Cartesia
35
-
36
- Agent Framework plugin for voice synthesis with [Cartesia](https://cartesia.ai/) API.
37
-
38
- ## Installation
39
-
40
- ```bash
41
- pip install livekit-plugins-cartesia
42
- ```
43
-
44
- ## Pre-requisites
45
-
46
- You'll need an API key from Cartesia. It can be set as an environment variable: `CARTESIA_API_KEY`
@@ -1,14 +0,0 @@
1
- README.md
2
- pyproject.toml
3
- setup.py
4
- livekit/plugins/cartesia/__init__.py
5
- livekit/plugins/cartesia/log.py
6
- livekit/plugins/cartesia/models.py
7
- livekit/plugins/cartesia/py.typed
8
- livekit/plugins/cartesia/tts.py
9
- livekit/plugins/cartesia/version.py
10
- livekit_plugins_cartesia.egg-info/PKG-INFO
11
- livekit_plugins_cartesia.egg-info/SOURCES.txt
12
- livekit_plugins_cartesia.egg-info/dependency_links.txt
13
- livekit_plugins_cartesia.egg-info/requires.txt
14
- livekit_plugins_cartesia.egg-info/top_level.txt
@@ -1 +0,0 @@
1
- livekit-agents<1.0.0,>=0.12.16
@@ -1,3 +0,0 @@
1
- [build-system]
2
- requires = ["setuptools>=61.0"]
3
- build-backend = "setuptools.build_meta"
@@ -1,4 +0,0 @@
1
- [egg_info]
2
- tag_build =
3
- tag_date = 0
4
-
@@ -1,56 +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(os.path.join(here, "livekit", "plugins", "cartesia", "version.py"), "r") as f:
24
- exec(f.read(), about)
25
-
26
-
27
- setuptools.setup(
28
- name="livekit-plugins-cartesia",
29
- version=about["__version__"],
30
- description="LiveKit Agents Plugin for Cartesia",
31
- long_description=(here / "README.md").read_text(encoding="utf-8"),
32
- long_description_content_type="text/markdown",
33
- url="https://github.com/livekit/agents",
34
- cmdclass={},
35
- classifiers=[
36
- "Intended Audience :: Developers",
37
- "License :: OSI Approved :: Apache Software License",
38
- "Topic :: Multimedia :: Sound/Audio",
39
- "Topic :: Multimedia :: Video",
40
- "Topic :: Scientific/Engineering :: Artificial Intelligence",
41
- "Programming Language :: Python :: 3",
42
- "Programming Language :: Python :: 3.9",
43
- "Programming Language :: Python :: 3.10",
44
- "Programming Language :: Python :: 3 :: Only",
45
- ],
46
- keywords=["webrtc", "realtime", "audio", "video", "livekit"],
47
- license="Apache-2.0",
48
- packages=setuptools.find_namespace_packages(include=["livekit.*"]),
49
- python_requires=">=3.9.0",
50
- install_requires=["livekit-agents>=0.12.16,<1.0.0"],
51
- project_urls={
52
- "Documentation": "https://docs.livekit.io",
53
- "Website": "https://livekit.io/",
54
- "Source": "https://github.com/livekit/agents",
55
- },
56
- )