sarvamai 0.1.21__py3-none-any.whl → 0.1.22a2__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.
sarvamai/__init__.py CHANGED
@@ -56,6 +56,7 @@ from .types import (
56
56
  NumeralsFormat,
57
57
  PingSignal,
58
58
  ReasoningEffort,
59
+ ResponseSpeechState,
59
60
  ResponseType,
60
61
  Role,
61
62
  SarvamModelIds,
@@ -297,6 +298,7 @@ __all__ = [
297
298
  "PingSignal",
298
299
  "PingSignalParams",
299
300
  "ReasoningEffort",
301
+ "ResponseSpeechState",
300
302
  "ResponseType",
301
303
  "Role",
302
304
  "SarvamAI",
@@ -23,10 +23,10 @@ class BaseClientWrapper:
23
23
 
24
24
  def get_headers(self) -> typing.Dict[str, str]:
25
25
  headers: typing.Dict[str, str] = {
26
- "User-Agent": "sarvamai/0.1.21",
26
+ "User-Agent": "sarvamai/0.1.22a2",
27
27
  "X-Fern-Language": "Python",
28
28
  "X-Fern-SDK-Name": "sarvamai",
29
- "X-Fern-SDK-Version": "0.1.21",
29
+ "X-Fern-SDK-Version": "0.1.22a2",
30
30
  **(self.get_custom_headers() or {}),
31
31
  }
32
32
  headers["api-subscription-key"] = self.api_subscription_key
@@ -3,6 +3,7 @@
3
3
  import typing
4
4
 
5
5
  import typing_extensions
6
+ from ..types.response_speech_state import ResponseSpeechState
6
7
  from .transcription_metrics import TranscriptionMetricsParams
7
8
 
8
9
 
@@ -32,4 +33,9 @@ class SpeechToTextTranscriptionDataParams(typing_extensions.TypedDict):
32
33
  BCP-47 code of detected language
33
34
  """
34
35
 
36
+ response_speech_state: typing_extensions.NotRequired[ResponseSpeechState]
37
+ """
38
+ Current state of speech detection and processing
39
+ """
40
+
35
41
  metrics: TranscriptionMetricsParams
@@ -1,6 +1,7 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
3
  import typing_extensions
4
+ from ..types.response_speech_state import ResponseSpeechState
4
5
  from .transcription_metrics import TranscriptionMetricsParams
5
6
 
6
7
 
@@ -20,4 +21,9 @@ class SpeechToTextTranslateTranscriptionDataParams(typing_extensions.TypedDict):
20
21
  BCP-47 code of detected source language (null when language detection is in progress)
21
22
  """
22
23
 
24
+ response_speech_state: typing_extensions.NotRequired[ResponseSpeechState]
25
+ """
26
+ Current state of speech detection and processing
27
+ """
28
+
23
29
  metrics: TranscriptionMetricsParams
@@ -49,11 +49,17 @@ class SpeechToTextStreamingClient:
49
49
  high_vad_sensitivity: typing.Optional[SpeechToTextStreamingHighVadSensitivity] = None,
50
50
  vad_signals: typing.Optional[SpeechToTextStreamingVadSignals] = None,
51
51
  flush_signal: typing.Optional[SpeechToTextStreamingFlushSignal] = None,
52
+ stream_ongoing_speech_results: typing.Optional[str] = None,
53
+ streaming_ongoing_requests_frame_size: typing.Optional[str] = None,
52
54
  api_subscription_key: typing.Optional[str] = None,
53
55
  request_options: typing.Optional[RequestOptions] = None,
54
56
  ) -> typing.Iterator[SpeechToTextStreamingSocketClient]:
55
57
  """
56
- WebSocket channel for real-time speech to text streaming
58
+ WebSocket channel for real-time speech to text streaming.
59
+
60
+ **Note:** This API Reference page is provided for informational purposes only.
61
+ The Try It playground may not provide the best experience for streaming audio.
62
+ For optimal streaming performance, please use the SDK or implement your own WebSocket client.
57
63
 
58
64
  Parameters
59
65
  ----------
@@ -78,6 +84,12 @@ class SpeechToTextStreamingClient:
78
84
  flush_signal : typing.Optional[SpeechToTextStreamingFlushSignal]
79
85
  Signal to flush the audio buffer and finalize transcription
80
86
 
87
+ stream_ongoing_speech_results : typing.Optional[str]
88
+ Enable streaming of ongoing speech results during active speech
89
+
90
+ streaming_ongoing_requests_frame_size : typing.Optional[str]
91
+ Frame size for streaming ongoing speech results (1-100)
92
+
81
93
  api_subscription_key : typing.Optional[str]
82
94
  API subscription key for authentication
83
95
 
@@ -104,6 +116,12 @@ class SpeechToTextStreamingClient:
104
116
  query_params = query_params.add("vad_signals", vad_signals)
105
117
  if flush_signal is not None:
106
118
  query_params = query_params.add("flush_signal", flush_signal)
119
+ if stream_ongoing_speech_results is not None:
120
+ query_params = query_params.add("stream_ongoing_speech_results", stream_ongoing_speech_results)
121
+ if streaming_ongoing_requests_frame_size is not None:
122
+ query_params = query_params.add(
123
+ "streaming_ongoing_requests_frame_size", streaming_ongoing_requests_frame_size
124
+ )
107
125
  ws_url = ws_url + f"?{query_params}"
108
126
  headers = self._raw_client._client_wrapper.get_headers()
109
127
  if api_subscription_key is not None:
@@ -154,11 +172,17 @@ class AsyncSpeechToTextStreamingClient:
154
172
  high_vad_sensitivity: typing.Optional[SpeechToTextStreamingHighVadSensitivity] = None,
155
173
  vad_signals: typing.Optional[SpeechToTextStreamingVadSignals] = None,
156
174
  flush_signal: typing.Optional[SpeechToTextStreamingFlushSignal] = None,
175
+ stream_ongoing_speech_results: typing.Optional[str] = None,
176
+ streaming_ongoing_requests_frame_size: typing.Optional[str] = None,
157
177
  api_subscription_key: typing.Optional[str] = None,
158
178
  request_options: typing.Optional[RequestOptions] = None,
159
179
  ) -> typing.AsyncIterator[AsyncSpeechToTextStreamingSocketClient]:
160
180
  """
161
- WebSocket channel for real-time speech to text streaming
181
+ WebSocket channel for real-time speech to text streaming.
182
+
183
+ **Note:** This API Reference page is provided for informational purposes only.
184
+ The Try It playground may not provide the best experience for streaming audio.
185
+ For optimal streaming performance, please use the SDK or implement your own WebSocket client.
162
186
 
163
187
  Parameters
164
188
  ----------
@@ -183,6 +207,12 @@ class AsyncSpeechToTextStreamingClient:
183
207
  flush_signal : typing.Optional[SpeechToTextStreamingFlushSignal]
184
208
  Signal to flush the audio buffer and finalize transcription
185
209
 
210
+ stream_ongoing_speech_results : typing.Optional[str]
211
+ Enable streaming of ongoing speech results during active speech
212
+
213
+ streaming_ongoing_requests_frame_size : typing.Optional[str]
214
+ Frame size for streaming ongoing speech results (1-100)
215
+
186
216
  api_subscription_key : typing.Optional[str]
187
217
  API subscription key for authentication
188
218
 
@@ -209,6 +239,12 @@ class AsyncSpeechToTextStreamingClient:
209
239
  query_params = query_params.add("vad_signals", vad_signals)
210
240
  if flush_signal is not None:
211
241
  query_params = query_params.add("flush_signal", flush_signal)
242
+ if stream_ongoing_speech_results is not None:
243
+ query_params = query_params.add("stream_ongoing_speech_results", stream_ongoing_speech_results)
244
+ if streaming_ongoing_requests_frame_size is not None:
245
+ query_params = query_params.add(
246
+ "streaming_ongoing_requests_frame_size", streaming_ongoing_requests_frame_size
247
+ )
212
248
  ws_url = ws_url + f"?{query_params}"
213
249
  headers = self._raw_client._client_wrapper.get_headers()
214
250
  if api_subscription_key is not None:
@@ -37,11 +37,17 @@ class RawSpeechToTextStreamingClient:
37
37
  high_vad_sensitivity: typing.Optional[SpeechToTextStreamingHighVadSensitivity] = None,
38
38
  vad_signals: typing.Optional[SpeechToTextStreamingVadSignals] = None,
39
39
  flush_signal: typing.Optional[SpeechToTextStreamingFlushSignal] = None,
40
+ stream_ongoing_speech_results: typing.Optional[str] = None,
41
+ streaming_ongoing_requests_frame_size: typing.Optional[str] = None,
40
42
  api_subscription_key: typing.Optional[str] = None,
41
43
  request_options: typing.Optional[RequestOptions] = None,
42
44
  ) -> typing.Iterator[SpeechToTextStreamingSocketClient]:
