sarvamai 0.1.19a4__py3-none-any.whl → 0.1.20__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. sarvamai/__init__.py +20 -0
  2. sarvamai/core/client_wrapper.py +2 -2
  3. sarvamai/requests/__init__.py +4 -0
  4. sarvamai/requests/audio_data.py +13 -1
  5. sarvamai/requests/audio_output_data.py +5 -0
  6. sarvamai/requests/error_response_data.py +5 -0
  7. sarvamai/requests/event_response.py +19 -0
  8. sarvamai/requests/event_response_data.py +23 -0
  9. sarvamai/speech_to_text_streaming/__init__.py +2 -0
  10. sarvamai/speech_to_text_streaming/client.py +25 -0
  11. sarvamai/speech_to_text_streaming/raw_client.py +25 -0
  12. sarvamai/speech_to_text_streaming/socket_client.py +4 -10
  13. sarvamai/speech_to_text_streaming/types/__init__.py +2 -0
  14. sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_input_audio_codec.py +33 -0
  15. sarvamai/speech_to_text_translate_streaming/__init__.py +2 -0
  16. sarvamai/speech_to_text_translate_streaming/client.py +25 -0
  17. sarvamai/speech_to_text_translate_streaming/raw_client.py +25 -0
  18. sarvamai/speech_to_text_translate_streaming/socket_client.py +4 -10
  19. sarvamai/speech_to_text_translate_streaming/types/__init__.py +2 -0
  20. sarvamai/speech_to_text_translate_streaming/types/speech_to_text_translate_streaming_input_audio_codec.py +33 -0
  21. sarvamai/text_to_speech_streaming/__init__.py +3 -0
  22. sarvamai/text_to_speech_streaming/client.py +13 -0
  23. sarvamai/text_to_speech_streaming/raw_client.py +13 -0
  24. sarvamai/text_to_speech_streaming/socket_client.py +2 -1
  25. sarvamai/text_to_speech_streaming/types/__init__.py +7 -0
  26. sarvamai/text_to_speech_streaming/types/text_to_speech_streaming_send_completion_event.py +5 -0
  27. sarvamai/types/__init__.py +10 -0
  28. sarvamai/types/audio_data.py +13 -1
  29. sarvamai/types/audio_data_input_audio_codec.py +33 -0
  30. sarvamai/types/audio_output_data.py +5 -0
  31. sarvamai/types/completion_event_flag.py +5 -0
  32. sarvamai/types/connection_sample_rate.py +3 -0
  33. sarvamai/types/error_response_data.py +5 -0
  34. sarvamai/types/event_response.py +29 -0
  35. sarvamai/types/event_response_data.py +33 -0
  36. {sarvamai-0.1.19a4.dist-info → sarvamai-0.1.20.dist-info}/METADATA +1 -1
  37. {sarvamai-0.1.19a4.dist-info → sarvamai-0.1.20.dist-info}/RECORD +38 -27
  38. {sarvamai-0.1.19a4.dist-info → sarvamai-0.1.20.dist-info}/WHEEL +0 -0
@@ -79,16 +79,13 @@ class AsyncSpeechToTextTranslateStreamingSocketClient(EventEmitterMixin):
79
79
  message = ConfigMessage(prompt=prompt)
80
80
  await self._send_config_message(message)
81
81
 
82
- async def flush(self, reason: typing.Optional[str] = None) -> None:
82
+ async def flush(self) -> None:
83
83
  """
84
84
  Signal to flush the audio buffer and force finalize partial
85
85
  transcriptions and translations. Use this to force processing of any
86
86
  remaining audio that hasn't been transcribed and translated yet.
87
-
88
- :param reason: Optional reason for flushing (e.g., "end_of_segment",
89
- "manual_flush")
90
87
  """
91
- message = SttFlushSignal(reason=reason)
88
+ message = SttFlushSignal()
92
89
  await self._send_model(message)
93
90
 
94
91
  async def recv(self) -> SpeechToTextTranslateStreamingSocketClientResponse:
@@ -191,16 +188,13 @@ class SpeechToTextTranslateStreamingSocketClient(EventEmitterMixin):
191
188
  message = ConfigMessage(prompt=prompt)
192
189
  self._send_config_message(message)
193
190
 
194
- def flush(self, reason: typing.Optional[str] = None) -> None:
191
+ def flush(self) -> None:
195
192
  """
196
193
  Signal to flush the audio buffer and force finalize partial transcriptions and translations.
197
194
  Use this to force processing of any remaining audio that hasn't been
198
195
  transcribed and translated yet.
199
-
200
- :param reason: Optional reason for flushing (e.g., "end_of_segment",
201
- "manual_flush")
202
196
  """
203
- message = SttFlushSignal(reason=reason)
197
+ message = SttFlushSignal()
204
198
  self._send_model(message)
205
199
 
206
200
  def recv(self) -> SpeechToTextTranslateStreamingSocketClientResponse:
@@ -4,12 +4,14 @@
4
4
 
5
5
  from .speech_to_text_translate_streaming_flush_signal import SpeechToTextTranslateStreamingFlushSignal
6
6
  from .speech_to_text_translate_streaming_high_vad_sensitivity import SpeechToTextTranslateStreamingHighVadSensitivity
7
+ from .speech_to_text_translate_streaming_input_audio_codec import SpeechToTextTranslateStreamingInputAudioCodec
7
8
  from .speech_to_text_translate_streaming_model import SpeechToTextTranslateStreamingModel
8
9
  from .speech_to_text_translate_streaming_vad_signals import SpeechToTextTranslateStreamingVadSignals
9
10
 
10
11
  __all__ = [
11
12
  "SpeechToTextTranslateStreamingFlushSignal",
12
13
  "SpeechToTextTranslateStreamingHighVadSensitivity",
14
+ "SpeechToTextTranslateStreamingInputAudioCodec",
13
15
  "SpeechToTextTranslateStreamingModel",
14
16
  "SpeechToTextTranslateStreamingVadSignals",
15
17
  ]
