murf 1.0.2__tar.gz → 1.2.0__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.
Potentially problematic release.
This version of murf might be problematic. Click here for more details.
- {murf-1.0.2 → murf-1.2.0}/PKG-INFO +65 -15
- murf-1.2.0/README.md +194 -0
- {murf-1.0.2 → murf-1.2.0}/pyproject.toml +1 -1
- {murf-1.0.2 → murf-1.2.0}/src/murf/__init__.py +28 -1
- {murf-1.0.2 → murf-1.2.0}/src/murf/base_client.py +4 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/client.py +3 -1
- {murf-1.0.2 → murf-1.2.0}/src/murf/core/client_wrapper.py +1 -1
- murf-1.2.0/src/murf/dubbing/__init__.py +14 -0
- murf-1.2.0/src/murf/dubbing/client.py +26 -0
- murf-1.2.0/src/murf/dubbing/jobs/__init__.py +5 -0
- murf-1.2.0/src/murf/dubbing/jobs/client.py +726 -0
- murf-1.2.0/src/murf/dubbing/jobs/types/__init__.py +6 -0
- murf-1.2.0/src/murf/dubbing/jobs/types/jobs_create_request_priority.py +5 -0
- murf-1.2.0/src/murf/dubbing/jobs/types/jobs_create_with_project_id_request_priority.py +5 -0
- murf-1.2.0/src/murf/dubbing/languages/__init__.py +2 -0
- murf-1.2.0/src/murf/dubbing/languages/client.py +369 -0
- murf-1.2.0/src/murf/dubbing/projects/__init__.py +5 -0
- murf-1.2.0/src/murf/dubbing/projects/client.py +682 -0
- murf-1.2.0/src/murf/dubbing/projects/types/__init__.py +5 -0
- murf-1.2.0/src/murf/dubbing/projects/types/api_create_project_request_dubbing_type.py +5 -0
- murf-1.2.0/src/murf/dubbing_client.py +120 -0
- murf-1.2.0/src/murf/types/__init__.py +45 -0
- murf-1.2.0/src/murf/types/api_job_response.py +53 -0
- murf-1.2.0/src/murf/types/api_job_response_dubbing_type.py +5 -0
- murf-1.2.0/src/murf/types/api_job_response_priority.py +5 -0
- murf-1.2.0/src/murf/types/api_project_response.py +44 -0
- murf-1.2.0/src/murf/types/api_project_response_dubbing_type.py +5 -0
- murf-1.2.0/src/murf/types/dub_api_detail_response.py +23 -0
- murf-1.2.0/src/murf/types/dub_job_status_response.py +39 -0
- murf-1.2.0/src/murf/types/form_data_content_disposition.py +31 -0
- murf-1.2.0/src/murf/types/group_api_project_response.py +24 -0
- murf-1.2.0/src/murf/types/locale_response.py +25 -0
- murf-1.2.0/src/murf/types/locale_response_supports_item.py +5 -0
- murf-1.2.0/src/murf/types/source_locale_response.py +20 -0
- murf-1.2.0/src/murf/utils.py +31 -0
- murf-1.0.2/README.md +0 -144
- murf-1.0.2/src/murf/types/__init__.py +0 -21
- {murf-1.0.2 → murf-1.2.0}/LICENSE +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/auth/__init__.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/auth/client.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/core/__init__.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/core/api_error.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/core/datetime_utils.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/core/file.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/core/http_client.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/core/jsonable_encoder.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/core/pydantic_utilities.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/core/query_encoder.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/core/remove_none_from_dict.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/core/request_options.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/core/serialization.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/environment.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/errors/__init__.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/errors/bad_request_error.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/errors/forbidden_error.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/errors/internal_server_error.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/errors/payment_required_error.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/errors/service_unavailable_error.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/errors/unauthorized_error.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/py.typed +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/text_to_speech/__init__.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/text_to_speech/client.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/text_to_speech/types/__init__.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/text_to_speech/types/generate_speech_request_model_version.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/types/api_voice.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/types/api_voice_gender.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/types/auth_token_response.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/types/generate_speech_response.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/types/pronunciation_detail.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/types/pronunciation_detail_type.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/types/style_details.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/types/word_duration.py +0 -0
- {murf-1.0.2 → murf-1.2.0}/src/murf/version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: murf
|
|
3
|
-
Version: 1.0
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary:
|
|
5
5
|
Requires-Python: >=3.8,<4.0
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -24,26 +24,49 @@ Requires-Dist: pydantic-core (>=2.18.2,<3.0.0)
|
|
|
24
24
|
Requires-Dist: typing_extensions (>=4.0.0)
|
|
25
25
|
Description-Content-Type: text/markdown
|
|
26
26
|
|
|
27
|
-
# Murf Python
|
|
27
|
+
# Murf Python SDK
|
|
28
|
+
|
|
29
|
+