43
45
  """
44
- WebSocket channel for real-time speech to text streaming
46
+ WebSocket channel for real-time speech to text streaming.
47
+
48
+ **Note:** This API Reference page is provided for informational purposes only.
49
+ The Try It playground may not provide the best experience for streaming audio.
50
+ For optimal streaming performance, please use the SDK or implement your own WebSocket client.
45
51
 
46
52
  Parameters
47
53
  ----------
@@ -66,6 +72,12 @@ class RawSpeechToTextStreamingClient:
66
72
  flush_signal : typing.Optional[SpeechToTextStreamingFlushSignal]
67
73
  Signal to flush the audio buffer and finalize transcription
68
74
 
75
+ stream_ongoing_speech_results : typing.Optional[str]
76
+ Enable streaming of ongoing speech results during active speech
77
+
78
+ streaming_ongoing_requests_frame_size : typing.Optional[str]
79
+ Frame size for streaming ongoing speech results (1-100)
80
+
69
81
  api_subscription_key : typing.Optional[str]
70
82
  API subscription key for authentication
71
83
 
@@ -92,6 +104,12 @@ class RawSpeechToTextStreamingClient:
92
104
  query_params = query_params.add("vad_signals", vad_signals)
93
105
  if flush_signal is not None:
94
106
  query_params = query_params.add("flush_signal", flush_signal)
107
+ if stream_ongoing_speech_results is not None:
108
+ query_params = query_params.add("stream_ongoing_speech_results", stream_ongoing_speech_results)
109
+ if streaming_ongoing_requests_frame_size is not None:
110
+ query_params = query_params.add(
111
+ "streaming_ongoing_requests_frame_size", streaming_ongoing_requests_frame_size
112
+ )
95
113
  ws_url = ws_url + f"?{query_params}"
96
114
  headers = self._client_wrapper.get_headers()
97
115
  if api_subscription_key is not None:
@@ -131,11 +149,17 @@ class AsyncRawSpeechToTextStreamingClient:
131
149
  high_vad_sensitivity: typing.Optional[SpeechToTextStreamingHighVadSensitivity] = None,
132
150
  vad_signals: typing.Optional[SpeechToTextStreamingVadSignals] = None,
133
151
  flush_signal: typing.Optional[SpeechToTextStreamingFlushSignal] = None,
152
+ stream_ongoing_speech_results: typing.Optional[str] = None,
153
+ streaming_ongoing_requests_frame_size: typing.Optional[str] = None,
134
154
  api_subscription_key: typing.Optional[str] = None,
135
155
  request_options: typing.Optional[RequestOptions] = None,
136
156
  ) -> typing.AsyncIterator[AsyncSpeechToTextStreamingSocketClient]:
137
157
  """
138
- WebSocket channel for real-time speech to text streaming
158
+ WebSocket channel for real-time speech to text streaming.
159
+
160
+ **Note:** This API Reference page is provided for informational purposes only.
161
+ The Try It playground may not provide the best experience for streaming audio.
162
+ For optimal streaming performance, please use the SDK or implement your own WebSocket client.
139
163
 
140
164
  Parameters
141
165
  ----------