@@ -0,0 +1,33 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ SpeechToTextTranslateStreamingInputAudioCodec = typing.Union[
6
+ typing.Literal[
7
+ "wav",
8
+ "x-wav",
9
+ "wave",
10
+ "mp3",
11
+ "mpeg",
12
+ "mpeg3",
13
+ "x-mp3",
14
+ "x-mpeg-3",
15
+ "aac",
16
+ "x-aac",
17
+ "aiff",
18
+ "x-aiff",
19
+ "ogg",
20
+ "opus",
21
+ "flac",
22
+ "x-flac",
23
+ "mp4",
24
+ "x-m4a",
25
+ "amr",
26
+ "x-ms-wma",
27
+ "webm",
28
+ "pcm_s16le",
29
+ "pcm_l16",
30
+ "pcm_raw",
31
+ ],
32
+ typing.Any,
33
+ ]
@@ -2,3 +2,6 @@
2
2
 
3
3
  # isort: skip_file
4
4
 
5
+ from .types import TextToSpeechStreamingSendCompletionEvent
6
+
7
+ __all__ = ["TextToSpeechStreamingSendCompletionEvent"]
@@ -11,6 +11,7 @@ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
11
11
  from ..core.request_options import RequestOptions
12
12
  from .raw_client import AsyncRawTextToSpeechStreamingClient, RawTextToSpeechStreamingClient
13
13
  from .socket_client import AsyncTextToSpeechStreamingSocketClient, TextToSpeechStreamingSocketClient
14
+ from .types.text_to_speech_streaming_send_completion_event import TextToSpeechStreamingSendCompletionEvent
14
15
 
15
16
  try:
16
17
  from websockets.legacy.client import connect as websockets_client_connect # type: ignore
@@ -38,6 +39,7 @@ class TextToSpeechStreamingClient:
38
39
  self,
39
40
  *,
40
41
  model: typing.Optional[typing.Literal["bulbul:v2"]] = None,
42
+ send_completion_event: typing.Optional[TextToSpeechStreamingSendCompletionEvent] = None,
41
43
  api_subscription_key: typing.Optional[str] = None,
42
44
  request_options: typing.Optional[RequestOptions] = None,
43
45
  ) -> typing.Iterator[TextToSpeechStreamingSocketClient]:
@@ -50,6 +52,9 @@ class TextToSpeechStreamingClient:
50
52
  model : typing.Optional[typing.Literal["bulbul:v2"]]
51
53
  Text to speech model to use
52
54
 
55
+ send_completion_event : typing.Optional[TextToSpeechStreamingSendCompletionEvent]
56
+ Enable completion event notifications when TTS generation finishes. When set to true, an event message will be sent when the final audio chunk has been generated.
57
+
53
58
  api_subscription_key : typing.Optional[str]
54
59
  API subscription key for authentication
55
60
 
@@ -64,6 +69,8 @@ class TextToSpeechStreamingClient:
64
69
  query_params = httpx.QueryParams()
65
70
  if model is not None:
66
71
  query_params = query_params.add("model", model)
72
+ if send_completion_event is not None:
73
+ query_params = query_params.add("send_completion_event", send_completion_event)
67
74
  ws_url = ws_url + f"?{query_params}"
68
75
  headers = self._raw_client._client_wrapper.get_headers()
69
76
  if api_subscription_key is not None:
@@ -108,6 +115,7 @@ class AsyncTextToSpeechStreamingClient:
108
115
  self,
109
116
  *,
110
117
  model: typing.Optional[typing.Literal["bulbul:v2"]] = None,
118
+ send_completion_event: typing.Optional[TextToSpeechStreamingSendCompletionEvent] = None,
111
119
  api_subscription_key: typing.Optional[str] = None,
112
120
  request_options: typing.Optional[RequestOptions] = None,
113
121
  ) -> typing.AsyncIterator[AsyncTextToSpeechStreamingSocketClient]:
@@ -120,6 +128,9 @@ class AsyncTextToSpeechStreamingClient:
120
128
  model : typing.Optional[typing.Literal["bulbul:v2"]]
121
129
  Text to speech model to use
122
130
 
131
+ send_completion_event : typing.Optional[TextToSpeechStreamingSendCompletionEvent]
132
+ Enable completion event notifications when TTS generation finishes. When set to true, an event message will be sent when the final audio chunk has been generated.
133
+
123
134
  api_subscription_key : typing.Optional[str]
124
135
  API subscription key for authentication
125
136
 
@@ -134,6 +145,8 @@ class AsyncTextToSpeechStreamingClient:
134
145
  query_params = httpx.QueryParams()
135
146
  if model is not None:
136
147
  query_params = query_params.add("model", model)
148
+ if send_completion_event is not None:
149
+ query_params = query_params.add("send_completion_event", send_completion_event)
137
150
  ws_url = ws_url + f"?{query_params}"
138
151
  headers = self._raw_client._client_wrapper.get_headers()
139
152
  if api_subscription_key is not None:
@@ -10,6 +10,7 @@ from ..core.api_error import ApiError
10
10
  from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
11
11
  from ..core.request_options import RequestOptions
12
12
  from .socket_client import AsyncTextToSpeechStreamingSocketClient, TextToSpeechStreamingSocketClient
13
+ from .types.text_to_speech_streaming_send_completion_event import TextToSpeechStreamingSendCompletionEvent
13
14
 
14
15
  try:
15
16
  from websockets.legacy.client import connect as websockets_client_connect # type: ignore
@@ -26,6 +27,7 @@ class RawTextToSpeechStreamingClient:
26
27
  self,
27
28
  *,
28
29
  model: typing.Optional[typing.Literal["bulbul:v2"]] = None,
30
+ send_completion_event: typing.Optional[TextToSpeechStreamingSendCompletionEvent] = None,
29
31
  api_subscription_key: typing.Optional[str] = None,
30
32
  request_options: typing.Optional[RequestOptions] = None,
31
33
  ) -> typing.Iterator[TextToSpeechStreamingSocketClient]:
@@ -38,6 +40,9 @@ class RawTextToSpeechStreamingClient:
38
40
  model : typing.Optional[typing.Literal["bulbul:v2"]]
39
41
  Text to speech model to use
40
42
 