|
|
28
30
|
|
|
29
31
|
[](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2Fmurf-ai%2Fmurf-python-sdk)
|
|
30
32
|
[](https://pypi.python.org/pypi/murf)
|
|
33
|
+
[](https://colab.research.google.com/gist/devgeetech-murf/bbe2c7eb01433f4a151f0fd2be23b1c8/murf-python-sdk.ipynb)
|
|
34
|
+
|
|
35
|
+
## Table of Contents
|
|
36
|
+
|
|
37
|
+
- [Overview](#overview)
|
|
38
|
+
- [Installation](#installation)
|
|
39
|
+
- [Getting Started](#getting-started)
|
|
40
|
+
- [Features](#features)
|
|
41
|
+
- [Asynchronous Usage](#async-client)
|
|
42
|
+
- [Exception Handling](#exception-handling)
|
|
43
|
+
- [Advanced Configuration](#advanced)
|
|
44
|
+
- [Contributing](#contributing)
|
|
45
|
+
- [License](#license)
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Overview
|
|
50
|
+
|
|
51
|
+
The Murf Python SDK offers seamless integration with the [Murf AI](https://murf.ai/) [text-to-speech software](https://murf.ai/text-to-speech), enabling developers and creators to convert text into lifelike speech effortlessly. With over 130 natural-sounding voices across 13+ languages and 20+ speaking styles, Murf provides unparalleled speech customization for a wide range of applications. The SDK is designed for both synchronous and asynchronous workflows, featuring robust error handling, advanced configuration options, and support for real-time applications.
|
|
31
52
|
|
|
32
|
-
|
|
53
|
+
---
|
|
33
54
|
|
|
34
55
|
## Installation
|
|
35
56
|
|
|
36
|
-
|
|
57
|
+
Check out the [HTTP API documentation](https://murf.ai/api/docs/introduction/quickstart).
|
|
58
|
+
|
|
59
|
+
Install the SDK using pip:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
37
62
|
pip install murf
|
|
38
63
|
```
|
|
39
64
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
A full reference for this library is available [here](./reference.md).
|
|
65
|
+
---
|
|
43
66
|
|
|
44
|
-
##
|
|
67
|
+
## Getting Started
|
|
45
68
|
|
|
46
|
-
|
|
69
|
+
Here's a quick example to get you started with the Murf SDK:
|
|
47
70
|
|
|
48
71
|
```python
|
|
49
72
|
from murf import Murf
|
|
@@ -59,6 +82,25 @@ client.text_to_speech.generate(
|
|
|
59
82
|
)
|
|
60
83
|
```
|
|
61
84
|
|
|
85
|
+
For more detailed information, refer to the [official documentation](https://murf.ai/api/docs/introduction/quickstart).
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Features
|
|
90
|
+
|
|
91
|
+
- **Text-to-Speech Conversion:** Transform text into natural-sounding speech.
|
|
92
|
+
- **Multilingual Support:** Access voices in over 13 languages, including English, French, German, Spanish, Italian, Hindi, Portuguese, Dutch, Korean, Chinese (Mandarin), Bengali, Tamil, and Polish.
|
|
93
|
+
|
|
94
|
+

|
|
95
|
+
|
|
96
|
+
- **Multiple Voice Styles:** Choose from 20+ speaking styles to suit your application's needs.
|
|
97
|
+
- **Advanced Voice Customization:** Adjust parameters like pitch, speed, pauses, and pronunciation for optimal output. Fine-grained controls let you tailor the voice output to match your specific requirements.
|
|
98
|
+
- **Multiple Audio Formats:** Generate audio in various formats (e.g., MP3, WAV) with configurable sample rates for optimal quality.
|
|
99
|
+
- **Real-Time Processing:** Benefit from asynchronous API calls that support non-blocking, real-time audio generation and streaming scenarios.
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
62
104
|
## Async Client
|
|
63
105
|
|
|
64
106
|
The SDK also exports an `async` client so that you can make non-blocking calls to our API.
|
|
@@ -85,6 +127,8 @@ async def main() -> None:
|
|
|
85
127
|
asyncio.run(main())
|
|
86
128
|
```
|
|
87
129
|
|
|
130
|
+
---
|
|
131
|
+
|
|
88
132
|
## Exception Handling
|
|
89
133
|
|
|
90
134
|
When the API returns a non-success status code (4xx or 5xx response), a subclass of the following error
|
|
@@ -100,6 +144,8 @@ except ApiError as e:
|
|
|
100
144
|
print(e.body)
|
|
101
145
|
```
|
|
102
146
|
|
|
147
|
+
---
|
|
148
|
+
|
|
103
149
|
## Advanced
|
|
104
150
|
|
|
105
151
|
### Retries
|
|
@@ -159,13 +205,17 @@ client = Murf(
|
|
|
159
205
|
)
|
|
160
206
|
```
|
|
161
207
|
|
|
208
|
+
---
|
|
209
|
+
|
|
162
210
|
## Contributing
|
|
163
211
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
212
|
+
We welcome contributions to enhance the Murf Python SDK. Please note that this library is generated programmatically, so direct modifications may be overwritten. We suggest opening an issue first to discuss your ideas or improvements. Contributions to the documentation are especially appreciated! For any support queries email to support@murf.ai
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## License
|
|
217
|
+
|
|
218
|
+
Murf Python SDK is released under the [MIT License](LICENSE).
|
|
169
219
|
|
|
170
|
-
|
|
220
|
+
---
|
|
171
221
|
|
murf-1.2.0/README.md
ADDED
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# Murf Python SDK
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
[](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2Fmurf-ai%2Fmurf-python-sdk)
|
|
6
|
+
[](https://pypi.python.org/pypi/murf)
|
|
7
|
+
[](https://colab.research.google.com/gist/devgeetech-murf/bbe2c7eb01433f4a151f0fd2be23b1c8/murf-python-sdk.ipynb)
|
|
8
|
+
|
|
9
|
+
## Table of Contents
|
|
10
|
+
|
|
11
|
+
- [Overview](#overview)
|
|
12
|
+
- [Installation](#installation)
|
|
13
|
+
- [Getting Started](#getting-started)
|
|
14
|
+
- [Features](#features)
|
|
15
|
+
- [Asynchronous Usage](#async-client)
|
|
16
|
+
- [Exception Handling](#exception-handling)
|
|
17
|
+
- [Advanced Configuration](#advanced)
|
|
18
|
+
- [Contributing](#contributing)
|
|
19
|
+
- [License](#license)
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Overview
|
|
24
|
+
|
|
25
|
+
The Murf Python SDK offers seamless integration with the [Murf AI](https://murf.ai/) [text-to-speech software](https://murf.ai/text-to-speech), enabling developers and creators to convert text into lifelike speech effortlessly. With over 130 natural-sounding voices across 13+ languages and 20+ speaking styles, Murf provides unparalleled speech customization for a wide range of applications. The SDK is designed for both synchronous and asynchronous workflows, featuring robust error handling, advanced configuration options, and support for real-time applications.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Installation
|
|
30
|
+
|
|
31
|
+
Check out the [HTTP API documentation](https://murf.ai/api/docs/introduction/quickstart).
|
|
32
|
+
|
|
33
|
+
Install the SDK using pip:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
pip install murf
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Getting Started
|
|
42
|
+
|
|
43
|
+
Here's a quick example to get you started with the Murf SDK:
|
|
44
|
+
|
|
45
|
+
```python
|
|
46
|
+
from murf import Murf
|
|
47
|
+
|
|
48
|
+
client = Murf(
|
|
49
|
+
api_key="YOUR_API_KEY",
|
|
50
|
+
)
|
|
51
|
+
client.text_to_speech.generate(
|
|
52
|
+
format="MP3",
|
|
53
|
+
sample_rate=44100.0,
|
|
54
|
+
text="Hello, world!",
|
|
55
|
+
voice_id="en-US-natalie",
|
|
56
|
+
)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
For more detailed information, refer to the [official documentation](https://murf.ai/api/docs/introduction/quickstart).
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Features
|
|
64
|
+
|
|
65
|
+
- **Text-to-Speech Conversion:** Transform text into natural-sounding speech.
|
|
66
|
+
- **Multilingual Support:** Access voices in over 13 languages, including English, French, German, Spanish, Italian, Hindi, Portuguese, Dutch, Korean, Chinese (Mandarin), Bengali, Tamil, and Polish.
|
|
67
|
+
|
|
68
|
+

|
|
69
|
+
|
|
70
|
+
- **Multiple Voice Styles:** Choose from 20+ speaking styles to suit your application's needs.
|
|
71
|
+
- **Advanced Voice Customization:** Adjust parameters like pitch, speed, pauses, and pronunciation for optimal output. Fine-grained controls let you tailor the voice output to match your specific requirements.
|
|
72
|
+
- **Multiple Audio Formats:** Generate audio in various formats (e.g., MP3, WAV) with configurable sample rates for optimal quality.
|
|
73
|
+
- **Real-Time Processing:** Benefit from asynchronous API calls that support non-blocking, real-time audio generation and streaming scenarios.
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Async Client
|
|
79
|
+
|
|
80
|
+
The SDK also exports an `async` client so that you can make non-blocking calls to our API.
|
|
81
|
+
|
|
82
|
+
```python
|
|
83
|
+
import asyncio
|
|
84
|
+
|
|
85
|
+
from murf import AsyncMurf
|
|
86
|
+
|
|
87
|
+
client = AsyncMurf(
|
|
88
|
+
api_key="YOUR_API_KEY",
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
async def main() -> None:
|
|
93
|
+
await client.text_to_speech.generate(
|
|
94
|
+
format="MP3",
|
|
95
|
+
sample_rate=44100.0,
|
|
96
|
+
text="Hello, world!",
|
|
97
|
+
voice_id="en-US-natalie",
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
asyncio.run(main())
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Exception Handling
|
|
107
|
+
|
|
108
|
+
When the API returns a non-success status code (4xx or 5xx response), a subclass of the following error
|
|
109
|
+
will be thrown.
|
|
110
|
+
|
|
111
|
+
```python
|
|
112
|
+
from murf.core.api_error import ApiError
|
|
113
|
+
|
|
114
|
+
try:
|
|
115
|
+
client.text_to_speech.generate(...)
|
|
116
|
+
except ApiError as e:
|
|
117
|
+
print(e.status_code)
|
|
118
|
+
print(e.body)
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Advanced
|
|
124
|
+
|
|
125
|
+
### Retries
|
|
126
|
+
|
|
127
|
+
The SDK is instrumented with automatic retries with exponential backoff. A request will be retried as long
|
|
128
|
+
as the request is deemed retriable and the number of retry attempts has not grown larger than the configured
|
|
129
|
+
retry limit (default: 2).
|
|
130
|
+
|
|
131
|
+
A request is deemed retriable when any of the following HTTP status codes is returned:
|
|
132
|
+
|
|
133
|
+
- [408](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408) (Timeout)
|
|
134
|
+
- [429](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429) (Too Many Requests)
|
|
135
|
+
- [5XX](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500) (Internal Server Errors)
|
|
136
|
+
|
|
137
|
+
Use the `max_retries` request option to configure this behavior.
|
|
138
|
+
|
|
139
|
+
```python
|
|
140
|
+
client.text_to_speech.generate(..., request_options={
|
|
141
|
+
"max_retries": 1
|
|
142
|
+
})
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Timeouts
|
|
146
|
+
|
|
147
|
+
The SDK defaults to a 60 second timeout. You can configure this with a timeout option at the client or request level.
|
|
148
|
+
|
|
149
|
+
```python
|
|
150
|
+
|
|
151
|
+
from murf import Murf
|
|
152
|
+
|
|
153
|
+
client = Murf(
|
|
154
|
+
...,
|
|
155
|
+
timeout=20.0,
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
# Override timeout for a specific method
|
|
160
|
+
client.text_to_speech.generate(..., request_options={
|
|
161
|
+
"timeout_in_seconds": 1
|
|
162
|
+
})
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Custom Client
|
|
166
|
+
|
|
167
|
+
You can override the `httpx` client to customize it for your use-case. Some common use-cases include support for proxies
|
|
168
|
+
and transports.
|
|
169
|
+
```python
|
|
170
|
+
import httpx
|
|
171
|
+
from murf import Murf
|
|
172
|
+
|
|
173
|
+
client = Murf(
|
|
174
|
+
...,
|
|
175
|
+
httpx_client=httpx.Client(
|
|
176
|
+
proxies="http://my.test.proxy.example.com",
|
|
177
|
+
transport=httpx.HTTPTransport(local_address="0.0.0.0"),
|
|
178
|
+
),
|
|
179
|
+
)
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Contributing
|
|
185
|
+
|
|
186
|
+
We welcome contributions to enhance the Murf Python SDK. Please note that this library is generated programmatically, so direct modifications may be overwritten. We suggest opening an issue first to discuss your ideas or improvements. Contributions to the documentation are especially appreciated! For any support queries email to support@murf.ai
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## License
|
|
191
|
+
|
|
192
|
+
Murf Python SDK is released under the [MIT License](LICENSE).
|
|
193
|
+
|
|
194
|
+
---
|
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
# This file was auto-generated by Fern from our API Definition.
|
|
2
2
|
|
|
3
3
|
from .types import (
|
|
4
|
+
ApiJobResponse,
|
|
5
|
+
ApiJobResponseDubbingType,
|
|
6
|
+
ApiJobResponsePriority,
|
|
7
|
+
ApiProjectResponse,
|
|
8
|
+
ApiProjectResponseDubbingType,
|
|
4
9
|
ApiVoice,
|
|
5
10
|
ApiVoiceGender,
|
|
6
11
|
AuthTokenResponse,
|
|
12
|
+
DubApiDetailResponse,
|
|
13
|
+
DubJobStatusResponse,
|
|
14
|
+
FormDataContentDisposition,
|
|
7
15
|
GenerateSpeechResponse,
|
|
16
|
+
GroupApiProjectResponse,
|
|
17
|
+
LocaleResponse,
|
|
18
|
+
LocaleResponseSupportsItem,
|
|
8
19
|
PronunciationDetail,
|
|
9
20
|
PronunciationDetailType,
|
|
21
|
+
SourceLocaleResponse,
|
|
10
22
|
StyleDetails,
|
|
11
23
|
WordDuration,
|
|
12
24
|
)
|
|
@@ -18,32 +30,47 @@ from .errors import (
|
|
|
18
30
|
ServiceUnavailableError,
|
|
19
31
|
UnauthorizedError,
|
|
20
32
|
)
|
|
21
|
-
from . import auth, text_to_speech
|
|
33
|
+
from . import auth, dubbing, text_to_speech
|
|
22
34
|
from .client import AsyncMurf, Murf
|
|
35
|
+
from .dubbing_client import MurfDub
|
|
23
36
|
from .environment import MurfEnvironment
|
|
24
37
|
from .text_to_speech import GenerateSpeechRequestModelVersion
|
|
25
38
|
from .version import __version__
|
|
26
39
|
|
|
27
40
|
__all__ = [
|
|
41
|
+
"ApiJobResponse",
|
|
42
|
+
"ApiJobResponseDubbingType",
|
|
43
|
+
"ApiJobResponsePriority",
|
|
44
|
+
"ApiProjectResponse",
|
|
45
|
+
"ApiProjectResponseDubbingType",
|
|
28
46
|
"ApiVoice",
|
|
29
47
|
"ApiVoiceGender",
|
|
30
48
|
"AsyncMurf",
|
|
31
49
|
"AuthTokenResponse",
|
|
32
50
|
"BadRequestError",
|
|
51
|
+
"DubApiDetailResponse",
|
|
52
|
+
"DubJobStatusResponse",
|
|
33
53
|
"ForbiddenError",
|
|
54
|
+
"FormDataContentDisposition",
|
|
34
55
|
"GenerateSpeechRequestModelVersion",
|
|
35
56
|
"GenerateSpeechResponse",
|
|
57
|
+
"GroupApiProjectResponse",
|
|
36
58
|
"InternalServerError",
|
|
59
|
+
"LocaleResponse",
|
|
60
|
+
"LocaleResponseSupportsItem",
|
|
37
61
|
"Murf",
|
|
62
|
+
"MurfDub",
|
|
38
63
|
"MurfEnvironment",
|
|
39
64
|
"PaymentRequiredError",
|
|
40
65
|
"PronunciationDetail",
|
|
41
66
|
"PronunciationDetailType",
|
|
42
67
|
"ServiceUnavailableError",
|
|
68
|
+
"SourceLocaleResponse",
|
|
43
69
|
"StyleDetails",
|
|
44
70
|
"UnauthorizedError",
|
|
45
71
|
"WordDuration",
|
|
46
72
|
"__version__",
|
|
47
73
|
"auth",
|
|
74
|
+
"dubbing",
|
|
48
75
|
"text_to_speech",
|
|
49
76
|
]
|
|
@@ -6,9 +6,11 @@ import httpx
|
|
|
6
6
|
from .core.client_wrapper import SyncClientWrapper
|
|
7
7
|
from .auth.client import AuthClient
|
|
8
8
|
from .text_to_speech.client import TextToSpeechClient
|
|
9
|
+
from .dubbing.client import DubbingClient
|
|
9
10
|
from .core.client_wrapper import AsyncClientWrapper
|
|
10
11
|
from .auth.client import AsyncAuthClient
|
|
11
12
|
from .text_to_speech.client import AsyncTextToSpeechClient
|
|
13
|
+
from .dubbing.client import AsyncDubbingClient
|
|
12
14
|
|
|
13
15
|
|
|
14
16
|
class BaseClient:
|
|
@@ -71,6 +73,7 @@ class BaseClient:
|
|
|
71
73
|
)
|
|
72
74
|
self.auth = AuthClient(client_wrapper=self._client_wrapper)
|
|
73
75
|
self.text_to_speech = TextToSpeechClient(client_wrapper=self._client_wrapper)
|
|
76
|
+
self.dubbing = DubbingClient(client_wrapper=self._client_wrapper)
|
|
74
77
|
|
|
75
78
|
|
|
76
79
|
class AsyncBaseClient:
|
|
@@ -133,6 +136,7 @@ class AsyncBaseClient:
|
|
|
133
136
|
)
|
|
134
137
|
self.auth = AsyncAuthClient(client_wrapper=self._client_wrapper)
|
|
135
138
|
self.text_to_speech = AsyncTextToSpeechClient(client_wrapper=self._client_wrapper)
|
|
139
|
+
self.dubbing = AsyncDubbingClient(client_wrapper=self._client_wrapper)
|
|
136
140
|
|
|
137
141
|
|
|
138
142
|
def _get_base_url(*, base_url: typing.Optional[str] = None, environment: MurfEnvironment) -> str:
|
|
@@ -59,6 +59,7 @@ class Murf(BaseClient):
|
|
|
59
59
|
follow_redirects=follow_redirects,
|
|
60
60
|
httpx_client=httpx_client
|
|
61
61
|
)
|
|
62
|
+
self.dubbing = None # type: ignore
|
|
62
63
|
|
|
63
64
|
|
|
64
65
|
class AsyncMurf(AsyncBaseClient):
|
|
@@ -115,4 +116,5 @@ class AsyncMurf(AsyncBaseClient):
|
|
|
115
116
|
timeout=timeout,
|
|
116
117
|
follow_redirects=follow_redirects,
|
|
117
118
|
httpx_client=httpx_client
|
|
118
|
-
)
|
|
119
|
+
)
|
|
120
|
+
self.dubbing = None # type: ignore
|
|
@@ -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": "murf",
|
|
19
|
-
"X-Fern-SDK-Version": "1.0
|
|
19
|
+
"X-Fern-SDK-Version": "1.2.0",
|
|
20
20
|
}
|
|
21
21
|
if self._api_key is not None:
|
|
22
22
|
headers["api-key"] = self._api_key
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
from . import jobs, languages, projects
|
|
4
|
+
from .jobs import JobsCreateRequestPriority, JobsCreateWithProjectIdRequestPriority
|
|
5
|
+
from .projects import ApiCreateProjectRequestDubbingType
|
|
6
|
+
|
|
7
|
+
__all__ = [
|
|
8
|
+
"ApiCreateProjectRequestDubbingType",
|
|
9
|
+
"JobsCreateRequestPriority",
|
|
10
|
+
"JobsCreateWithProjectIdRequestPriority",
|
|
11
|
+
"jobs",
|
|
12
|
+
"languages",
|
|
13
|
+
"projects",
|
|
14
|
+
]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
from ..core.client_wrapper import SyncClientWrapper
|
|
4
|
+
from .languages.client import LanguagesClient
|
|
5
|
+
from .jobs.client import JobsClient
|
|
6
|
+
from .projects.client import ProjectsClient
|
|
7
|
+
from ..core.client_wrapper import AsyncClientWrapper
|
|
8
|
+
from .languages.client import AsyncLanguagesClient
|
|
9
|
+
from .jobs.client import AsyncJobsClient
|
|
10
|
+
from .projects.client import AsyncProjectsClient
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class DubbingClient:
|
|
14
|
+
def __init__(self, *, client_wrapper: SyncClientWrapper):
|
|
15
|
+
self._client_wrapper = client_wrapper
|
|
16
|
+
self.languages = LanguagesClient(client_wrapper=self._client_wrapper)
|
|
17
|
+
self.jobs = JobsClient(client_wrapper=self._client_wrapper)
|
|
18
|
+
self.projects = ProjectsClient(client_wrapper=self._client_wrapper)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class AsyncDubbingClient:
|
|
22
|
+
def __init__(self, *, client_wrapper: AsyncClientWrapper):
|
|
23
|
+
self._client_wrapper = client_wrapper
|
|
24
|
+
self.languages = AsyncLanguagesClient(client_wrapper=self._client_wrapper)
|
|
25
|
+
self.jobs = AsyncJobsClient(client_wrapper=self._client_wrapper)
|
|
26
|
+
self.projects = AsyncProjectsClient(client_wrapper=self._client_wrapper)
|