@@ -160,6 +184,12 @@ class AsyncRawSpeechToTextStreamingClient:
160
184
  flush_signal : typing.Optional[SpeechToTextStreamingFlushSignal]
161
185
  Signal to flush the audio buffer and finalize transcription
162
186
 
187
+ stream_ongoing_speech_results : typing.Optional[str]
188
+ Enable streaming of ongoing speech results during active speech
189
+
190
+ streaming_ongoing_requests_frame_size : typing.Optional[str]
191
+ Frame size for streaming ongoing speech results (1-100)
192
+
163
193
  api_subscription_key : typing.Optional[str]
164
194
  API subscription key for authentication
165
195
 
@@ -186,6 +216,12 @@ class AsyncRawSpeechToTextStreamingClient:
186
216
  query_params = query_params.add("vad_signals", vad_signals)
187
217
  if flush_signal is not None:
188
218
  query_params = query_params.add("flush_signal", flush_signal)
219
+ if stream_ongoing_speech_results is not None:
220
+ query_params = query_params.add("stream_ongoing_speech_results", stream_ongoing_speech_results)
221
+ if streaming_ongoing_requests_frame_size is not None:
222
+ query_params = query_params.add(
223
+ "streaming_ongoing_requests_frame_size", streaming_ongoing_requests_frame_size
224
+ )
189
225
  ws_url = ws_url + f"?{query_params}"
190
226
  headers = self._client_wrapper.get_headers()
191
227
  if api_subscription_key is not None:
@@ -49,11 +49,17 @@ class SpeechToTextTranslateStreamingClient:
49
49
  high_vad_sensitivity: typing.Optional[SpeechToTextTranslateStreamingHighVadSensitivity] = None,
50
50
  vad_signals: typing.Optional[SpeechToTextTranslateStreamingVadSignals] = None,
51
51
  flush_signal: typing.Optional[SpeechToTextTranslateStreamingFlushSignal] = None,
52
+ stream_ongoing_speech_results: typing.Optional[str] = None,
53
+ streaming_ongoing_requests_frame_size: typing.Optional[str] = None,
52
54
  api_subscription_key: typing.Optional[str] = None,
53
55
  request_options: typing.Optional[RequestOptions] = None,
54
56
  ) -> typing.Iterator[SpeechToTextTranslateStreamingSocketClient]:
55
57
  """
56
- WebSocket channel for real-time speech to text streaming with English translation
58
+ WebSocket channel for real-time speech to text streaming with English translation.
59
+
60
+ **Note:** This API Reference page is provided for informational purposes only.
61
+ The Try It playground may not provide the best experience for streaming audio.
62
+ For optimal streaming performance, please use the SDK or implement your own WebSocket client.
57
63
 
58
64
  Parameters
59
65
  ----------
@@ -75,6 +81,12 @@ class SpeechToTextTranslateStreamingClient:
75
81
  flush_signal : typing.Optional[SpeechToTextTranslateStreamingFlushSignal]
76
82
  Signal to flush the audio buffer and finalize transcription and translation
77
83
 
84
+ stream_ongoing_speech_results : typing.Optional[str]
85
+ Enable streaming of ongoing speech results during active speech
86
+
87
+ streaming_ongoing_requests_frame_size : typing.Optional[str]
88
+ Frame size for streaming ongoing speech results (1-100)
89
+
78
90
  api_subscription_key : typing.Optional[str]
79
91
  API subscription key for authentication
80
92
 
@@ -99,6 +111,12 @@ class SpeechToTextTranslateStreamingClient:
99
111
  query_params = query_params.add("vad_signals", vad_signals)
100
112
  if flush_signal is not None:
101
113
  query_params = query_params.add("flush_signal", flush_signal)
114
+ if stream_ongoing_speech_results is not None:
115
+ query_params = query_params.add("stream_ongoing_speech_results", stream_ongoing_speech_results)
116
+ if streaming_ongoing_requests_frame_size is not None:
117
+ query_params = query_params.add(
118
+ "streaming_ongoing_requests_frame_size", streaming_ongoing_requests_frame_size
119
+ )
102
120
  ws_url = ws_url + f"?{query_params}"
103
121
  headers = self._raw_client._client_wrapper.get_headers()
104
122
  if api_subscription_key is not None:
@@ -148,11 +166,17 @@ class AsyncSpeechToTextTranslateStreamingClient:
148
166
  high_vad_sensitivity: typing.Optional[SpeechToTextTranslateStreamingHighVadSensitivity] = None,
149
167
  vad_signals: typing.Optional[SpeechToTextTranslateStreamingVadSignals] = None,
150
168
  flush_signal: typing.Optional[SpeechToTextTranslateStreamingFlushSignal] = None,
169
+ stream_ongoing_speech_results: typing.Optional[str] = None,
170
+ streaming_ongoing_requests_frame_size: typing.Optional[str] = None,
151
171
  api_subscription_key: typing.Optional[str] = None,
152
172
  request_options: typing.Optional[RequestOptions] = None,
153
173
  ) -> typing.AsyncIterator[AsyncSpeechToTextTranslateStreamingSocketClient]:
154
174
  """
155
- WebSocket channel for real-time speech to text streaming with English translation
175
+ WebSocket channel for real-time speech to text streaming with English translation.
176
+
177
+ **Note:** This API Reference page is provided for informational purposes only.
178
+ The Try It playground may not provide the best experience for streaming audio.
179
+ For optimal streaming performance, please use the SDK or implement your own WebSocket client.
156
180
 
157
181
  Parameters
158
182
  ----------
@@ -174,6 +198,12 @@ class AsyncSpeechToTextTranslateStreamingClient:
174
198
  flush_signal : typing.Optional[SpeechToTextTranslateStreamingFlushSignal]
175
199
  Signal to flush the audio buffer and finalize transcription and translation
176
200
 
201
+ stream_ongoing_speech_results : typing.Optional[str]
202
+ Enable streaming of ongoing speech results during active speech
203
+
204
+ streaming_ongoing_requests_frame_size : typing.Optional[str]
205
+ Frame size for streaming ongoing speech results (1-100)
206
+
177
207
  api_subscription_key : typing.Optional[str]
