cartesia 2.0.0b1__tar.gz → 2.0.0b7__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.0b7}/PKG-INFO +151 -49
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/README.md +150 -48
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/pyproject.toml +1 -1
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/__init__.py +8 -4
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/base_client.py +0 -4
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/core/__init__.py +3 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/core/client_wrapper.py +2 -2
- cartesia-2.0.0b7/src/cartesia/core/pagination.py +88 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/infill/client.py +4 -4
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/_async_websocket.py +48 -1
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/_websocket.py +44 -3
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/client.py +4 -4
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/generation_request.py +5 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/web_socket_chunk_response.py +3 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/web_socket_response.py +2 -1
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/web_socket_tts_request.py +1 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/emotion.py +5 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/generation_request.py +5 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/web_socket_chunk_response.py +3 -1
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/web_socket_response.py +2 -1
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/web_socket_tts_output.py +2 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/web_socket_tts_request.py +1 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/utils/constants.py +2 -2
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voice_changer/requests/streaming_response.py +2 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voice_changer/types/streaming_response.py +2 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/__init__.py +8 -4
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/client.py +285 -169
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/requests/__init__.py +2 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/requests/create_voice_request.py +0 -2
- cartesia-2.0.0b7/src/cartesia/voices/requests/get_voices_response.py +24 -0
- cartesia-2.0.0b7/src/cartesia/voices/requests/localize_dialect.py +6 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/requests/voice.py +13 -9
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/types/__init__.py +6 -4
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/types/create_voice_request.py +0 -2
- cartesia-2.0.0b7/src/cartesia/voices/types/gender_presentation.py +5 -0
- cartesia-2.0.0b7/src/cartesia/voices/types/get_voices_response.py +34 -0
- cartesia-2.0.0b7/src/cartesia/voices/types/localize_dialect.py +6 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/types/voice.py +13 -9
- cartesia-2.0.0b7/src/cartesia/voices/types/voice_expand_options.py +5 -0
- cartesia-2.0.0b1/src/cartesia/datasets/client.py +0 -392
- cartesia-2.0.0b1/src/cartesia/voices/requests/localize_dialect.py +0 -8
- cartesia-2.0.0b1/src/cartesia/voices/types/localize_dialect.py +0 -8
- cartesia-2.0.0b1/src/cartesia/voices/types/localize_portuguese_dialect.py +0 -5
- cartesia-2.0.0b1/src/cartesia/voices/types/localize_spanish_dialect.py +0 -5
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/api_status/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/api_status/client.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/api_status/requests/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/api_status/requests/api_info.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/api_status/types/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/api_status/types/api_info.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/client.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/core/api_error.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/core/datetime_utils.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/core/file.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/core/http_client.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/core/jsonable_encoder.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/core/pydantic_utilities.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/core/query_encoder.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/core/remove_none_from_dict.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/core/request_options.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/core/serialization.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/datasets/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/datasets/requests/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/datasets/requests/create_dataset_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/datasets/requests/dataset.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/datasets/requests/dataset_file.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/datasets/requests/paginated_dataset_files.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/datasets/requests/paginated_datasets.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/datasets/types/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/datasets/types/create_dataset_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/datasets/types/dataset.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/datasets/types/dataset_file.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/datasets/types/file_purpose.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/datasets/types/paginated_dataset_files.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/datasets/types/paginated_datasets.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/embedding/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/embedding/types/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/embedding/types/embedding.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/environment.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/infill/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/py.typed +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/cancel_context_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/controls.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/mp_3_output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/phoneme_timestamps.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/raw_output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/speed.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/tts_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/tts_request_embedding_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/tts_request_id_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/tts_request_voice_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/wav_output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/web_socket_base_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/web_socket_done_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/web_socket_error_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/web_socket_flush_done_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/web_socket_phoneme_timestamps_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/web_socket_raw_output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/web_socket_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/web_socket_stream_options.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/web_socket_timestamps_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/web_socket_tts_output.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/requests/word_timestamps.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/socket_client.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/cancel_context_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/context_id.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/controls.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/flush_id.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/mp_3_output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/natural_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/numerical_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/phoneme_timestamps.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/raw_encoding.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/raw_output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/speed.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/supported_language.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/tts_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/tts_request_embedding_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/tts_request_id_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/tts_request_voice_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/wav_output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/web_socket_base_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/web_socket_done_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/web_socket_error_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/web_socket_flush_done_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/web_socket_phoneme_timestamps_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/web_socket_raw_output_format.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/web_socket_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/web_socket_stream_options.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/web_socket_timestamps_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/types/word_timestamps.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/utils/tts.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/tts/utils/types.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/version.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voice_changer/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voice_changer/client.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voice_changer/requests/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voice_changer/types/__init__.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voice_changer/types/output_format_container.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/requests/embedding_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/requests/embedding_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/requests/id_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/requests/localize_voice_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/requests/mix_voice_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/requests/mix_voices_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/requests/update_voice_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/requests/voice_metadata.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/types/base_voice_id.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/types/clone_mode.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/types/embedding_response.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/types/embedding_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/types/gender.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/types/id_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/types/localize_english_dialect.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/types/localize_target_language.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/types/localize_voice_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/types/mix_voice_specifier.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/types/mix_voices_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/types/update_voice_request.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/types/voice_id.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/src/cartesia/voices/types/voice_metadata.py +0 -0
- {cartesia-2.0.0b1 → cartesia-2.0.0b7}/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.0b7
|
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
|
-
model_id="sonic-
|
110
|
+
model_id="sonic-2",
|
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,18 +132,18 @@ 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
|
-
|
128
|
-
model_id="sonic-
|
145
|
+
async for output in client.tts.bytes(
|
146
|
+
model_id="sonic-2",
|
129
147
|
transcript="Hello, world!",
|
130
148
|
voice={"id": "694f9389-aac1-45b6-b726-9d9369183238"},
|
131
149
|
language="en",
|
@@ -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-2",
|
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-2"
|
203
234
|
|
204
235
|
p = pyaudio.PyAudio()
|
205
236
|
rate = 22050
|
@@ -213,11 +244,11 @@ 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",
|
220
|
-
"encoding": "pcm_f32le",
|
251
|
+
"encoding": "pcm_f32le",
|
221
252
|
"sample_rate": 22050
|
222
253
|
},
|
223
254
|
):
|
@@ -236,6 +267,55 @@ p.terminate()
|
|
236
267
|
ws.close() # Close the websocket connection
|
237
268
|
```
|
238
269
|
|
270
|
+
## Requesting Timestamps
|
271
|
+
|
272
|
+
```python
|
273
|
+
import asyncio
|
274
|
+
from cartesia import AsyncCartesia
|
275
|
+
import os
|
276
|
+
|
277
|
+
async def main():
|
278
|
+
client = AsyncCartesia(api_key=os.getenv("CARTESIA_API_KEY"))
|
279
|
+
|
280
|
+
# Connect to the websocket
|
281
|
+
ws = await client.tts.websocket()
|
282
|
+
|
283
|
+
# Generate speech with timestamps
|
284
|
+
output_generate = await ws.send(
|
285
|
+
model_id="sonic-2",
|
286
|
+
transcript="Hello! Welcome to Cartesia's text-to-speech.",
|
287
|
+
voice={"id": "f9836c6e-a0bd-460e-9d3c-f7299fa60f94"},
|
288
|
+
output_format={
|
289
|
+
"container": "raw",
|
290
|
+
"encoding": "pcm_f32le",
|
291
|
+
"sample_rate": 44100
|
292
|
+
},
|
293
|
+
add_timestamps=True, # Enable word-level timestamps
|
294
|
+
stream=True
|
295
|
+
)
|
296
|
+
|
297
|
+
# Process the streaming response with timestamps
|
298
|
+
all_words = []
|
299
|
+
all_starts = []
|
300
|
+
all_ends = []
|
301
|
+
audio_chunks = []
|
302
|
+
|
303
|
+
async for out in output_generate:
|
304
|
+
# Collect audio data
|
305
|
+
if out.audio is not None:
|
306
|
+
audio_chunks.append(out.audio)
|
307
|
+
|
308
|
+
# Process timestamp data
|
309
|
+
if out.word_timestamps is not None:
|
310
|
+
all_words.extend(out.word_timestamps.words) # List of words
|
311
|
+
all_starts.extend(out.word_timestamps.start) # Start time for each word (seconds)
|
312
|
+
all_ends.extend(out.word_timestamps.end) # End time for each word (seconds)
|
313
|
+
|
314
|
+
await ws.close()
|
315
|
+
|
316
|
+
asyncio.run(main())
|
317
|
+
```
|
318
|
+
|
239
319
|
## Advanced
|
240
320
|
|
241
321
|
### Retries
|
@@ -297,11 +377,33 @@ client = Cartesia(
|
|
297
377
|
|
298
378
|
## Contributing
|
299
379
|
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
380
|
+
Note that most of this library is generated programmatically from
|
381
|
+
<https://github.com/cartesia-ai/docs> — before making edits to a file, verify it's not autogenerated
|
382
|
+
by checking for this comment at the top of the file:
|
383
|
+
|
384
|
+
```
|
385
|
+
# This file was auto-generated by Fern from our API Definition.
|
386
|
+
```
|
387
|
+
|
388
|
+
### Running tests
|
389
|
+
|
390
|
+
```sh
|
391
|
+
uv pip install -r requirements.txt
|
392
|
+
uv run pytest -rP -vv tests/custom/test_client.py::test_get_voices
|
393
|
+
```
|
394
|
+
### Manually generating SDK code from docs
|
395
|
+
|
396
|
+
Assuming all your repos are cloned into your home directory:
|
397
|
+
|
398
|
+
```sh
|
399
|
+
$ cd ~/docs
|
400
|
+
$ fern generate --group python-sdk --log-level debug --api version-2024-11-13 --preview
|
401
|
+
$ cd ~/cartesia-python
|
402
|
+
$ git pull ~/docs/fern/apis/version-2024-11-13/.preview/fern-python-sdk
|
403
|
+
$ git commit --amend -m "manually regenerate from docs" # optional
|
404
|
+
```
|
405
|
+
|
406
|
+
### Automatically generating new SDK releases
|
305
407
|
|
306
|
-
|
408
|
+
From https://github.com/cartesia-ai/docs click `Actions` then `Release Python SDK`. (Requires permissions.)
|
307
409
|
|
@@ -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
|
-
model_id="sonic-
|
78
|
+
model_id="sonic-2",
|
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,18 +100,18 @@ 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
|
-
|
96
|
-
model_id="sonic-
|
113
|
+
async for output in client.tts.bytes(
|
114
|
+
model_id="sonic-2",
|
97
115
|
transcript="Hello, world!",
|
98
116
|
voice={"id": "694f9389-aac1-45b6-b726-9d9369183238"},
|
99
117
|
language="en",
|
@@ -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-2",
|
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-2"
|
171
202
|
|
172
203
|
p = pyaudio.PyAudio()
|
173
204
|
rate = 22050
|
@@ -181,11 +212,11 @@ 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",
|
188
|
-
"encoding": "pcm_f32le",
|
219
|
+
"encoding": "pcm_f32le",
|
189
220
|
"sample_rate": 22050
|
190
221
|
},
|
191
222
|
):
|
@@ -204,6 +235,55 @@ p.terminate()
|
|
204
235
|
ws.close() # Close the websocket connection
|
205
236
|
```
|
206
237
|
|
238
|
+
## Requesting Timestamps
|
239
|
+
|
240
|
+
```python
|
241
|
+
import asyncio
|
242
|
+
from cartesia import AsyncCartesia
|
243
|
+
import os
|
244
|
+
|
245
|
+
async def main():
|
246
|
+
client = AsyncCartesia(api_key=os.getenv("CARTESIA_API_KEY"))
|
247
|
+
|
248
|
+
# Connect to the websocket
|
249
|
+
ws = await client.tts.websocket()
|
250
|
+
|
251
|
+
# Generate speech with timestamps
|
252
|
+
output_generate = await ws.send(
|
253
|
+
model_id="sonic-2",
|
254
|
+
transcript="Hello! Welcome to Cartesia's text-to-speech.",
|
255
|
+
voice={"id": "f9836c6e-a0bd-460e-9d3c-f7299fa60f94"},
|
256
|
+
output_format={
|
257
|
+
"container": "raw",
|
258
|
+
"encoding": "pcm_f32le",
|
259
|
+
"sample_rate": 44100
|
260
|
+
},
|
261
|
+
add_timestamps=True, # Enable word-level timestamps
|
262
|
+
stream=True
|
263
|
+
)
|
264
|
+
|
265
|
+
# Process the streaming response with timestamps
|
266
|
+
all_words = []
|
267
|
+
all_starts = []
|
268
|
+
all_ends = []
|
269
|
+
audio_chunks = []
|
270
|
+
|
271
|
+
async for out in output_generate:
|
272
|
+
# Collect audio data
|
273
|
+
if out.audio is not None:
|
274
|
+
audio_chunks.append(out.audio)
|
275
|
+
|
276
|
+
# Process timestamp data
|
277
|
+
if out.word_timestamps is not None:
|
278
|
+
all_words.extend(out.word_timestamps.words) # List of words
|
279
|
+
all_starts.extend(out.word_timestamps.start) # Start time for each word (seconds)
|
280
|
+
all_ends.extend(out.word_timestamps.end) # End time for each word (seconds)
|
281
|
+
|
282
|
+
await ws.close()
|
283
|
+
|
284
|
+
asyncio.run(main())
|
285
|
+
```
|
286
|
+
|
207
287
|
## Advanced
|
208
288
|
|
209
289
|
### Retries
|
@@ -265,10 +345,32 @@ client = Cartesia(
|
|
265
345
|
|
266
346
|
## Contributing
|
267
347
|
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
348
|
+
Note that most of this library is generated programmatically from
|
349
|
+
<https://github.com/cartesia-ai/docs> — before making edits to a file, verify it's not autogenerated
|
350
|
+
by checking for this comment at the top of the file:
|
351
|
+
|
352
|
+
```
|
353
|
+
# This file was auto-generated by Fern from our API Definition.
|
354
|
+
```
|
355
|
+
|
356
|
+
### Running tests
|
357
|
+
|
358
|
+
```sh
|
359
|
+
uv pip install -r requirements.txt
|
360
|
+
uv run pytest -rP -vv tests/custom/test_client.py::test_get_voices
|
361
|
+
```
|
362
|
+
### Manually generating SDK code from docs
|
363
|
+
|
364
|
+
Assuming all your repos are cloned into your home directory:
|
365
|
+
|
366
|
+
```sh
|
367
|
+
$ cd ~/docs
|
368
|
+
$ fern generate --group python-sdk --log-level debug --api version-2024-11-13 --preview
|
369
|
+
$ cd ~/cartesia-python
|
370
|
+
$ git pull ~/docs/fern/apis/version-2024-11-13/.preview/fern-python-sdk
|
371
|
+
$ git commit --amend -m "manually regenerate from docs" # optional
|
372
|
+
```
|
373
|
+
|
374
|
+
### Automatically generating new SDK releases
|
273
375
|
|
274
|
-
|
376
|
+
From https://github.com/cartesia-ai/docs click `Actions` then `Release Python SDK`. (Requires permissions.)
|
@@ -121,13 +121,14 @@ from .voices import (
|
|
121
121
|
EmbeddingSpecifier,
|
122
122
|
EmbeddingSpecifierParams,
|
123
123
|
Gender,
|
124
|
+
GenderPresentation,
|
125
|
+
GetVoicesResponse,
|
126
|
+
GetVoicesResponseParams,
|
124
127
|
IdSpecifier,
|
125
128
|
IdSpecifierParams,
|
126
129
|
LocalizeDialect,
|
127
130
|
LocalizeDialectParams,
|
128
131
|
LocalizeEnglishDialect,
|
129
|
-
LocalizePortugueseDialect,
|
130
|
-
LocalizeSpanishDialect,
|
131
132
|
LocalizeTargetLanguage,
|
132
133
|
LocalizeVoiceRequest,
|
133
134
|
LocalizeVoiceRequestParams,
|
@@ -138,6 +139,7 @@ from .voices import (
|
|
138
139
|
UpdateVoiceRequest,
|
139
140
|
UpdateVoiceRequestParams,
|
140
141
|
Voice,
|
142
|
+
VoiceExpandOptions,
|
141
143
|
VoiceId,
|
142
144
|
VoiceMetadata,
|
143
145
|
VoiceMetadataParams,
|
@@ -175,15 +177,16 @@ __all__ = [
|
|
175
177
|
"FilePurpose",
|
176
178
|
"FlushId",
|
177
179
|
"Gender",
|
180
|
+
"GenderPresentation",
|
178
181
|
"GenerationRequest",
|
179
182
|
"GenerationRequestParams",
|
183
|
+
"GetVoicesResponse",
|
184
|
+
"GetVoicesResponseParams",
|
180
185
|
"IdSpecifier",
|
181
186
|
"IdSpecifierParams",
|
182
187
|
"LocalizeDialect",
|
183
188
|
"LocalizeDialectParams",
|
184
189
|
"LocalizeEnglishDialect",
|
185
|
-
"LocalizePortugueseDialect",
|
186
|
-
"LocalizeSpanishDialect",
|
187
190
|
"LocalizeTargetLanguage",
|
188
191
|
"LocalizeVoiceRequest",
|
189
192
|
"LocalizeVoiceRequestParams",
|
@@ -235,6 +238,7 @@ __all__ = [
|
|
235
238
|
"UpdateVoiceRequest",
|
236
239
|
"UpdateVoiceRequestParams",
|
237
240
|
"Voice",
|
241
|
+
"VoiceExpandOptions",
|
238
242
|
"VoiceId",
|
239
243
|
"VoiceMetadata",
|
240
244
|
"VoiceMetadataParams",
|
@@ -5,14 +5,12 @@ from .environment import CartesiaEnvironment
|
|
5
5
|
import httpx
|
6
6
|
from .core.client_wrapper import SyncClientWrapper
|
7
7
|
from .api_status.client import ApiStatusClient
|
8
|
-
from .datasets.client import DatasetsClient
|
9
8
|
from .infill.client import InfillClient
|
10
9
|
from .tts.client import TtsClient
|
11
10
|
from .voice_changer.client import VoiceChangerClient
|
12
11
|
from .voices.client import VoicesClient
|
13
12
|
from .core.client_wrapper import AsyncClientWrapper
|
14
13
|
from .api_status.client import AsyncApiStatusClient
|
15
|
-
from .datasets.client import AsyncDatasetsClient
|
16
14
|
from .infill.client import AsyncInfillClient
|
17
15
|
from .tts.client import AsyncTtsClient
|
18
16
|
from .voice_changer.client import AsyncVoiceChangerClient
|
@@ -78,7 +76,6 @@ class BaseCartesia:
|
|
78
76
|
timeout=_defaulted_timeout,
|
79
77
|
)
|
80
78
|
self.api_status = ApiStatusClient(client_wrapper=self._client_wrapper)
|
81
|
-
self.datasets = DatasetsClient(client_wrapper=self._client_wrapper)
|
82
79
|
self.infill = InfillClient(client_wrapper=self._client_wrapper)
|
83
80
|
self.tts = TtsClient(client_wrapper=self._client_wrapper)
|
84
81
|
self.voice_changer = VoiceChangerClient(client_wrapper=self._client_wrapper)
|
@@ -144,7 +141,6 @@ class AsyncBaseCartesia:
|
|
144
141
|
timeout=_defaulted_timeout,
|
145
142
|
)
|
146
143
|
self.api_status = AsyncApiStatusClient(client_wrapper=self._client_wrapper)
|
147
|
-
self.datasets = AsyncDatasetsClient(client_wrapper=self._client_wrapper)
|
148
144
|
self.infill = AsyncInfillClient(client_wrapper=self._client_wrapper)
|
149
145
|
self.tts = AsyncTtsClient(client_wrapper=self._client_wrapper)
|
150
146
|
self.voice_changer = AsyncVoiceChangerClient(client_wrapper=self._client_wrapper)
|