cartesia 2.0.0b1__tar.gz → 2.0.0b2__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.
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/PKG-INFO +71 -40
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/README.md +70 -39
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/pyproject.toml +1 -1
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/core/client_wrapper.py +1 -1
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/api_status/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/api_status/client.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/api_status/requests/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/api_status/requests/api_info.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/api_status/types/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/api_status/types/api_info.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/base_client.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/client.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/core/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/core/api_error.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/core/datetime_utils.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/core/file.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/core/http_client.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/core/jsonable_encoder.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/core/pydantic_utilities.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/core/query_encoder.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/core/remove_none_from_dict.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/core/request_options.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/core/serialization.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/datasets/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/datasets/client.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/datasets/requests/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/datasets/requests/create_dataset_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/datasets/requests/dataset.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/datasets/requests/dataset_file.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/datasets/requests/paginated_dataset_files.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/datasets/requests/paginated_datasets.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/datasets/types/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/datasets/types/create_dataset_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/datasets/types/dataset.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/datasets/types/dataset_file.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/datasets/types/file_purpose.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/datasets/types/paginated_dataset_files.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/datasets/types/paginated_datasets.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/embedding/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/embedding/types/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/embedding/types/embedding.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/environment.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/infill/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/infill/client.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/py.typed +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/_async_websocket.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/_websocket.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/client.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/cancel_context_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/controls.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/generation_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/mp_3_output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/phoneme_timestamps.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/raw_output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/speed.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/tts_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/tts_request_embedding_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/tts_request_id_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/tts_request_voice_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/wav_output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_base_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_chunk_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_done_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_error_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_flush_done_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_phoneme_timestamps_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_raw_output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_stream_options.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_timestamps_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_tts_output.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_tts_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/word_timestamps.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/socket_client.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/cancel_context_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/context_id.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/controls.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/emotion.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/flush_id.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/generation_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/mp_3_output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/natural_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/numerical_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/phoneme_timestamps.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/raw_encoding.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/raw_output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/speed.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/supported_language.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/tts_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/tts_request_embedding_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/tts_request_id_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/tts_request_voice_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/wav_output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/web_socket_base_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/web_socket_chunk_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/web_socket_done_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/web_socket_error_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/web_socket_flush_done_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/web_socket_phoneme_timestamps_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/web_socket_raw_output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/web_socket_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/web_socket_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/web_socket_stream_options.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/web_socket_timestamps_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/web_socket_tts_output.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/web_socket_tts_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/word_timestamps.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/utils/constants.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/utils/tts.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/utils/types.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/version.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voice_changer/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voice_changer/client.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voice_changer/requests/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voice_changer/requests/streaming_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voice_changer/types/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voice_changer/types/output_format_container.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voice_changer/types/streaming_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/client.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/requests/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/requests/create_voice_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/requests/embedding_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/requests/embedding_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/requests/id_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/requests/localize_dialect.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/requests/localize_voice_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/requests/mix_voice_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/requests/mix_voices_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/requests/update_voice_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/requests/voice.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/requests/voice_metadata.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/base_voice_id.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/clone_mode.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/create_voice_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/embedding_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/embedding_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/gender.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/id_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/localize_dialect.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/localize_english_dialect.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/localize_portuguese_dialect.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/localize_spanish_dialect.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/localize_target_language.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/localize_voice_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/mix_voice_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/mix_voices_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/update_voice_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/voice.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/voice_id.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/voice_metadata.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/weight.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: cartesia
|
3
|
-
Version: 2.0.
|
3
|
+
Version: 2.0.0b2
|
4
4
|
Summary:
|
5
5
|
Requires-Python: >=3.8,<4.0
|
6
6
|
Classifier: Intended Audience :: Developers
|
@@ -57,7 +57,7 @@ A full reference for this library is available [here](./reference.md).
|
|
57
57
|
from cartesia import Cartesia
|
58
58
|
import os
|
59
59
|
|
60
|
-
client = Cartesia(api_key=os.
|
60
|
+
client = Cartesia(api_key=os.getenv("CARTESIA_API_KEY"))
|
61
61
|
|
62
62
|
# Get all available voices
|
63
63
|
voices = client.voices.list()
|
@@ -65,21 +65,32 @@ print(voices)
|
|
65
65
|
|
66
66
|
# Get a specific voice
|
67
67
|
voice = client.voices.get(id="a0e99841-438c-4a64-b679-ae501e7d6091")
|
68
|
-
print("The embedding for", voice
|
68
|
+
print("The embedding for", voice.name, "is", voice.embedding)
|
69
69
|
|
70
|
-
# Clone a voice using
|
71
|
-
|
70
|
+
# Clone a voice using file data
|
71
|
+
cloned_voice = client.voices.clone(
|
72
|
+
clip=open("path/to/voice.wav", "rb"),
|
73
|
+
name="Test cloned voice",
|
74
|
+
language="en",
|
75
|
+
mode="similarity", # or "stability"
|
76
|
+
enhance=False, # use enhance=True to clean and denoise the cloning audio
|
77
|
+
description="Test voice description"
|
78
|
+
)
|
72
79
|
|
73
80
|
# Mix voices together
|
74
|
-
|
75
|
-
[
|
81
|
+
mixed_voice = client.voices.mix(
|
82
|
+
voices=[
|
83
|
+
{"id": "voice_id_1", "weight": 0.25},
|
84
|
+
{"id": "voice_id_2", "weight": 0.75}
|
85
|
+
]
|
76
86
|
)
|
77
87
|
|
78
|
-
# Create a new voice
|
88
|
+
# Create a new voice from embedding
|
79
89
|
new_voice = client.voices.create(
|
80
|
-
name="
|
81
|
-
description="
|
82
|
-
embedding=
|
90
|
+
name="Test Voice",
|
91
|
+
description="Test voice description",
|
92
|
+
embedding=[...], # List[float] with 192 dimensions
|
93
|
+
language="en"
|
83
94
|
)
|
84
95
|
```
|
85
96
|
|
@@ -90,15 +101,22 @@ Instantiate and use the client with the following:
|
|
90
101
|
```python
|
91
102
|
from cartesia import Cartesia
|
92
103
|
from cartesia.tts import OutputFormat_Raw, TtsRequestIdSpecifier
|
104
|
+
import os
|
93
105
|
|
94
106
|
client = Cartesia(
|
95
|
-
api_key="
|
107
|
+
api_key=os.getenv("CARTESIA_API_KEY"),
|
96
108
|
)
|
97
109
|
client.tts.bytes(
|
98
110
|
model_id="sonic-english",
|
99
111
|
transcript="Hello, world!",
|
100
|
-
voice={
|
101
|
-
|
112
|
+
voice={
|
113
|
+
"mode": "id",
|
114
|
+
"id": "694f9389-aac1-45b6-b726-9d9369183238",
|
115
|
+
"experimental_controls": {
|
116
|
+
"speed": 0.5, # range between [-1.0, 1.0], or "slow", "fastest", etc.
|
117
|
+
"emotion": ["positivity", "curiosity:low"] # list of emotions with optional intensity
|
118
|
+
}
|
119
|
+
},
|
102
120
|
language="en",
|
103
121
|
output_format={
|
104
122
|
"container": "raw",
|
@@ -114,17 +132,17 @@ The SDK also exports an `async` client so that you can make non-blocking calls t
|
|
114
132
|
|
115
133
|
```python
|
116
134
|
import asyncio
|
135
|
+
import os
|
117
136
|
|
118
137
|
from cartesia import AsyncCartesia
|
119
138
|
from cartesia.tts import OutputFormat_Raw, TtsRequestIdSpecifier
|
120
139
|
|
121
140
|
client = AsyncCartesia(
|
122
|
-
api_key="
|
141
|
+
api_key=os.getenv("CARTESIA_API_KEY"),
|
123
142
|
)
|
124
143
|
|
125
|
-
|
126
144
|
async def main() -> None:
|
127
|
-
|
145
|
+
async for output in client.tts.bytes(
|
128
146
|
model_id="sonic-english",
|
129
147
|
transcript="Hello, world!",
|
130
148
|
voice={"id": "694f9389-aac1-45b6-b726-9d9369183238"},
|
@@ -134,7 +152,8 @@ async def main() -> None:
|
|
134
152
|
"sample_rate": 44100,
|
135
153
|
"encoding": "pcm_f32le",
|
136
154
|
},
|
137
|
-
)
|
155
|
+
):
|
156
|
+
print(f"Received chunk of size: {len(output)}")
|
138
157
|
|
139
158
|
|
140
159
|
asyncio.run(main())
|
@@ -162,26 +181,38 @@ The SDK supports streaming responses, as well, the response will be a generator
|
|
162
181
|
```python
|
163
182
|
from cartesia import Cartesia
|
164
183
|
from cartesia.tts import Controls, OutputFormat_RawParams, TtsRequestIdSpecifierParams
|
184
|
+
import os
|
165
185
|
|
166
|
-
|
167
|
-
|
168
|
-
)
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
186
|
+
def get_tts_chunks():
|
187
|
+
client = Cartesia(
|
188
|
+
api_key=os.getenv("CARTESIA_API_KEY"),
|
189
|
+
)
|
190
|
+
response = client.tts.sse(
|
191
|
+
model_id="sonic",
|
192
|
+
transcript="Hello world!",
|
193
|
+
voice={
|
194
|
+
"id": "f9836c6e-a0bd-460e-9d3c-f7299fa60f94",
|
195
|
+
"experimental_controls": {
|
196
|
+
"speed": "normal",
|
197
|
+
"emotion": [],
|
198
|
+
},
|
177
199
|
},
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
200
|
+
language="en",
|
201
|
+
output_format={
|
202
|
+
"container": "raw",
|
203
|
+
"encoding": "pcm_f32le",
|
204
|
+
"sample_rate": 44100,
|
205
|
+
},
|
206
|
+
)
|
207
|
+
|
208
|
+
audio_chunks = []
|
209
|
+
for chunk in response:
|
210
|
+
audio_chunks.append(chunk)
|
211
|
+
return audio_chunks
|
212
|
+
|
213
|
+
chunks = get_tts_chunks()
|
214
|
+
for chunk in chunks:
|
215
|
+
print(f"Received chunk of size: {len(chunk.data)}")
|
185
216
|
```
|
186
217
|
|
187
218
|
## WebSocket
|
@@ -190,16 +221,16 @@ for chunk in response:
|
|
190
221
|
from cartesia import Cartesia
|
191
222
|
from cartesia.tts import TtsRequestEmbeddingSpecifierParams, OutputFormat_RawParams
|
192
223
|
import pyaudio
|
224
|
+
import os
|
193
225
|
|
194
226
|
client = Cartesia(
|
195
|
-
api_key="
|
227
|
+
api_key=os.getenv("CARTESIA_API_KEY"),
|
196
228
|
)
|
197
229
|
voice_id = "a0e99841-438c-4a64-b679-ae501e7d6091"
|
198
|
-
voice = client.voices.get(id=voice_id)
|
199
230
|
transcript = "Hello! Welcome to Cartesia"
|
200
231
|
|
201
232
|
# You can check out our models at https://docs.cartesia.ai/getting-started/available-models
|
202
|
-
model_id = "sonic
|
233
|
+
model_id = "sonic"
|
203
234
|
|
204
235
|
p = pyaudio.PyAudio()
|
205
236
|
rate = 22050
|
@@ -213,7 +244,7 @@ ws = client.tts.websocket()
|
|
213
244
|
for output in ws.send(
|
214
245
|
model_id=model_id,
|
215
246
|
transcript=transcript,
|
216
|
-
voice={"
|
247
|
+
voice={"id": voice_id},
|
217
248
|
stream=True,
|
218
249
|
output_format={
|
219
250
|
"container": "raw",
|
@@ -25,7 +25,7 @@ A full reference for this library is available [here](./reference.md).
|
|
25
25
|
from cartesia import Cartesia
|
26
26
|
import os
|
27
27
|
|
28
|
-
client = Cartesia(api_key=os.
|
28
|
+
client = Cartesia(api_key=os.getenv("CARTESIA_API_KEY"))
|
29
29
|
|
30
30
|
# Get all available voices
|
31
31
|
voices = client.voices.list()
|
@@ -33,21 +33,32 @@ print(voices)
|
|
33
33
|
|
34
34
|
# Get a specific voice
|
35
35
|
voice = client.voices.get(id="a0e99841-438c-4a64-b679-ae501e7d6091")
|
36
|
-
print("The embedding for", voice
|
36
|
+
print("The embedding for", voice.name, "is", voice.embedding)
|
37
37
|
|
38
|
-
# Clone a voice using
|
39
|
-
|
38
|
+
# Clone a voice using file data
|
39
|
+
cloned_voice = client.voices.clone(
|
40
|
+
clip=open("path/to/voice.wav", "rb"),
|
41
|
+
name="Test cloned voice",
|
42
|
+
language="en",
|
43
|
+
mode="similarity", # or "stability"
|
44
|
+
enhance=False, # use enhance=True to clean and denoise the cloning audio
|
45
|
+
description="Test voice description"
|
46
|
+
)
|
40
47
|
|
41
48
|
# Mix voices together
|
42
|
-
|
43
|
-
[
|
49
|
+
mixed_voice = client.voices.mix(
|
50
|
+
voices=[
|
51
|
+
{"id": "voice_id_1", "weight": 0.25},
|
52
|
+
{"id": "voice_id_2", "weight": 0.75}
|
53
|
+
]
|
44
54
|
)
|
45
55
|
|
46
|
-
# Create a new voice
|
56
|
+
# Create a new voice from embedding
|
47
57
|
new_voice = client.voices.create(
|
48
|
-
name="
|
49
|
-
description="
|
50
|
-
embedding=
|
58
|
+
name="Test Voice",
|
59
|
+
description="Test voice description",
|
60
|
+
embedding=[...], # List[float] with 192 dimensions
|
61
|
+
language="en"
|
51
62
|
)
|
52
63
|
```
|
53
64
|
|
@@ -58,15 +69,22 @@ Instantiate and use the client with the following:
|
|
58
69
|
```python
|
59
70
|
from cartesia import Cartesia
|
60
71
|
from cartesia.tts import OutputFormat_Raw, TtsRequestIdSpecifier
|
72
|
+
import os
|
61
73
|
|
62
74
|
client = Cartesia(
|
63
|
-
api_key="
|
75
|
+
api_key=os.getenv("CARTESIA_API_KEY"),
|
64
76
|
)
|
65
77
|
client.tts.bytes(
|
66
78
|
model_id="sonic-english",
|
67
79
|
transcript="Hello, world!",
|
68
|
-
voice={
|
69
|
-
|
80
|
+
voice={
|
81
|
+
"mode": "id",
|
82
|
+
"id": "694f9389-aac1-45b6-b726-9d9369183238",
|
83
|
+
"experimental_controls": {
|
84
|
+
"speed": 0.5, # range between [-1.0, 1.0], or "slow", "fastest", etc.
|
85
|
+
"emotion": ["positivity", "curiosity:low"] # list of emotions with optional intensity
|
86
|
+
}
|
87
|
+
},
|
70
88
|
language="en",
|
71
89
|
output_format={
|
72
90
|
"container": "raw",
|
@@ -82,17 +100,17 @@ The SDK also exports an `async` client so that you can make non-blocking calls t
|
|
82
100
|
|
83
101
|
```python
|
84
102
|
import asyncio
|
103
|
+
import os
|
85
104
|
|
86
105
|
from cartesia import AsyncCartesia
|
87
106
|
from cartesia.tts import OutputFormat_Raw, TtsRequestIdSpecifier
|
88
107
|
|
89
108
|
client = AsyncCartesia(
|
90
|
-
api_key="
|
109
|
+
api_key=os.getenv("CARTESIA_API_KEY"),
|
91
110
|
)
|
92
111
|
|
93
|
-
|
94
112
|
async def main() -> None:
|
95
|
-
|
113
|
+
async for output in client.tts.bytes(
|
96
114
|
model_id="sonic-english",
|
97
115
|
transcript="Hello, world!",
|
98
116
|
voice={"id": "694f9389-aac1-45b6-b726-9d9369183238"},
|
@@ -102,7 +120,8 @@ async def main() -> None:
|
|
102
120
|
"sample_rate": 44100,
|
103
121
|
"encoding": "pcm_f32le",
|
104
122
|
},
|
105
|
-
)
|
123
|
+
):
|
124
|
+
print(f"Received chunk of size: {len(output)}")
|
106
125
|
|
107
126
|
|
108
127
|
asyncio.run(main())
|
@@ -130,26 +149,38 @@ The SDK supports streaming responses, as well, the response will be a generator
|
|
130
149
|
```python
|
131
150
|
from cartesia import Cartesia
|
132
151
|
from cartesia.tts import Controls, OutputFormat_RawParams, TtsRequestIdSpecifierParams
|
152
|
+
import os
|
133
153
|
|
134
|
-
|
135
|
-
|
136
|
-
)
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
154
|
+
def get_tts_chunks():
|
155
|
+
client = Cartesia(
|
156
|
+
api_key=os.getenv("CARTESIA_API_KEY"),
|
157
|
+
)
|
158
|
+
response = client.tts.sse(
|
159
|
+
model_id="sonic",
|
160
|
+
transcript="Hello world!",
|
161
|
+
voice={
|
162
|
+
"id": "f9836c6e-a0bd-460e-9d3c-f7299fa60f94",
|
163
|
+
"experimental_controls": {
|
164
|
+
"speed": "normal",
|
165
|
+
"emotion": [],
|
166
|
+
},
|
145
167
|
},
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
168
|
+
language="en",
|
169
|
+
output_format={
|
170
|
+
"container": "raw",
|
171
|
+
"encoding": "pcm_f32le",
|
172
|
+
"sample_rate": 44100,
|
173
|
+
},
|
174
|
+
)
|
175
|
+
|
176
|
+
audio_chunks = []
|
177
|
+
for chunk in response:
|
178
|
+
audio_chunks.append(chunk)
|
179
|
+
return audio_chunks
|
180
|
+
|
181
|
+
chunks = get_tts_chunks()
|
182
|
+
for chunk in chunks:
|
183
|
+
print(f"Received chunk of size: {len(chunk.data)}")
|
153
184
|
```
|
154
185
|
|
155
186
|
## WebSocket
|
@@ -158,16 +189,16 @@ for chunk in response:
|
|
158
189
|
from cartesia import Cartesia
|
159
190
|
from cartesia.tts import TtsRequestEmbeddingSpecifierParams, OutputFormat_RawParams
|
160
191
|
import pyaudio
|
192
|
+
import os
|
161
193
|
|
162
194
|
client = Cartesia(
|
163
|
-
api_key="
|
195
|
+
api_key=os.getenv("CARTESIA_API_KEY"),
|
164
196
|
)
|
165
197
|
voice_id = "a0e99841-438c-4a64-b679-ae501e7d6091"
|
166
|
-
voice = client.voices.get(id=voice_id)
|
167
198
|
transcript = "Hello! Welcome to Cartesia"
|
168
199
|
|
169
200
|
# You can check out our models at https://docs.cartesia.ai/getting-started/available-models
|
170
|
-
model_id = "sonic
|
201
|
+
model_id = "sonic"
|
171
202
|
|
172
203
|
p = pyaudio.PyAudio()
|
173
204
|
rate = 22050
|
@@ -181,7 +212,7 @@ ws = client.tts.websocket()
|
|
181
212
|
for output in ws.send(
|
182
213
|
model_id=model_id,
|
183
214
|
transcript=transcript,
|
184
|
-
voice={"
|
215
|
+
voice={"id": voice_id},
|
185
216
|
stream=True,
|
186
217
|
output_format={
|
187
218
|
"container": "raw",
|
@@ -16,7 +16,7 @@ class BaseClientWrapper:
|
|
16
16
|
headers: typing.Dict[str, str] = {
|
17
17
|
"X-Fern-Language": "Python",
|
18
18
|
"X-Fern-SDK-Name": "cartesia",
|
19
|
-
"X-Fern-SDK-Version": "2.0.
|
19
|
+
"X-Fern-SDK-Version": "2.0.0b2",
|
20
20
|
}
|
21
21
|
headers["X-API-Key"] = self.api_key
|
22
22
|
headers["Cartesia-Version"] = "2024-06-10"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/datasets/requests/create_dataset_request.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/datasets/requests/paginated_dataset_files.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/datasets/types/paginated_dataset_files.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/tts_request_embedding_specifier.py
RENAMED
File without changes
|
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/tts_request_voice_specifier.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_chunk_response.py
RENAMED
File without changes
|
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_error_response.py
RENAMED
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_flush_done_response.py
RENAMED
File without changes
|
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_raw_output_format.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_stream_options.py
RENAMED
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/requests/web_socket_timestamps_response.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/tts_request_embedding_specifier.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/web_socket_flush_done_response.py
RENAMED
File without changes
|
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/web_socket_raw_output_format.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/tts/types/web_socket_timestamps_response.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voice_changer/requests/streaming_response.py
RENAMED
File without changes
|
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voice_changer/types/output_format_container.py
RENAMED
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voice_changer/types/streaming_response.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/requests/localize_voice_request.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{cartesia-2.0.0b1 → cartesia-2.0.0b2}/src/cartesia/voices/types/localize_portuguese_dialect.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|