178
208
  API subscription key for authentication
179
209
 
@@ -198,6 +228,12 @@ class AsyncSpeechToTextTranslateStreamingClient:
198
228
  query_params = query_params.add("vad_signals", vad_signals)
199
229
  if flush_signal is not None:
200
230
  query_params = query_params.add("flush_signal", flush_signal)
231
+ if stream_ongoing_speech_results is not None:
232
+ query_params = query_params.add("stream_ongoing_speech_results", stream_ongoing_speech_results)
233
+ if streaming_ongoing_requests_frame_size is not None:
234
+ query_params = query_params.add(
235
+ "streaming_ongoing_requests_frame_size", streaming_ongoing_requests_frame_size
236
+ )
201
237
  ws_url = ws_url + f"?{query_params}"
202
238
  headers = self._raw_client._client_wrapper.get_headers()
203
239
  if api_subscription_key is not None:
@@ -37,11 +37,17 @@ class RawSpeechToTextTranslateStreamingClient:
37
37
  high_vad_sensitivity: typing.Optional[SpeechToTextTranslateStreamingHighVadSensitivity] = None,
38
38
  vad_signals: typing.Optional[SpeechToTextTranslateStreamingVadSignals] = None,
39
39
  flush_signal: typing.Optional[SpeechToTextTranslateStreamingFlushSignal] = None,
40
+ stream_ongoing_speech_results: typing.Optional[str] = None,
41
+ streaming_ongoing_requests_frame_size: typing.Optional[str] = None,
40
42
  api_subscription_key: typing.Optional[str] = None,
41
43
  request_options: typing.Optional[RequestOptions] = None,
42
44
  ) -> typing.Iterator[SpeechToTextTranslateStreamingSocketClient]:
43
45
  """
44
- WebSocket channel for real-time speech to text streaming with English translation
46
+ WebSocket channel for real-time speech to text streaming with English translation.
47
+
48
+ **Note:** This API Reference page is provided for informational purposes only.
49
+ The Try It playground may not provide the best experience for streaming audio.
50
+ For optimal streaming performance, please use the SDK or implement your own WebSocket client.
45
51
 
46
52
  Parameters
47
53
  ----------
@@ -63,6 +69,12 @@ class RawSpeechToTextTranslateStreamingClient:
63
69
  flush_signal : typing.Optional[SpeechToTextTranslateStreamingFlushSignal]
64
70
  Signal to flush the audio buffer and finalize transcription and translation
65
71
 
72
+ stream_ongoing_speech_results : typing.Optional[str]
73
+ Enable streaming of ongoing speech results during active speech
74
+
75
+ streaming_ongoing_requests_frame_size : typing.Optional[str]
76
+ Frame size for streaming ongoing speech results (1-100)
77
+
66
78
  api_subscription_key : typing.Optional[str]
67
79
  API subscription key for authentication
68
80
 
@@ -87,6 +99,12 @@ class RawSpeechToTextTranslateStreamingClient:
87
99
  query_params = query_params.add("vad_signals", vad_signals)
88
100
  if flush_signal is not None:
89
101
  query_params = query_params.add("flush_signal", flush_signal)
102
+ if stream_ongoing_speech_results is not None:
103
+ query_params = query_params.add("stream_ongoing_speech_results", stream_ongoing_speech_results)
104
+ if streaming_ongoing_requests_frame_size is not None:
105
+ query_params = query_params.add(
106
+ "streaming_ongoing_requests_frame_size", streaming_ongoing_requests_frame_size
107
+ )
90
108
  ws_url = ws_url + f"?{query_params}"
91
109
  headers = self._client_wrapper.get_headers()
92
110
  if api_subscription_key is not None:
@@ -125,11 +143,17 @@ class AsyncRawSpeechToTextTranslateStreamingClient:
125
143
  high_vad_sensitivity: typing.Optional[SpeechToTextTranslateStreamingHighVadSensitivity] = None,
126
144
  vad_signals: typing.Optional[SpeechToTextTranslateStreamingVadSignals] = None,
127
145
  flush_signal: typing.Optional[SpeechToTextTranslateStreamingFlushSignal] = None,
146
+ stream_ongoing_speech_results: typing.Optional[str] = None,
147
+ streaming_ongoing_requests_frame_size: typing.Optional[str] = None,
128
148
  api_subscription_key: typing.Optional[str] = None,
129
149
  request_options: typing.Optional[RequestOptions] = None,
130
150
  ) -> typing.AsyncIterator[AsyncSpeechToTextTranslateStreamingSocketClient]:
131
151
  """
132
- WebSocket channel for real-time speech to text streaming with English translation
152
+ WebSocket channel for real-time speech to text streaming with English translation.
153
+
154
+ **Note:** This API Reference page is provided for informational purposes only.
155
+ The Try It playground may not provide the best experience for streaming audio.
156
+ For optimal streaming performance, please use the SDK or implement your own WebSocket client.
133
157
 
134
158
  Parameters
135
159
  ----------
@@ -151,6 +175,12 @@ class AsyncRawSpeechToTextTranslateStreamingClient:
151
175
  flush_signal : typing.Optional[SpeechToTextTranslateStreamingFlushSignal]
152
176
  Signal to flush the audio buffer and finalize transcription and translation
153
177
 
178
+ stream_ongoing_speech_results : typing.Optional[str]
179
+ Enable streaming of ongoing speech results during active speech
180
+
181
+ streaming_ongoing_requests_frame_size : typing.Optional[str]
182
+ Frame size for streaming ongoing speech results (1-100)
183
+
154
184
  api_subscription_key : typing.Optional[str]
155
185
  API subscription key for authentication
156
186
 
@@ -175,6 +205,12 @@ class AsyncRawSpeechToTextTranslateStreamingClient:
175
205
  query_params = query_params.add("vad_signals", vad_signals)
176
206
  if flush_signal is not None:
177
207
  query_params = query_params.add("flush_signal", flush_signal)