43
+ send_completion_event : typing.Optional[TextToSpeechStreamingSendCompletionEvent]
44
+ Enable completion event notifications when TTS generation finishes. When set to true, an event message will be sent when the final audio chunk has been generated.
45
+
41
46
  api_subscription_key : typing.Optional[str]
42
47
  API subscription key for authentication
43
48
 
@@ -52,6 +57,8 @@ class RawTextToSpeechStreamingClient:
52
57
  query_params = httpx.QueryParams()
53
58
  if model is not None:
54
59
  query_params = query_params.add("model", model)
60
+ if send_completion_event is not None:
61
+ query_params = query_params.add("send_completion_event", send_completion_event)
55
62
  ws_url = ws_url + f"?{query_params}"
56
63
  headers = self._client_wrapper.get_headers()
57
64
  if api_subscription_key is not None:
@@ -85,6 +92,7 @@ class AsyncRawTextToSpeechStreamingClient:
85
92
  self,
86
93
  *,
87
94
  model: typing.Optional[typing.Literal["bulbul:v2"]] = None,
95
+ send_completion_event: typing.Optional[TextToSpeechStreamingSendCompletionEvent] = None,
88
96
  api_subscription_key: typing.Optional[str] = None,
89
97
  request_options: typing.Optional[RequestOptions] = None,
90
98
  ) -> typing.AsyncIterator[AsyncTextToSpeechStreamingSocketClient]:
@@ -97,6 +105,9 @@ class AsyncRawTextToSpeechStreamingClient:
97
105
  model : typing.Optional[typing.Literal["bulbul:v2"]]
98
106
  Text to speech model to use
99
107
 
108
+ send_completion_event : typing.Optional[TextToSpeechStreamingSendCompletionEvent]
109
+ Enable completion event notifications when TTS generation finishes. When set to true, an event message will be sent when the final audio chunk has been generated.
110
+
100
111
  api_subscription_key : typing.Optional[str]
101
112
  API subscription key for authentication
102
113
 
@@ -111,6 +122,8 @@ class AsyncRawTextToSpeechStreamingClient:
111
122
  query_params = httpx.QueryParams()
112
123
  if model is not None:
113
124
  query_params = query_params.add("model", model)
125
+ if send_completion_event is not None:
126
+ query_params = query_params.add("send_completion_event", send_completion_event)
114
127
  ws_url = ws_url + f"?{query_params}"
115
128
  headers = self._client_wrapper.get_headers()
116
129
  if api_subscription_key is not None:
@@ -10,13 +10,14 @@ from ..core.pydantic_utilities import parse_obj_as
10
10
  from ..types.audio_output import AudioOutput
11
11
  from ..types.flush_signal import FlushSignal
12
12
  from ..types.error_response import ErrorResponse
13
+ from ..types.event_response import EventResponse
13
14
  from ..types.configure_connection import ConfigureConnection
14
15
  from ..types.configure_connection_data import ConfigureConnectionData
15
16
  from ..types.ping_signal import PingSignal
16
17
  from ..types.send_text import SendText
17
18
  from ..types.send_text_data import SendTextData
18
19
 
19
- TextToSpeechStreamingSocketClientResponse = typing.Union[AudioOutput, ErrorResponse]
20
+ TextToSpeechStreamingSocketClientResponse = typing.Union[AudioOutput, ErrorResponse, EventResponse]
20
21
 
21
22
 
22
23
  class AsyncTextToSpeechStreamingSocketClient(EventEmitterMixin):
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ from .text_to_speech_streaming_send_completion_event import TextToSpeechStreamingSendCompletionEvent
6
+
7
+ __all__ = ["TextToSpeechStreamingSendCompletionEvent"]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ TextToSpeechStreamingSendCompletionEvent = typing.Union[typing.Literal["true", "false"], typing.Any]
@@ -3,6 +3,7 @@
3
3
  # isort: skip_file
4
4
 
5
5
  from .audio_data import AudioData
6
+ from .audio_data_input_audio_codec import AudioDataInputAudioCodec
6
7
  from .audio_message import AudioMessage
7
8
  from .audio_output import AudioOutput
8
9
  from .audio_output_data import AudioOutputData
@@ -20,6 +21,7 @@ from .chat_completion_request_system_message import ChatCompletionRequestSystemM
20
21
  from .chat_completion_request_user_message import ChatCompletionRequestUserMessage
21
22
  from .chat_completion_response_message import ChatCompletionResponseMessage
22
23
  from .choice import Choice
24
+ from .completion_event_flag import CompletionEventFlag
23
25
  from .completion_usage import CompletionUsage
24
26
  from .config_message import ConfigMessage
25
27
  from .configure_connection import ConfigureConnection
@@ -28,6 +30,7 @@ from .configure_connection_data_output_audio_bitrate import ConfigureConnectionD
28
30
  from .configure_connection_data_output_audio_codec import ConfigureConnectionDataOutputAudioCodec
29
31
  from .configure_connection_data_speaker import ConfigureConnectionDataSpeaker
30
32
  from .configure_connection_data_target_language_code import ConfigureConnectionDataTargetLanguageCode
33
+ from .connection_sample_rate import ConnectionSampleRate
31
34
  from .create_chat_completion_response import CreateChatCompletionResponse
32
35
  from .diarized_entry import DiarizedEntry
33
36
  from .diarized_transcript import DiarizedTranscript
@@ -37,6 +40,8 @@ from .error_details import ErrorDetails
37
40
  from .error_message import ErrorMessage
38
41
  from .error_response import ErrorResponse
39
42
  from .error_response_data import ErrorResponseData
43
+ from .event_response import EventResponse
44
+ from .event_response_data import EventResponseData
40
45
  from .events_data import EventsData
41
46
  from .events_data_signal_type import EventsDataSignalType
42
47
  from .file_signed_url_details import FileSignedUrlDetails
@@ -99,6 +104,7 @@ from .transliteration_response import TransliterationResponse
99
104
 