208
+ if stream_ongoing_speech_results is not None:
209
+ query_params = query_params.add("stream_ongoing_speech_results", stream_ongoing_speech_results)
210
+ if streaming_ongoing_requests_frame_size is not None:
211
+ query_params = query_params.add(
212
+ "streaming_ongoing_requests_frame_size", streaming_ongoing_requests_frame_size
213
+ )
178
214
  ws_url = ws_url + f"?{query_params}"
179
215
  headers = self._client_wrapper.get_headers()
180
216
  if api_subscription_key is not None:
@@ -44,8 +44,11 @@ class TextToSpeechStreamingClient:
44
44
  request_options: typing.Optional[RequestOptions] = None,
45
45
  ) -> typing.Iterator[TextToSpeechStreamingSocketClient]:
46
46
  """
47
- Bidirectional WebSocket channel for real-time TTS synthesis.
48
- Supports streaming, flushing, config updates, and audio playback.
47
+ WebSocket channel for real-time TTS synthesis.
48
+
49
+ **Note:** This API Reference page is provided for informational purposes only.
50
+ The Try It playground may not provide the best experience for streaming audio.
51
+ For optimal streaming performance, please use the SDK or implement your own WebSocket client.
49
52
 
50
53
  Parameters
51
54
  ----------
@@ -120,8 +123,11 @@ class AsyncTextToSpeechStreamingClient:
120
123
  request_options: typing.Optional[RequestOptions] = None,
121
124
  ) -> typing.AsyncIterator[AsyncTextToSpeechStreamingSocketClient]:
122
125
  """
123
- Bidirectional WebSocket channel for real-time TTS synthesis.
124
- Supports streaming, flushing, config updates, and audio playback.
126
+ WebSocket channel for real-time TTS synthesis.
127
+
128
+ **Note:** This API Reference page is provided for informational purposes only.
129
+ The Try It playground may not provide the best experience for streaming audio.
130
+ For optimal streaming performance, please use the SDK or implement your own WebSocket client.
125
131
 
126
132
  Parameters
127
133
  ----------
@@ -32,8 +32,11 @@ class RawTextToSpeechStreamingClient:
32
32
  request_options: typing.Optional[RequestOptions] = None,
33
33
  ) -> typing.Iterator[TextToSpeechStreamingSocketClient]:
34
34
  """
35
- Bidirectional WebSocket channel for real-time TTS synthesis.
36
- Supports streaming, flushing, config updates, and audio playback.
35
+ WebSocket channel for real-time TTS synthesis.
36
+
37
+ **Note:** This API Reference page is provided for informational purposes only.
38
+ The Try It playground may not provide the best experience for streaming audio.
39
+ For optimal streaming performance, please use the SDK or implement your own WebSocket client.
37
40
 
38
41
  Parameters
39
42
  ----------
@@ -97,8 +100,11 @@ class AsyncRawTextToSpeechStreamingClient:
97
100
  request_options: typing.Optional[RequestOptions] = None,
98
101
  ) -> typing.AsyncIterator[AsyncTextToSpeechStreamingSocketClient]:
99
102
  """
100
- Bidirectional WebSocket channel for real-time TTS synthesis.
101
- Supports streaming, flushing, config updates, and audio playback.
103
+ WebSocket channel for real-time TTS synthesis.
104
+
105
+ **Note:** This API Reference page is provided for informational purposes only.
106
+ The Try It playground may not provide the best experience for streaming audio.
107
+ For optimal streaming performance, please use the SDK or implement your own WebSocket client.
102
108
 
103
109
  Parameters
104
110
  ----------
@@ -57,6 +57,7 @@ from .language_identification_response import LanguageIdentificationResponse
57
57
  from .numerals_format import NumeralsFormat
58
58
  from .ping_signal import PingSignal
59
59
  from .reasoning_effort import ReasoningEffort
60
+ from .response_speech_state import ResponseSpeechState
60
61
  from .response_type import ResponseType
61
62
  from .role import Role
62
63
  from .sarvam_model_ids import SarvamModelIds
@@ -156,6 +157,7 @@ __all__ = [
156
157
  "NumeralsFormat",
157
158
  "PingSignal",
158
159
  "ReasoningEffort",
160
+ "ResponseSpeechState",
159
161
  "ResponseType",
160
162
  "Role",
161
163
  "SarvamModelIds",
@@ -1,5 +1,3 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
- import typing
4
-
5
- CompletionEventFlag = typing.Union[typing.Literal["true", "false"], typing.Any]
3
+ CompletionEventFlag = bool
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ ResponseSpeechState = typing.Union[
6
+ typing.Literal["START_SPEECH_TENTATIVE", "VAD_MISFIRE", "START_SPEECH", "END_SPEECH", "ONGOING"], typing.Any
7
+ ]
@@ -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 .response_speech_state import ResponseSpeechState
7
8
  from .transcription_metrics import TranscriptionMetrics
8
9
 
9
10
 
@@ -33,6 +34,11 @@ class SpeechToTextTranscriptionData(UniversalBaseModel):
33
34
  BCP-47 code of detected language
34
35
  """
35
36
 
37
+ response_speech_state: typing.Optional[ResponseSpeechState] = pydantic.Field(default=None)
38
+ """
39
+ Current state of speech detection and processing
40
+ """
41
+
36
42
  metrics: TranscriptionMetrics
37
43
 
38
44
  if IS_PYDANTIC_V2:
@@ -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 .response_speech_state import ResponseSpeechState
7
8
  from .transcription_metrics import TranscriptionMetrics
8
9
 
9
10
 
@@ -23,6 +24,11 @@ class SpeechToTextTranslateTranscriptionData(UniversalBaseModel):
23
24
  BCP-47 code of detected source language (null when language detection is in progress)
24
25
  """
25
26
 
27
+ response_speech_state: typing.Optional[ResponseSpeechState] = pydantic.Field(default=None)
28
+ """
29
+ Current state of speech detection and processing
30
+ """
31
+
26
32
  metrics: TranscriptionMetrics
27
33
 
28
34
  if IS_PYDANTIC_V2:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sarvamai
3
- Version: 0.1.21
3
+ Version: 0.1.22a2
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=vI_MiA00kkNnsVNJmIFkf1o_-vLIp8SeNy4xdzjQ_wY,11499
1
+ sarvamai/__init__.py,sha256=IQQBebJtLIgp9Nkbs8oLDb68dQoO-fg9Er6yN__-eVw,11551
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=YfwoE_SIBl6ZFyfIKdDye-gglZsxG5P-oLar6-sfnLE,2566
8
+ sarvamai/core/client_wrapper.py,sha256=XqlwsVzGU-LimMyFMsWUGHos4u7fBdFYYHmgFjjSeqY,2570
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
@@ -71,12 +71,12 @@ sarvamai/requests/speech_to_text_job_parameters.py,sha256=F3V6XvdUQlWlB4-5XAcRsF
71
71
  sarvamai/requests/speech_to_text_response.py,sha256=GS3jNmHDOxqNZ7cvftD62khUMSBIQUu6zEPdCqk8zJk,1041
72
72
  sarvamai/requests/speech_to_text_response_data.py,sha256=69fYRdL0tCKpgKQqwzcM4T4Nf_lRxJFh-VCFe_tN964,364
73
73
  sarvamai/requests/speech_to_text_streaming_response.py,sha256=cN5tKE9wOWuyBna4wmrf-0LfkOULMpRaJ7qjLuu76V0,348
74
- sarvamai/requests/speech_to_text_transcription_data.py,sha256=Vc65hXDq65d14cP-fDJm151bi7XEKgPItNGt1UL6cOY,877
74
+ sarvamai/requests/speech_to_text_transcription_data.py,sha256=ZbrUy4SBEx8OoeOW1PwTbTq8171Z2z2H1Mh_ZZxrREI,1087
75
75
  sarvamai/requests/speech_to_text_translate_job_parameters.py,sha256=Cco38i8IhX00S2eW3MhLekqUFMS7hZW2AwbpWyCAgpU,990
76
76
  sarvamai/requests/speech_to_text_translate_response.py,sha256=xLV2F37PkGR0erRDfTBEPWvywR8eVSL9JbH5a0C9wkY,893
77
77
  sarvamai/requests/speech_to_text_translate_response_data.py,sha256=OmjunP9R2xertJKn4fmpyzjDdj1_B_Yh6ZjH1eOlR-Q,407
78
78
  sarvamai/requests/speech_to_text_translate_streaming_response.py,sha256=KTjYZ0_oLapuM5Iiq7UwejMsrL1TGgFAW4k5l17TkZs,385
79
- sarvamai/requests/speech_to_text_translate_transcription_data.py,sha256=oAmW5ihTd301IJYN2u2KrZxB0j3EMacFBfvIhtOSjFI,595
79
+ sarvamai/requests/speech_to_text_translate_transcription_data.py,sha256=xBVSuFtYz-tNiE69OMFpfBnxbEG3ZMl7YMFDWoJyhWU,805
80
80
  sarvamai/requests/stop_configuration.py,sha256=Xmp8zyUpnN65pH5A7NqefckB8wk53_BBzOUrgRm2gXs,146
81
81
  sarvamai/requests/stt_flush_signal.py,sha256=Gb-SoPPAyVKFVPZKxebLgV4bAv21NjVgvfCl5cqcxrY,360
82
82
  sarvamai/requests/task_detail_v_1.py,sha256=2rehl7dSDSgzaw13b9bODamhiN2uB-IK4cOksq8Vmqc,582
@@ -94,8 +94,8 @@ sarvamai/speech_to_text_job/client.py,sha256=WSGBJxYcNxl77Zd1X6VVWjg4zshqecXf6WC
94
94
  sarvamai/speech_to_text_job/job.py,sha256=K8HOmwrYd6l82-MZfWDBmNkZeeERyg9YOihnFfvl-Js,15021
95
95
  sarvamai/speech_to_text_job/raw_client.py,sha256=OZTPzMhAn-ckE_xKzfZ9QLsEX5EZVOJS0Pf-PBa19jM,48200
96
96
  sarvamai/speech_to_text_streaming/__init__.py,sha256=-7nN6AJFryjSvGHVbajYEt-vni6kNDfJUiZJFNl_ao4,535
97
- sarvamai/speech_to_text_streaming/client.py,sha256=s-0rKrNN5Phk7xR2WOGNoG6zSA00dd_3zBXEfVFdNqk,11176
98
- sarvamai/speech_to_text_streaming/raw_client.py,sha256=Oe9dz6hBTRkdfIDUGHuDhuCqJooCGdM_hxc9Z2DFfqs,10357
97
+ sarvamai/speech_to_text_streaming/client.py,sha256=z1iJo_9Fc0Fp1c-n4TCN_StmsSPMZUUxHPbGHWwoekg,13328
98
+ sarvamai/speech_to_text_streaming/raw_client.py,sha256=Koy0Repnt3Niws3CrUZAdIRgGcjAma0A08h3TTBBFVs,12509
99
99
  sarvamai/speech_to_text_streaming/socket_client.py,sha256=P6qXRN0s3UFAp6CP5lkqrW2KPK9me70ZVfWquxLB4wI,7538
100
100
  sarvamai/speech_to_text_streaming/types/__init__.py,sha256=_G5TSTthsnjGmwdV4fpsybjEWMMTNkh-kWXZjgK5X48,755
101
101
  sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_flush_signal.py,sha256=dDJOBlzAjhuiSVqW2RHHY1f6xy0DU_Yoo9UV8-7MjnA,173
@@ -108,8 +108,8 @@ sarvamai/speech_to_text_translate_job/client.py,sha256=xu8kYtCESDB7LzL8YKBUq5qhT
108
108
  sarvamai/speech_to_text_translate_job/job.py,sha256=DU4k3eB28V8N16M_QEchakVng4IOul6_Qrdn3FumgHA,15208
109
109
  sarvamai/speech_to_text_translate_job/raw_client.py,sha256=dAitbu2B9afPK6iT9zNjUJnE5BIr5-lrAlwrfwFxdkU,49507
110
110
  sarvamai/speech_to_text_translate_streaming/__init__.py,sha256=s6HPwrkABpkhDSsd_t6pVRiWfY4MfVE0lVj9b4V_fx4,527
111
- sarvamai/speech_to_text_translate_streaming/client.py,sha256=p8iZeb5cM8QfHIp_1Z36CLJLnkgn81wKCItLdy0-Mbc,11103
112
- sarvamai/speech_to_text_translate_streaming/raw_client.py,sha256=N7BqiHl5nHIdR-fEq9B4l99aJL1UQ2CQpU6nHxM698M,10212
111
+ sarvamai/speech_to_text_translate_streaming/client.py,sha256=d5nCU5dS9kNi2w6Eu8LiTrRn5q7-l1N-Home6oeoA0k,13255
112
+ sarvamai/speech_to_text_translate_streaming/raw_client.py,sha256=4E_T5HepaCE80dLq_fIA4lb2mM8-feOzuC_tPuTVIbs,12364
113
113
  sarvamai/speech_to_text_translate_streaming/socket_client.py,sha256=ipEPSj5eHAyDpuEXfaP7JJL1rXJXGEo-IB888ReAFKs,8901
114
114
  sarvamai/speech_to_text_translate_streaming/types/__init__.py,sha256=nsKmvwkhcPekF9kcStDhTDilALFf2jT-wfCn25KVe7U,740
115
115
  sarvamai/speech_to_text_translate_streaming/types/speech_to_text_translate_streaming_flush_signal.py,sha256=jkjvCGJ1pFKi3AOTkwMW-lo18WGgrgAhMpoe5P0AMzA,182
@@ -123,12 +123,12 @@ sarvamai/text_to_speech/__init__.py,sha256=_VhToAyIt_5axN6CLJwtxg3-CO7THa_23pbUz
123
123
  sarvamai/text_to_speech/client.py,sha256=iwrQNfoMgCSOgvztTIXtLHQmSmn0RInwt5RSo9TwdtA,9617
124
124
  sarvamai/text_to_speech/raw_client.py,sha256=si_aSjMR7SocIpKZFoVYqBmaIDuRm_6vxTM0dJ73PEo,15569
125
125
  sarvamai/text_to_speech_streaming/__init__.py,sha256=TjBDNPwnsPQpuVZzh7Xi27A51pEEfVyaC8dpvafkmvQ,201
126
- sarvamai/text_to_speech_streaming/client.py,sha256=3WsyEcRI6h5EUeGCNZzWG-t-VJA2a7ceoGkXKBBNq7s,7415
127
- sarvamai/text_to_speech_streaming/raw_client.py,sha256=CHX4t6SiwEvRTflnKI61q0Z3GtjHzHb4Xz-yk2exxeU,6596
126
+ sarvamai/text_to_speech_streaming/client.py,sha256=SaYSHYzBn3BeFRZPumXQJD1EeAYISnAmDomCPxVdyPk,7793
127
+ sarvamai/text_to_speech_streaming/raw_client.py,sha256=E-4cVcgYA1MQRq2YkLoGt1OU3ZsYQ1wPqdQ4vjhO7ug,6974
128
128
  sarvamai/text_to_speech_streaming/socket_client.py,sha256=aun1nyc5ZYziXP0FmyvkCB0WKa_VdjA0XHYI2-Z_gCo,13973
129
129
  sarvamai/text_to_speech_streaming/types/__init__.py,sha256=fx2VJtnbh4RFUETiV2aPGslEQ0lq_us4UjDbQr_2J6I,242
130
130
  sarvamai/text_to_speech_streaming/types/text_to_speech_streaming_send_completion_event.py,sha256=cZWm6cAwNwPGF8ZADtnRev_AsgM_xj5ypg2oHHQfgZI,181
131
- sarvamai/types/__init__.py,sha256=hBtXC7VLxZdrBEPs7-Ym6c3fYlJJS1VxHbfb4J8CcEM,8334
131
+ sarvamai/types/__init__.py,sha256=DvAsZu5BYk6rSQSZ02cl1Prc0tGgo0p_9L9uJjzpwWI,8416
132
132
  sarvamai/types/audio_data.py,sha256=g-sQcFXiV0uFAsUJ_TjM3OSnPoCUmNkMORRJHOl152k,1545
133
133
  sarvamai/types/audio_data_input_audio_codec.py,sha256=Xb3UEr2wTniW0z8ND4iV051YHhgFazIFOd7q7UGH3nY,572
134
134
  sarvamai/types/audio_message.py,sha256=sB4EgkWkWJzipYXobkmM9AYZTTZtCpg_ySKssUeznUE,560
@@ -143,7 +143,7 @@ sarvamai/types/chat_completion_request_system_message.py,sha256=E7YhTk1zr4u7dj_y
143
143
  sarvamai/types/chat_completion_request_user_message.py,sha256=J3WhlrfOfCCe7ugmJIfP_L9st3OFtXkIjZTSuR8O9nQ,615
144
144
  sarvamai/types/chat_completion_response_message.py,sha256=wz935eBnCkSIl0I0qMxBuH4vAUCso1aHDGReMW1VHGE,744
145
145
  sarvamai/types/choice.py,sha256=uXBCsjWP9VK3XWQWZUeI4EnU10w0G9nAfKn2tJZvxko,1244
146
- sarvamai/types/completion_event_flag.py,sha256=HdvjxXha9Ux5KS_Lfp7Q5eaX62eIk4bXcuJgfhGFXf4,160
146
+ sarvamai/types/completion_event_flag.py,sha256=TzDOwE5GrC2uiVpnc9vV8y7n4uT_cr_G5FR011h_zw4,92
147
147
  sarvamai/types/completion_usage.py,sha256=xYQGlQUbKqsksuV73H-1ajjfT5M7w47eLfdWXSlrI5M,843
148
148
  sarvamai/types/config_message.py,sha256=xLD2wZcXejYrmREMd-cn38da4hKfsNPKRtyAGCW0Zcg,779
149
149
  sarvamai/types/configure_connection.py,sha256=SnSNk02gQqP8e4VB4y88jjeFQ4ClpImjGLn2ANI8cZ4,1058
@@ -179,6 +179,7 @@ sarvamai/types/language_identification_response.py,sha256=jG4ZQ6KQHCiEDqC51OniOw
179
179
  sarvamai/types/numerals_format.py,sha256=xg3lYiHcnzyFwuwRcaIteJLH_Pz6pJ9n9kTlYPEnCBU,165
180
180
  sarvamai/types/ping_signal.py,sha256=cE53FRIXlc8bSo18z6jlAnOh6DhZEMX36huWEX6X3-A,695
181
181
  sarvamai/types/reasoning_effort.py,sha256=_TBLn3rQgzJAdnKqV2g0PETbrSBZl0fPLfQ5ZE9H4Pc,164
182
+ sarvamai/types/response_speech_state.py,sha256=SYwVP-TD2nhZ2kAXw0NzuVtkRgMjbLsuXRfKHPGxhK0,231
182
183
  sarvamai/types/response_type.py,sha256=yyk0QTIQlNa9W0Uoj_5_ey_Q3Bu8Jij5GkgR0Rt_WnU,163
183
184
  sarvamai/types/role.py,sha256=3eY01zZQKB8BSD4cFDeVjz-o2qnHJKz1vnToLqbExxs,115
184
185
  sarvamai/types/sarvam_model_ids.py,sha256=iYBMglf31KQ1iUZeAMQ-2PP9NDcyHRG7goz7O9VG8qg,124
@@ -191,14 +192,14 @@ sarvamai/types/speech_to_text_model.py,sha256=DSnGHPpIT-OyRv1bpy1xqEoLw90MTKyDgc
191
192
  sarvamai/types/speech_to_text_response.py,sha256=iWRGEJeHUFIOxeEhoCQu68njeA6lcqXbT2czV-O8Wx0,1438
192
193
  sarvamai/types/speech_to_text_response_data.py,sha256=gbxZTBSjbN3ZIa10K6tWPYtymcpnQTFIaUnXkOmsmD4,322
193
194
  sarvamai/types/speech_to_text_streaming_response.py,sha256=z6tVAHbVK9lC3w3lac__LEUfO8AAzEilkeGlaLskTtc,687
194
- sarvamai/types/speech_to_text_transcription_data.py,sha256=EqwPAPSi98PwARaTj-ufzFUSHyN-NPoPla5vi_KERrU,1297
195
+ sarvamai/types/speech_to_text_transcription_data.py,sha256=9xJljx_Uhhr0_DQZADPHbvEYmVCNwo9XHy7_QFPVqgY,1517
195
196
  sarvamai/types/speech_to_text_translate_job_parameters.py,sha256=fvfcyzIyT0DtcRYePDvglHH-wAhGbsi3H5G4i5nuWT8,1409
196
197
  sarvamai/types/speech_to_text_translate_language.py,sha256=yikNM-roIumVG-eqBWss93wLGudZdLPwd0i3VcXH5zo,263
197
198
  sarvamai/types/speech_to_text_translate_model.py,sha256=CVSz6gJBY82GhhEuWSdzRLJW9XTsAgweRnKd1tN6mXo,139
198
199
  sarvamai/types/speech_to_text_translate_response.py,sha256=Z5Na7IQW2ok3TP21xd-jKkwioplEKfonNIMhoJQKkVw,1278
199
200
  sarvamai/types/speech_to_text_translate_response_data.py,sha256=_NlLVp7oQU3em_4E47QVbIP9nromPE07Z9HtMpY1lrU,359
200
201
  sarvamai/types/speech_to_text_translate_streaming_response.py,sha256=J6h3AGdAJxpODFs30bR-e6OaWKa__oVhwv_TrbPSO98,724
201
- sarvamai/types/speech_to_text_translate_transcription_data.py,sha256=-cZZm21um6erOzx18nAgBYKA3Qc3YzNADUCnfx9mD-k,996
202
+ sarvamai/types/speech_to_text_translate_transcription_data.py,sha256=SPdYTeD1H4WQiExfs-jETyTwXblrqlsthTjUHqZEWxw,1216
202
203
  sarvamai/types/spoken_form_numerals_format.py,sha256=soBly93wMkazIcp2GDM0Mf1MjY140Pe24hBlwNoWge0,169
203
204
  sarvamai/types/stop_configuration.py,sha256=yA_q4s4BIrbl3FotZpg4ZcyL10C7gVI0s2dqvH32BNw,136
204
205
  sarvamai/types/storage_container_type.py,sha256=DZXDiDj74lMmUq6jaZfIMW1zMXgoVdY6rs_FcyB9OGk,184
@@ -224,6 +225,6 @@ sarvamai/types/transliterate_mode.py,sha256=1jSEMlGcoLkWuk12TgoOpSgwifa4rThGKZ1h
224
225
  sarvamai/types/transliterate_source_language.py,sha256=bSY9wJszF0sg-Cgg6F-YcWC8ly1mIlj9rqa15-jBtx8,283
225
226
  sarvamai/types/transliteration_response.py,sha256=yt-lzTbDeJ_ZL4I8kQa6oESxA9ebeJJY7LfFHpdEsmM,815
226
227
  sarvamai/version.py,sha256=Qkp3Ee9YH-O9RTix90e0i7iNrFAGN-QDt2AFwGA4n8k,75
227
- sarvamai-0.1.21.dist-info/METADATA,sha256=WU579xDhxUNYNYUyra4dFoBczK6OU4D8yHQpp9yW8c4,26751
228
- sarvamai-0.1.21.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
229
- sarvamai-0.1.21.dist-info/RECORD,,
228
+ sarvamai-0.1.22a2.dist-info/METADATA,sha256=eJXEOEt8H5JlSCKymoTw5whmYKPbg-uOZI02omY0bpw,26753
229
+ sarvamai-0.1.22a2.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
230
+ sarvamai-0.1.22a2.dist-info/RECORD,,