100
105
  __all__ = [
101
106
  "AudioData",
107
+ "AudioDataInputAudioCodec",
102
108
  "AudioMessage",
103
109
  "AudioOutput",
104
110
  "AudioOutputData",
@@ -114,6 +120,7 @@ __all__ = [
114
120
  "ChatCompletionRequestUserMessage",
115
121
  "ChatCompletionResponseMessage",
116
122
  "Choice",
123
+ "CompletionEventFlag",
117
124
  "CompletionUsage",
118
125
  "ConfigMessage",
119
126
  "ConfigureConnection",
@@ -122,6 +129,7 @@ __all__ = [
122
129
  "ConfigureConnectionDataOutputAudioCodec",
123
130
  "ConfigureConnectionDataSpeaker",
124
131
  "ConfigureConnectionDataTargetLanguageCode",
132
+ "ConnectionSampleRate",
125
133
  "CreateChatCompletionResponse",
126
134
  "DiarizedEntry",
127
135
  "DiarizedTranscript",
@@ -131,6 +139,8 @@ __all__ = [
131
139
  "ErrorMessage",
132
140
  "ErrorResponse",
133
141
  "ErrorResponseData",
142
+ "EventResponse",
143
+ "EventResponseData",
134
144
  "EventsData",
135
145
  "EventsDataSignalType",
136
146
  "FileSignedUrlDetails",
@@ -4,6 +4,7 @@ import typing
4
4
 
5
5
  import pydantic
6
6
  from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .audio_data_input_audio_codec import AudioDataInputAudioCodec
7
8
 
8
9
 
9
10
  class AudioData(UniversalBaseModel):
@@ -14,7 +15,13 @@ class AudioData(UniversalBaseModel):
14
15
 
15
16
  sample_rate: int = pydantic.Field()
16
17
  """
17
- Audio sample rate in Hz (16kHz preferred, 8kHz least preferred)
18
+ Audio sample rate in Hz for individual audio messages.
19
+
20
+ **Backward Compatibility**: This property is maintained for legacy support.
21
+ **Recommended**: Use the connection-level sample_rate parameter instead.
22
+ **Note**: 8kHz is only supported via connection parameter, not in AudioData messages.
23
+
24
+ Supported values: 16kHz (preferred), 22.05kHz, 24kHz
18
25
  """
19
26
 
20
27
  encoding: typing.Literal["audio/wav"] = pydantic.Field(default="audio/wav")
@@ -22,6 +29,11 @@ class AudioData(UniversalBaseModel):
22
29
  Audio encoding format
23
30
  """
24
31
 
32
+ input_audio_codec: typing.Optional[AudioDataInputAudioCodec] = pydantic.Field(default=None)
33
+ """
34
+ Audio codec/format of the input file. Our API automatically detects all codec formats, but for PCM files specifically (pcm_s16le, pcm_l16, pcm_raw), you must pass this parameter. PCM files supports sample rate 16000 and 8000.
35
+ """
36
+
25
37
  if IS_PYDANTIC_V2:
26
38
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
27
39
  else:
@@ -0,0 +1,33 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ AudioDataInputAudioCodec = typing.Union[
6
+ typing.Literal[
7
+ "wav",
8
+ "x-wav",
9
+ "wave",
10
+ "mp3",
11
+ "mpeg",
12
+ "mpeg3",
13
+ "x-mp3",
14
+ "x-mpeg-3",
15
+ "aac",
16
+ "x-aac",
17
+ "aiff",
18
+ "x-aiff",
19
+ "ogg",
20
+ "opus",
21
+ "flac",
22
+ "x-flac",
23
+ "mp4",
24
+ "x-m4a",
25
+ "amr",
26
+ "x-ms-wma",
27
+ "webm",
28
+ "pcm_s16le",
29
+ "pcm_l16",
30
+ "pcm_raw",
31
+ ],
32
+ typing.Any,
33
+ ]
@@ -17,6 +17,11 @@ class AudioOutputData(UniversalBaseModel):
17
17
  Base64-encoded audio data ready for playback or download
18
18
  """
19
19
 
20
+ request_id: typing.Optional[str] = pydantic.Field(default=None)
21
+ """
22
+ Unique identifier for the request
23
+ """
24
+
20
25
  if IS_PYDANTIC_V2:
21
26
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
22
27
  else:
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ CompletionEventFlag = typing.Union[typing.Literal["true", "false"], typing.Any]
@@ -0,0 +1,3 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ ConnectionSampleRate = int
@@ -18,6 +18,11 @@ class ErrorResponseData(UniversalBaseModel):
18
18
  Additional error details and context information
19
19
  """
20
20
 
21
+ request_id: typing.Optional[str] = pydantic.Field(default=None)
22
+ """
23
+ Unique identifier for the request
24
+ """
25
+
21
26
  if IS_PYDANTIC_V2:
22
27
  model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
23
28
  else:
@@ -0,0 +1,29 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ import pydantic
6
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
7
+ from .event_response_data import EventResponseData
8
+
9
+
10
+ class EventResponse(UniversalBaseModel):
11
+ """
12
+ Event notification message sent when specific events occur during TTS processing
13
+ """
14
+
15
+ type: typing.Literal["event"] = pydantic.Field(default="event")
16
+ """
17
+ Message type identifier for events
18
+ """
19
+
20
+ data: EventResponseData
21
+
22
+ if IS_PYDANTIC_V2:
23
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
24
+ else:
25
+
26
+ class Config:
27
+ frozen = True
28
+ smart_union = True
29
+ extra = pydantic.Extra.allow
@@ -0,0 +1,33 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import datetime as dt
4
+ import typing
5
+
6
+ import pydantic
7
+ from ..core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
8
+
9
+
10
+ class EventResponseData(UniversalBaseModel):
11
+ event_type: typing.Literal["final"] = pydantic.Field(default="final")
12
+ """
13
+ Type of event that occurred
14
+ """
15
+
16
+ message: typing.Optional[str] = pydantic.Field(default=None)
17
+ """
18
+ Human-readable description of the event
19
+ """
20
+
21
+ timestamp: typing.Optional[dt.datetime] = pydantic.Field(default=None)
22
+ """
23
+ ISO 8601 timestamp when the event occurred
24
+ """
25
+
26
+ if IS_PYDANTIC_V2:
27
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
28
+ else:
29
+
30
+ class Config:
31
+ frozen = True
32
+ smart_union = True
33
+ extra = pydantic.Extra.allow
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sarvamai
3
- Version: 0.1.19a4
3
+ Version: 0.1.20
4
4
  Summary:
5
5
  Requires-Python: >=3.8,<4.0
6
6
  Classifier: Intended Audience :: Developers
@@ -1,11 +1,11 @@
1
- sarvamai/__init__.py,sha256=R2X_oWI35aSTjAskLMeKysc5rt17-ldLPc8vhkfGku4,10964
1
+ sarvamai/__init__.py,sha256=-HM4Xf9WWwFScK90X45K7GH1AHZL6w7UcIRVE7VULvo,11649
2
2
  sarvamai/chat/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
3
3
  sarvamai/chat/client.py,sha256=xOSj83Gr6Q7eY2qUeATiuXYQqBqWqSCQlIEopK5fKus,11022
4
4
  sarvamai/chat/raw_client.py,sha256=A2kRuZcVWlJhyYCD7YKgqNkZEp3cYa1731KhRkhirU0,17885
5
5
  sarvamai/client.py,sha256=J30X_os1lPf8Wml0KDFEf6p8VGHhgF_lf3nw1T2D3qo,8207
6
6
  sarvamai/core/__init__.py,sha256=YE2CtXeASe1RAbaI39twKWYKCuT4tW5is9HWHhJjR_g,1653
7
7
  sarvamai/core/api_error.py,sha256=44vPoTyWN59gonCIZMdzw7M1uspygiLnr3GNFOoVL2Q,614
8
- sarvamai/core/client_wrapper.py,sha256=BK8Ar_78PjHDygIIauggfoK0RXjBmmGfZBCyetxMOXo,2570
8
+ sarvamai/core/client_wrapper.py,sha256=gMpWLx54KbUtkjk4mz2D23tab_DbaNxkRVoK4BW3W74,2566
9
9
  sarvamai/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
10
10
  sarvamai/core/events.py,sha256=HvKBdSoYcFetk7cgNXb7FxuY-FtY8NtUhZIN7mGVx8U,1159
11
11
  sarvamai/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
@@ -28,11 +28,11 @@ sarvamai/errors/too_many_requests_error.py,sha256=Dl-_pfpboXJh-OtSbRaPQOB-UXvpVO
28
28
  sarvamai/errors/unprocessable_entity_error.py,sha256=JqxtzIhvjkpQDqbT9Q-go1n-gyv9PsYqq0ng_ZYyBMo,347
29
29
  sarvamai/play.py,sha256=4fh86zy8g8IPU2O8yPBY7QxXQOivv_nWQvPQsOa1arw,2183
30
30
  sarvamai/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
- sarvamai/requests/__init__.py,sha256=nAXyZKbjwhLTxvfb1kaxOxZpyFvWwQu30Yr5HqgOZXw,5702
32
- sarvamai/requests/audio_data.py,sha256=QI3SK5aiAg2yJ-m3l9CxOkONnH3CCKMFCl9kAdMs19o,410
31
+ sarvamai/requests/__init__.py,sha256=jL9z3hA1vtYkoCLOIlBUOmiE31WEyDtSC81jRhC6X8g,5865
32
+ sarvamai/requests/audio_data.py,sha256=weVNgM3zaHim3a17qvXD5ayyhaJ8MnzWJWATOjRuhvM,1116
33
33
  sarvamai/requests/audio_message.py,sha256=ZBeogjGE6YFXXM-0g8zq9SoizDk21reR0YXSB-0fMjg,214
34
34
  sarvamai/requests/audio_output.py,sha256=BnoX345rwoWgaMaj24u_19-SjmPV0xt7vlFEEDKRw20,280
35
- sarvamai/requests/audio_output_data.py,sha256=v5s67mI1RNO20-C39lRXWpHgV13yOPXML1VrZHke9sY,349
35
+ sarvamai/requests/audio_output_data.py,sha256=6-pmWDr9U99xDB2Khw8r3W0Mt4oRo1jPEvHWqeeOR6s,455
36
36
  sarvamai/requests/base_job_parameters.py,sha256=5-DGqoCcIt5PM_-LO8hzuTqnuW5arxpEzimAmL9rLKM,161
37
37
  sarvamai/requests/bulk_job_callback.py,sha256=6MvZSY0l2lch9skJzy8qBpuZ9KJoLv3ZL7SYP2rNlUI,345
38
38
  sarvamai/requests/bulk_job_init_response_v_1.py,sha256=prWUzJ5x3pdOdInKqeVahKWYL5uvwf7gOlecgZU2qfE,524
@@ -53,7 +53,9 @@ sarvamai/requests/error_data.py,sha256=u87qHVagiqyyowBgMDAPPLlZzr0Z5GXlOU7VIUzfQ
53
53
  sarvamai/requests/error_details.py,sha256=By7cYfitQynAM1D5_3yFc22zXQJEceNgkhoyGWmg4zw,529
54
54
  sarvamai/requests/error_message.py,sha256=-J21pfEJghsms4pNe55O_9qkODNd-BKLMt96AOztYUs,257
55
55
  sarvamai/requests/error_response.py,sha256=A8j12JQ7JJkUcnt26k2M9uwXXkwyT-LNqG3BO3U8NIk,288
56
- sarvamai/requests/error_response_data.py,sha256=l9tGTykaKZ8pKxdw9RKitpW49kKcs4aGibH7rKG2v7w,461
56
+ sarvamai/requests/error_response_data.py,sha256=t-kD8EQAV8ZKB_S4r3BnNrWTJijsiK6mazX2m77KxkQ,567
57
+ sarvamai/requests/event_response.py,sha256=Mk5lXlcmFmn50-99TWqLoLMuDl9pVT9B9JcOGaAZVZM,446
58
+ sarvamai/requests/event_response_data.py,sha256=2IzBUllUSrbxU6-JS-CgdnImT6NT3Q7yh81tmn2g_7A,508
57
59
  sarvamai/requests/events_data.py,sha256=DgwSqyeFzL36i1z72mxKGP1qGjs27GpO1h9fL-ziWqo,728
58
60
  sarvamai/requests/file_signed_url_details.py,sha256=s1ah-U99qq1DZOJr1SHVyknnCZTDS7tkw_XWgdqyZVM,284
59
61
  sarvamai/requests/files_download_response.py,sha256=lQg7yVJtiMvt4OR0WcDbaL9jCi77wY9iFJ0StFsTTZY,491
@@ -91,13 +93,14 @@ sarvamai/speech_to_text_job/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23
91
93
  sarvamai/speech_to_text_job/client.py,sha256=WSGBJxYcNxl77Zd1X6VVWjg4zshqecXf6WCyhfLXVlI,18007
92
94
  sarvamai/speech_to_text_job/job.py,sha256=K8HOmwrYd6l82-MZfWDBmNkZeeERyg9YOihnFfvl-Js,15021
93
95
  sarvamai/speech_to_text_job/raw_client.py,sha256=OZTPzMhAn-ckE_xKzfZ9QLsEX5EZVOJS0Pf-PBa19jM,48200
94
- sarvamai/speech_to_text_streaming/__init__.py,sha256=aVcI8kSlUpwLrPtA-4oUkuJ_D9Onha_qU49lA2vtEqU,515
95
- sarvamai/speech_to_text_streaming/client.py,sha256=15k-UH2ROia2EymXia0BxVKbzBz7k1Rh9k7L9hgO5Fg,9206
96
- sarvamai/speech_to_text_streaming/raw_client.py,sha256=69hAAD9mcpplo3gR7B5JXbo6Yys8bPT3DfSk1FjyI8Q,8387
97
- sarvamai/speech_to_text_streaming/socket_client.py,sha256=N0wjuQ37WtTggQysWfB8pOwLIwmIkGRglZO9N2y5yHI,7870
98
- sarvamai/speech_to_text_streaming/types/__init__.py,sha256=A99VJwG5fkik5SFTMDMKPZCjvKSaU2aQ02EbA5rrDlM,723
96
+ sarvamai/speech_to_text_streaming/__init__.py,sha256=l7yGZbLTVWVq63Y1mt_WuX2oyPiXDyc0E-BIonyPYP0,601
97
+ sarvamai/speech_to_text_streaming/client.py,sha256=PqQfzgALEE8p-rpudmsGWR_lMlKy5SsCelQFqUpyzA8,11237
98
+ sarvamai/speech_to_text_streaming/raw_client.py,sha256=Xzq4MSL7isxBa6JFqzd7U4knPNzauGiTVKNsXXaKsW4,10418
99
+ sarvamai/speech_to_text_streaming/socket_client.py,sha256=P6qXRN0s3UFAp6CP5lkqrW2KPK9me70ZVfWquxLB4wI,7538
100
+ sarvamai/speech_to_text_streaming/types/__init__.py,sha256=6DNWJo4YFCAEqTC3hqEGBJwnDTaj48o0v_3vlVfdOAI,860
99
101
  sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_flush_signal.py,sha256=dDJOBlzAjhuiSVqW2RHHY1f6xy0DU_Yoo9UV8-7MjnA,173
100
102
  sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_high_vad_sensitivity.py,sha256=OwPwffa8TkLPGMnOTn5S7d-HmV8QmN3B7fHz8I1-VT8,180
103
+ sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_input_audio_codec.py,sha256=yfINVbnoiAvhDskwVkpnFv10Q9SzU104oRJR-n__ugc,584
101
104
  sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_language_code.py,sha256=LxgEifmgWTCFZn9U-f-TWKxRPng3a2J26Zt526QrA0Y,267
102
105
  sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_model.py,sha256=b6F4ymgz4got6KVDqrweYvkET8itze63wUwWyjqDlO4,180
103
106
  sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_vad_signals.py,sha256=8wiFOB7WDMbYCcMTYgNFJaIjEytYeXpJLwr_O_mH0TI,172
@@ -105,13 +108,14 @@ sarvamai/speech_to_text_translate_job/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3
105
108
  sarvamai/speech_to_text_translate_job/client.py,sha256=xu8kYtCESDB7LzL8YKBUq5qhTPMIl3_H3XD2L_7y4UU,18969
106
109
  sarvamai/speech_to_text_translate_job/job.py,sha256=DU4k3eB28V8N16M_QEchakVng4IOul6_Qrdn3FumgHA,15208
107
110
  sarvamai/speech_to_text_translate_job/raw_client.py,sha256=dAitbu2B9afPK6iT9zNjUJnE5BIr5-lrAlwrfwFxdkU,49507
108
- sarvamai/speech_to_text_translate_streaming/__init__.py,sha256=sDeWLagKUTg34tL7vpNNwr2gX4AznEn6NAy9jY-Znf4,507
109
- sarvamai/speech_to_text_translate_streaming/client.py,sha256=41FAJekotqq08tDdxWqhT966B5Ofx9MuZgHAJ9xmwRQ,9137
110
- sarvamai/speech_to_text_translate_streaming/raw_client.py,sha256=P-p7pNJNLrgra4HoUx1vG34RcLADYfQEpoVMYe-aMa0,8246
111
- sarvamai/speech_to_text_translate_streaming/socket_client.py,sha256=N0-mlrD1c6J34hb3YOjUrpvhGyCE62j_CeFnrdQGjUU,9233
112
- sarvamai/speech_to_text_translate_streaming/types/__init__.py,sha256=sK4Zv64ZcV33opFFaVd1kgnQnzjfXrSDhUwiEM85sZc,708
111
+ sarvamai/speech_to_text_translate_streaming/__init__.py,sha256=_DvueqU3i0P_nIaCgPyfO0-I2dPkNZpamKpyB4nXPhU,611
112
+ sarvamai/speech_to_text_translate_streaming/client.py,sha256=h7glgfA6bO5acuzz6yAZsdL0FyOj4Tq2HoSqG0FHZK0,11223
113
+ sarvamai/speech_to_text_translate_streaming/raw_client.py,sha256=ArNbRV21MRZEmO6VDknYQDTdqfhK7h1lF8S_ucj5eM8,10332
114
+ sarvamai/speech_to_text_translate_streaming/socket_client.py,sha256=ipEPSj5eHAyDpuEXfaP7JJL1rXJXGEo-IB888ReAFKs,8901
115
+ sarvamai/speech_to_text_translate_streaming/types/__init__.py,sha256=__-K5UkFN9kA_-6kw6ApPt616nPsu8L2GS5CiJILb28,873
113
116
  sarvamai/speech_to_text_translate_streaming/types/speech_to_text_translate_streaming_flush_signal.py,sha256=jkjvCGJ1pFKi3AOTkwMW-lo18WGgrgAhMpoe5P0AMzA,182
114
117
  sarvamai/speech_to_text_translate_streaming/types/speech_to_text_translate_streaming_high_vad_sensitivity.py,sha256=r6MvTlkM0VEpb4dpnMHtINOZ-gYc22o0Fx_Xce2rjvo,189
118
+ sarvamai/speech_to_text_translate_streaming/types/speech_to_text_translate_streaming_input_audio_codec.py,sha256=IwO6IF9BQU5MpGWs7m-w0dV8yp__7s4y3L4hHDErBWM,593
115
119
  sarvamai/speech_to_text_translate_streaming/types/speech_to_text_translate_streaming_model.py,sha256=6B8VxkpJG_pNprCSctseDtJb_ULVdKrPaeENkQ6Jvjg,187
116
120
  sarvamai/speech_to_text_translate_streaming/types/speech_to_text_translate_streaming_vad_signals.py,sha256=EV3xd9qyKMnMvA9rO-qFDDIac4b84roBu7n-maaPxG8,181
117
121
  sarvamai/text/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
@@ -120,15 +124,18 @@ sarvamai/text/raw_client.py,sha256=7xYmJA50kTKy_gj8tkAPckKp2djHB37zOdm0_icbMb8,4
120
124
  sarvamai/text_to_speech/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
121
125
  sarvamai/text_to_speech/client.py,sha256=iwrQNfoMgCSOgvztTIXtLHQmSmn0RInwt5RSo9TwdtA,9617
122
126
  sarvamai/text_to_speech/raw_client.py,sha256=si_aSjMR7SocIpKZFoVYqBmaIDuRm_6vxTM0dJ73PEo,15569
123
- sarvamai/text_to_speech_streaming/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUzqhXJa4,85
124
- sarvamai/text_to_speech_streaming/client.py,sha256=tcYTUmWGseGQkLOsJdO4S3eZrFstjaLCPi5OcKflfus,6306
125
- sarvamai/text_to_speech_streaming/raw_client.py,sha256=VdL5HYpUotIm5HaOqTwRkyZqoV0BuzwCtAfcB0g1y10,5487
126
- sarvamai/text_to_speech_streaming/socket_client.py,sha256=NEcijnvjuNcWfzqpBi-xWsXVkL0NPq6EGAkEjnaq9hw,13909
127
- sarvamai/types/__init__.py,sha256=Zydymb6llnD7V1vFWM42RrXvyxvtE84e5ayeXL5iV30,7929
128
- sarvamai/types/audio_data.py,sha256=rgOukLkLNJ_HBBVE2g5dfEL2CWjRoGiMvCtpq0qTB1Y,829
127
+ sarvamai/text_to_speech_streaming/__init__.py,sha256=TjBDNPwnsPQpuVZzh7Xi27A51pEEfVyaC8dpvafkmvQ,201
128
+ sarvamai/text_to_speech_streaming/client.py,sha256=3WsyEcRI6h5EUeGCNZzWG-t-VJA2a7ceoGkXKBBNq7s,7415
129
+ sarvamai/text_to_speech_streaming/raw_client.py,sha256=CHX4t6SiwEvRTflnKI61q0Z3GtjHzHb4Xz-yk2exxeU,6596
130
+ sarvamai/text_to_speech_streaming/socket_client.py,sha256=aun1nyc5ZYziXP0FmyvkCB0WKa_VdjA0XHYI2-Z_gCo,13973
131
+ sarvamai/text_to_speech_streaming/types/__init__.py,sha256=fx2VJtnbh4RFUETiV2aPGslEQ0lq_us4UjDbQr_2J6I,242
132
+ sarvamai/text_to_speech_streaming/types/text_to_speech_streaming_send_completion_event.py,sha256=cZWm6cAwNwPGF8ZADtnRev_AsgM_xj5ypg2oHHQfgZI,181
133
+ sarvamai/types/__init__.py,sha256=hBtXC7VLxZdrBEPs7-Ym6c3fYlJJS1VxHbfb4J8CcEM,8334
134
+ sarvamai/types/audio_data.py,sha256=g-sQcFXiV0uFAsUJ_TjM3OSnPoCUmNkMORRJHOl152k,1545
135
+ sarvamai/types/audio_data_input_audio_codec.py,sha256=Xb3UEr2wTniW0z8ND4iV051YHhgFazIFOd7q7UGH3nY,572
129
136
  sarvamai/types/audio_message.py,sha256=sB4EgkWkWJzipYXobkmM9AYZTTZtCpg_ySKssUeznUE,560
130
137
  sarvamai/types/audio_output.py,sha256=Eq-YUZa1mSDwt7bax2c4Vv2gBlyM_JBJWzHhTAhFSko,621
131
- sarvamai/types/audio_output_data.py,sha256=Og-yoeYzL--9G0-HATRe_M_XkKP6uLWuc1Qxbjte8LI,745
138
+ sarvamai/types/audio_output_data.py,sha256=WMT8W_48uhosfvLOmyyfnCxPKMlgPFDfi3tjjgW8jFY,868
132
139
  sarvamai/types/base_job_parameters.py,sha256=x-6SDzT2JxsGNUNuMskw8drWj6UwqgCaeo33XrlgKvo,509
133
140
  sarvamai/types/bulk_job_callback.py,sha256=mEpKCadWIqZhXlaJztnAhGmydln_6ykvEotFGEQ0RtI,739
134
141
  sarvamai/types/bulk_job_init_response_v_1.py,sha256=iYr_jSp443R1IoQdlLtDK6f78z2x-47feBnhUXCdWBU,894
@@ -138,6 +145,7 @@ sarvamai/types/chat_completion_request_system_message.py,sha256=E7YhTk1zr4u7dj_y
138
145
  sarvamai/types/chat_completion_request_user_message.py,sha256=J3WhlrfOfCCe7ugmJIfP_L9st3OFtXkIjZTSuR8O9nQ,615
139
146
  sarvamai/types/chat_completion_response_message.py,sha256=wz935eBnCkSIl0I0qMxBuH4vAUCso1aHDGReMW1VHGE,744
140
147
  sarvamai/types/choice.py,sha256=uXBCsjWP9VK3XWQWZUeI4EnU10w0G9nAfKn2tJZvxko,1244
148
+ sarvamai/types/completion_event_flag.py,sha256=HdvjxXha9Ux5KS_Lfp7Q5eaX62eIk4bXcuJgfhGFXf4,160
141
149
  sarvamai/types/completion_usage.py,sha256=xYQGlQUbKqsksuV73H-1ajjfT5M7w47eLfdWXSlrI5M,843
142
150
  sarvamai/types/config_message.py,sha256=xLD2wZcXejYrmREMd-cn38da4hKfsNPKRtyAGCW0Zcg,779
143
151
  sarvamai/types/configure_connection.py,sha256=SnSNk02gQqP8e4VB4y88jjeFQ4ClpImjGLn2ANI8cZ4,1058
@@ -146,6 +154,7 @@ sarvamai/types/configure_connection_data_output_audio_bitrate.py,sha256=h00YvKLx
146
154
  sarvamai/types/configure_connection_data_output_audio_codec.py,sha256=g4I1hS_zExMJbjwwqM6AsLt8zikSugOeMs_xkIINFBo,235
147
155
  sarvamai/types/configure_connection_data_speaker.py,sha256=SzyAiK5LynXwb9KniaO2qoOLY-II3-PMZbRuIsQ9shw,230
148
156
  sarvamai/types/configure_connection_data_target_language_code.py,sha256=jrU1EblAtDYbybUO1KUkHhevmlSBj2AQxX13ii3QhAQ,275
157
+ sarvamai/types/connection_sample_rate.py,sha256=_86hgA9b4JC_wvDizIsokIWm7GlDcD4C1QnZ2u5LuUc,92
149
158
  sarvamai/types/create_chat_completion_response.py,sha256=4nEzeWzHGW1_BmRAtOuGsbRZ0ojNgnzJSMUFyYuYviw,1285
150
159
  sarvamai/types/diarized_entry.py,sha256=kf9DLrcoMHZdTKNCAaF0z46q_iAe7CE-DFP4CNrZGTw,896
151
160
  sarvamai/types/diarized_transcript.py,sha256=a491XmALLE7AQcByaaOYTew0BZoFTlewEMHLMJyj-Js,669
@@ -154,7 +163,9 @@ sarvamai/types/error_data.py,sha256=gdlrdKLkfgGoe-znCCfWTikKlf07iZy1l4lgPyZTPwE,
154
163
  sarvamai/types/error_details.py,sha256=Faggc5PWERfCN2d9E5JzsEMNq9XSnoPTEdgi0lL8ea0,935
155
164
  sarvamai/types/error_message.py,sha256=i_vDykKyMlkWLhJCpMAeYI1NzRDFsW2CTU4-mzdBAfE,622
156
165
  sarvamai/types/error_response.py,sha256=3m17Aj3GY_-mSY2lH-GkbuiyewTm-wNL9UQ1exLvXyQ,629
157
- sarvamai/types/error_response_data.py,sha256=hncN_zmPg8kqSHjNciYLn2QeNqzqHxKiZDlKOvjKdwA,838
166
+ sarvamai/types/error_response_data.py,sha256=3OzlX46boFwfUVh6nBZRzRbf_Z3EcY4CBqT9MWk9fPw,961
167
+ sarvamai/types/event_response.py,sha256=95pQQ8NApQ0jCRO4045vvW_GfnEkuecgptXmCMeR5fE,811
168
+ sarvamai/types/event_response_data.py,sha256=tbyMxPhcC3MRWtgxKWF1VC1g_jmW5S0x0mUMARVbrmw,919
158
169
  sarvamai/types/events_data.py,sha256=9Gt9CuKF9Y9LmidxAxqTaE2SJgRhEIV_5Nk7X_S-HgU,1146
159
170
  sarvamai/types/events_data_signal_type.py,sha256=MkzFNa4PnviktXIp8ltcYBA5MhQ1aWAkU_bZAIyNN9s,174
160
171
  sarvamai/types/file_signed_url_details.py,sha256=_Zc1NMHxB94mNDFfbEpXPK4Z0X3i_nSiWFDH1oEX4uo,620
@@ -215,6 +226,6 @@ sarvamai/types/transliterate_mode.py,sha256=1jSEMlGcoLkWuk12TgoOpSgwifa4rThGKZ1h
215
226
  sarvamai/types/transliterate_source_language.py,sha256=bSY9wJszF0sg-Cgg6F-YcWC8ly1mIlj9rqa15-jBtx8,283
216
227
  sarvamai/types/transliteration_response.py,sha256=yt-lzTbDeJ_ZL4I8kQa6oESxA9ebeJJY7LfFHpdEsmM,815
217
228
  sarvamai/version.py,sha256=Qkp3Ee9YH-O9RTix90e0i7iNrFAGN-QDt2AFwGA4n8k,75
218
- sarvamai-0.1.19a4.dist-info/METADATA,sha256=mSViecVfsuzbz7ZNmv0ufqg-LOkyWJUX65vhCUV71E8,26753
219
- sarvamai-0.1.19a4.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
220
- sarvamai-0.1.19a4.dist-info/RECORD,,
229
+ sarvamai-0.1.20.dist-info/METADATA,sha256=90IUQDsGLLKmYaX4j2Kx8dloU-D5k-oY6uS9GcvF46w,26751
230
+ sarvamai-0.1.20.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
231
+ sarvamai-0.1.20.dist-info/RECORD,,