sarvamai 0.1.22a2__tar.gz → 0.1.22a4__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.
Files changed (231) hide show
  1. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/PKG-INFO +1 -1
  2. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/pyproject.toml +1 -1
  3. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/__init__.py +0 -2
  4. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/core/client_wrapper.py +2 -2
  5. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_transcription_data.py +0 -6
  6. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_translate_transcription_data.py +0 -6
  7. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_job/job.py +100 -2
  8. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_job/raw_client.py +14 -10
  9. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/client.py +0 -28
  10. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/raw_client.py +0 -28
  11. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_job/job.py +100 -2
  12. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_job/raw_client.py +14 -10
  13. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_streaming/client.py +0 -28
  14. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_streaming/raw_client.py +0 -28
  15. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/__init__.py +0 -2
  16. sarvamai-0.1.22a4/src/sarvamai/types/completion_event_flag.py +5 -0
  17. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_transcription_data.py +0 -6
  18. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_translate_transcription_data.py +0 -6
  19. sarvamai-0.1.22a2/src/sarvamai/types/completion_event_flag.py +0 -3
  20. sarvamai-0.1.22a2/src/sarvamai/types/response_speech_state.py +0 -7
  21. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/README.md +0 -0
  22. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/chat/__init__.py +0 -0
  23. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/chat/client.py +0 -0
  24. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/chat/raw_client.py +0 -0
  25. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/client.py +0 -0
  26. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/core/__init__.py +0 -0
  27. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/core/api_error.py +0 -0
  28. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/core/datetime_utils.py +0 -0
  29. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/core/events.py +0 -0
  30. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/core/file.py +0 -0
  31. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/core/force_multipart.py +0 -0
  32. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/core/http_client.py +0 -0
  33. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/core/http_response.py +0 -0
  34. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/core/jsonable_encoder.py +0 -0
  35. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/core/pydantic_utilities.py +0 -0
  36. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/core/query_encoder.py +0 -0
  37. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/core/remove_none_from_dict.py +0 -0
  38. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/core/request_options.py +0 -0
  39. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/core/serialization.py +0 -0
  40. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/environment.py +0 -0
  41. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/errors/__init__.py +0 -0
  42. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/errors/bad_request_error.py +0 -0
  43. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/errors/forbidden_error.py +0 -0
  44. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/errors/internal_server_error.py +0 -0
  45. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/errors/service_unavailable_error.py +0 -0
  46. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/errors/too_many_requests_error.py +0 -0
  47. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/errors/unprocessable_entity_error.py +0 -0
  48. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/play.py +0 -0
  49. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/py.typed +0 -0
  50. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/__init__.py +0 -0
  51. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/audio_data.py +0 -0
  52. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/audio_message.py +0 -0
  53. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/audio_output.py +0 -0
  54. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/audio_output_data.py +0 -0
  55. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/base_job_parameters.py +0 -0
  56. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/bulk_job_callback.py +0 -0
  57. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/bulk_job_init_response_v_1.py +0 -0
  58. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/chat_completion_request_assistant_message.py +0 -0
  59. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/chat_completion_request_message.py +0 -0
  60. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/chat_completion_request_system_message.py +0 -0
  61. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/chat_completion_request_user_message.py +0 -0
  62. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/chat_completion_response_message.py +0 -0
  63. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/choice.py +0 -0
  64. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/completion_usage.py +0 -0
  65. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/config_message.py +0 -0
  66. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/configure_connection.py +0 -0
  67. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/configure_connection_data.py +0 -0
  68. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/create_chat_completion_response.py +0 -0
  69. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/diarized_entry.py +0 -0
  70. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/diarized_transcript.py +0 -0
  71. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/error_data.py +0 -0
  72. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/error_details.py +0 -0
  73. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/error_message.py +0 -0
  74. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/error_response.py +0 -0
  75. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/error_response_data.py +0 -0
  76. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/event_response.py +0 -0
  77. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/event_response_data.py +0 -0
  78. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/events_data.py +0 -0
  79. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/file_signed_url_details.py +0 -0
  80. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/files_download_response.py +0 -0
  81. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/files_request.py +0 -0
  82. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/files_upload_response.py +0 -0
  83. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/flush_signal.py +0 -0
  84. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/job_status_v_1_response.py +0 -0
  85. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/language_identification_response.py +0 -0
  86. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/ping_signal.py +0 -0
  87. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/send_text.py +0 -0
  88. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/send_text_data.py +0 -0
  89. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_job_parameters.py +0 -0
  90. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_response.py +0 -0
  91. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_response_data.py +0 -0
  92. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_streaming_response.py +0 -0
  93. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_translate_job_parameters.py +0 -0
  94. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_translate_response.py +0 -0
  95. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_translate_response_data.py +0 -0
  96. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_translate_streaming_response.py +0 -0
  97. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/stop_configuration.py +0 -0
  98. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/stt_flush_signal.py +0 -0
  99. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/task_detail_v_1.py +0 -0
  100. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/task_file_details.py +0 -0
  101. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/text_to_speech_response.py +0 -0
  102. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/timestamps_model.py +0 -0
  103. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/transcription_metrics.py +0 -0
  104. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/translation_response.py +0 -0
  105. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/requests/transliteration_response.py +0 -0
  106. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text/__init__.py +0 -0
  107. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text/client.py +0 -0
  108. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text/raw_client.py +0 -0
  109. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_job/__init__.py +0 -0
  110. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_job/client.py +0 -0
  111. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/__init__.py +0 -0
  112. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/socket_client.py +0 -0
  113. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/types/__init__.py +0 -0
  114. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_flush_signal.py +0 -0
  115. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_high_vad_sensitivity.py +0 -0
  116. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_input_audio_codec.py +0 -0
  117. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_language_code.py +0 -0
  118. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_vad_signals.py +0 -0
  119. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_job/__init__.py +0 -0
  120. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_job/client.py +0 -0
  121. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_streaming/__init__.py +0 -0
  122. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_streaming/socket_client.py +0 -0
  123. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_streaming/types/__init__.py +0 -0
  124. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_streaming/types/speech_to_text_translate_streaming_flush_signal.py +0 -0
  125. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_streaming/types/speech_to_text_translate_streaming_high_vad_sensitivity.py +0 -0
  126. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_streaming/types/speech_to_text_translate_streaming_input_audio_codec.py +0 -0
  127. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_streaming/types/speech_to_text_translate_streaming_vad_signals.py +0 -0
  128. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/text/__init__.py +0 -0
  129. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/text/client.py +0 -0
  130. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/text/raw_client.py +0 -0
  131. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/text_to_speech/__init__.py +0 -0
  132. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/text_to_speech/client.py +0 -0
  133. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/text_to_speech/raw_client.py +0 -0
  134. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/text_to_speech_streaming/__init__.py +0 -0
  135. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/text_to_speech_streaming/client.py +0 -0
  136. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/text_to_speech_streaming/raw_client.py +0 -0
  137. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/text_to_speech_streaming/socket_client.py +0 -0
  138. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/text_to_speech_streaming/types/__init__.py +0 -0
  139. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/text_to_speech_streaming/types/text_to_speech_streaming_send_completion_event.py +0 -0
  140. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/audio_data.py +0 -0
  141. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/audio_data_input_audio_codec.py +0 -0
  142. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/audio_message.py +0 -0
  143. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/audio_output.py +0 -0
  144. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/audio_output_data.py +0 -0
  145. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/base_job_parameters.py +0 -0
  146. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/bulk_job_callback.py +0 -0
  147. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/bulk_job_init_response_v_1.py +0 -0
  148. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/chat_completion_request_assistant_message.py +0 -0
  149. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/chat_completion_request_message.py +0 -0
  150. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/chat_completion_request_system_message.py +0 -0
  151. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/chat_completion_request_user_message.py +0 -0
  152. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/chat_completion_response_message.py +0 -0
  153. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/choice.py +0 -0
  154. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/completion_usage.py +0 -0
  155. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/config_message.py +0 -0
  156. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/configure_connection.py +0 -0
  157. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/configure_connection_data.py +0 -0
  158. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/configure_connection_data_output_audio_bitrate.py +0 -0
  159. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/configure_connection_data_output_audio_codec.py +0 -0
  160. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/configure_connection_data_speaker.py +0 -0
  161. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/configure_connection_data_target_language_code.py +0 -0
  162. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/connection_sample_rate.py +0 -0
  163. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/create_chat_completion_response.py +0 -0
  164. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/diarized_entry.py +0 -0
  165. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/diarized_transcript.py +0 -0
  166. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/error_code.py +0 -0
  167. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/error_data.py +0 -0
  168. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/error_details.py +0 -0
  169. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/error_message.py +0 -0
  170. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/error_response.py +0 -0
  171. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/error_response_data.py +0 -0
  172. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/event_response.py +0 -0
  173. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/event_response_data.py +0 -0
  174. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/events_data.py +0 -0
  175. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/events_data_signal_type.py +0 -0
  176. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/file_signed_url_details.py +0 -0
  177. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/files_download_response.py +0 -0
  178. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/files_request.py +0 -0
  179. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/files_upload_response.py +0 -0
  180. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/finish_reason.py +0 -0
  181. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/flush_signal.py +0 -0
  182. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/input_audio_codec.py +0 -0
  183. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/job_state.py +0 -0
  184. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/job_status_v_1_response.py +0 -0
  185. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/language_identification_response.py +0 -0
  186. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/numerals_format.py +0 -0
  187. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/ping_signal.py +0 -0
  188. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/reasoning_effort.py +0 -0
  189. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/response_type.py +0 -0
  190. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/role.py +0 -0
  191. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/sarvam_model_ids.py +0 -0
  192. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/send_text.py +0 -0
  193. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/send_text_data.py +0 -0
  194. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_sample_rate.py +0 -0
  195. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_job_parameters.py +0 -0
  196. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_language.py +0 -0
  197. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_model.py +0 -0
  198. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_response.py +0 -0
  199. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_response_data.py +0 -0
  200. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_streaming_response.py +0 -0
  201. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_translate_job_parameters.py +0 -0
  202. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_translate_language.py +0 -0
  203. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_translate_model.py +0 -0
  204. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_translate_response.py +0 -0
  205. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_translate_response_data.py +0 -0
  206. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_translate_streaming_response.py +0 -0
  207. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/spoken_form_numerals_format.py +0 -0
  208. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/stop_configuration.py +0 -0
  209. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/storage_container_type.py +0 -0
  210. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/stt_flush_signal.py +0 -0
  211. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/task_detail_v_1.py +0 -0
  212. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/task_file_details.py +0 -0
  213. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/task_state.py +0 -0
  214. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/text_to_speech_language.py +0 -0
  215. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/text_to_speech_model.py +0 -0
  216. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/text_to_speech_output_audio_codec.py +0 -0
  217. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/text_to_speech_response.py +0 -0
  218. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/text_to_speech_speaker.py +0 -0
  219. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/timestamps_model.py +0 -0
  220. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/transcription_metrics.py +0 -0
  221. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/translate_mode.py +0 -0
  222. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/translate_model.py +0 -0
  223. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/translate_source_language.py +0 -0
  224. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/translate_speaker_gender.py +0 -0
  225. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/translate_target_language.py +0 -0
  226. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/translation_response.py +0 -0
  227. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/translatiterate_target_language.py +0 -0
  228. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/transliterate_mode.py +0 -0
  229. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/transliterate_source_language.py +0 -0
  230. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/types/transliteration_response.py +0 -0
  231. {sarvamai-0.1.22a2 → sarvamai-0.1.22a4}/src/sarvamai/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: sarvamai
3
- Version: 0.1.22a2
3
+ Version: 0.1.22a4
4
4
  Summary:
5
5
  Requires-Python: >=3.8,<4.0
6
6
  Classifier: Intended Audience :: Developers
@@ -3,7 +3,7 @@ name = "sarvamai"
3
3
 
4
4
  [tool.poetry]
5
5
  name = "sarvamai"
6
- version = "0.1.22a2"
6
+ version = "0.1.22a4"
7
7
  description = ""
8
8
  readme = "README.md"
9
9
  authors = []
@@ -56,7 +56,6 @@ from .types import (
56
56
  NumeralsFormat,
57
57
  PingSignal,
58
58
  ReasoningEffort,
59
- ResponseSpeechState,
60
59
  ResponseType,
61
60
  Role,
62
61
  SarvamModelIds,
@@ -298,7 +297,6 @@ __all__ = [
298
297
  "PingSignal",
299
298
  "PingSignalParams",
300
299
  "ReasoningEffort",
301
- "ResponseSpeechState",
302
300
  "ResponseType",
303
301
  "Role",
304
302
  "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.22a2",
26
+ "User-Agent": "sarvamai/0.1.22a4",
27
27
  "X-Fern-Language": "Python",
28
28
  "X-Fern-SDK-Name": "sarvamai",
29
- "X-Fern-SDK-Version": "0.1.22a2",
29
+ "X-Fern-SDK-Version": "0.1.22a4",
30
30
  **(self.get_custom_headers() or {}),
31
31
  }
32
32
  headers["api-subscription-key"] = self.api_subscription_key
@@ -3,7 +3,6 @@
3
3
  import typing
4
4
 
5
5
  import typing_extensions
6
- from ..types.response_speech_state import ResponseSpeechState
7
6
  from .transcription_metrics import TranscriptionMetricsParams
8
7
 
9
8
 
@@ -33,9 +32,4 @@ class SpeechToTextTranscriptionDataParams(typing_extensions.TypedDict):
33
32
  BCP-47 code of detected language
34
33
  """
35
34
 
36
- response_speech_state: typing_extensions.NotRequired[ResponseSpeechState]
37
- """
38
- Current state of speech detection and processing
39
- """
40
-
41
35
  metrics: TranscriptionMetricsParams
@@ -1,7 +1,6 @@
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
5
4
  from .transcription_metrics import TranscriptionMetricsParams
6
5
 
7
6
 
@@ -21,9 +20,4 @@ class SpeechToTextTranslateTranscriptionDataParams(typing_extensions.TypedDict):
21
20
  BCP-47 code of detected source language (null when language detection is in progress)
22
21
  """
23
22
 
24
- response_speech_state: typing_extensions.NotRequired[ResponseSpeechState]
25
- """
26
- Current state of speech detection and processing
27
- """
28
-
29
23
  metrics: TranscriptionMetricsParams
@@ -146,9 +146,58 @@ class AsyncSpeechToTextJob:
146
146
  "output_file": detail.outputs[0].file_name,
147
147
  }
148
148
  for detail in (job_status.job_details or [])
149
- if detail.inputs and detail.outputs
149
+ if detail.inputs and detail.outputs and detail.state == "Success"
150
150
  ]
151
151
 
152
+ async def get_file_results(
153
+ self,
154
+ ) -> typing.Dict[str, typing.List[typing.Dict[str, typing.Any]]]:
155
+ """
156
+ Get detailed results for each file in the batch job.
157
+
158
+ Returns
159
+ -------
160
+ Dict[str, List[Dict[str, Any]]]
161
+ Dictionary with 'successful' and 'failed' keys, each containing a list of file details.
162
+ Each file detail includes:
163
+ - 'file_name': Name of the input file
164
+ - 'status': Status of processing ('Success' or 'Failed')
165
+ - 'error_message': Error message if failed (None if successful)
166
+ - 'output_file': Name of output file if successful (None if failed)
167
+ """
168
+ job_status = await self.get_status()
169
+ results: typing.Dict[str, typing.List[typing.Dict[str, typing.Any]]] = {
170
+ "successful": [],
171
+ "failed": [],
172
+ }
173
+
174
+ for detail in job_status.job_details or []:
175
+ # Check for empty lists explicitly
176
+ if not detail.inputs or len(detail.inputs) == 0:
177
+ continue
178
+
179
+ try:
180
+ file_info = {
181
+ "file_name": detail.inputs[0].file_name,
182
+ "status": detail.state,
183
+ "error_message": detail.error_message,
184
+ "output_file": (
185
+ detail.outputs[0].file_name
186
+ if detail.outputs and len(detail.outputs) > 0
187
+ else None
188
+ ),
189
+ }
190
+
191
+ if detail.state == "Success":
192
+ results["successful"].append(file_info)
193
+ else:
194
+ results["failed"].append(file_info)
195
+ except (IndexError, AttributeError):
196
+ # Skip malformed job details
197
+ continue
198
+
199
+ return results
200
+
152
201
  async def download_outputs(self, output_dir: str) -> bool:
153
202
  """
154
203
  Download output files to the specified directory.
@@ -387,9 +436,58 @@ class SpeechToTextJob:
387
436
  "output_file": detail.outputs[0].file_name,
388
437
  }
389
438
  for detail in (job_status.job_details or [])
390
- if detail.inputs and detail.outputs
439
+ if detail.inputs and detail.outputs and detail.state == "Success"
391
440
  ]
392
441
 
442
+ def get_file_results(
443
+ self,
444
+ ) -> typing.Dict[str, typing.List[typing.Dict[str, typing.Any]]]:
445
+ """
446
+ Get detailed results for each file in the batch job.
447
+
448
+ Returns
449
+ -------
450
+ Dict[str, List[Dict[str, Any]]]
451
+ Dictionary with 'successful' and 'failed' keys, each containing a list of file details.
452
+ Each file detail includes:
453
+ - 'file_name': Name of the input file
454
+ - 'status': Status of processing ('Success' or 'Failed')
455
+ - 'error_message': Error message if failed (None if successful)
456
+ - 'output_file': Name of output file if successful (None if failed)
457
+ """
458
+ job_status = self.get_status()
459
+ results: typing.Dict[str, typing.List[typing.Dict[str, typing.Any]]] = {
460
+ "successful": [],
461
+ "failed": [],
462
+ }
463
+
464
+ for detail in job_status.job_details or []:
465
+ # Check for empty lists explicitly
466
+ if not detail.inputs or len(detail.inputs) == 0:
467
+ continue
468
+
469
+ try:
470
+ file_info = {
471
+ "file_name": detail.inputs[0].file_name,
472
+ "status": detail.state,
473
+ "error_message": detail.error_message,
474
+ "output_file": (
475
+ detail.outputs[0].file_name
476
+ if detail.outputs and len(detail.outputs) > 0
477
+ else None
478
+ ),
479
+ }
480
+
481
+ if detail.state == "Success":
482
+ results["successful"].append(file_info)
483
+ else:
484
+ results["failed"].append(file_info)
485
+ except (IndexError, AttributeError):
486
+ # Skip malformed job details
487
+ continue
488
+
489
+ return results
490
+
393
491
  def download_outputs(self, output_dir: str) -> bool:
394
492
  """
395
493
  Download output files to the specified directory.
@@ -39,7 +39,7 @@ class RawSpeechToTextJobClient:
39
39
  request_options: typing.Optional[RequestOptions] = None,
40
40
  ) -> HttpResponse[BulkJobInitResponseV1]:
41
41
  """
42
- Get a job uuid, and storage folder details for speech to text bulk job v1
42
+ Create a new speech to text bulk job and receive a job UUID and storage folder details for processing multiple audio files
43
43
 
44
44
  Parameters
45
45
  ----------
@@ -160,7 +160,9 @@ class RawSpeechToTextJobClient:
160
160
  self, job_id: str, *, request_options: typing.Optional[RequestOptions] = None
161
161
  ) -> HttpResponse[JobStatusV1Response]:
162
162
  """
163
- Get the status of a speech to text bulk job V1
163
+ Retrieve the current status and details of a speech to text bulk job, including progress and file-level information.
164
+
165
+ **Rate Limiting Best Practice:** To prevent rate limit errors and ensure optimal server performance, we recommend implementing a minimum 5-millisecond delay between consecutive status polling requests. This helps maintain system stability while still providing timely status updates.
164
166
 
165
167
  Parameters
166
168
  ----------
@@ -270,7 +272,7 @@ class RawSpeechToTextJobClient:
270
272
  request_options: typing.Optional[RequestOptions] = None,
271
273
  ) -> HttpResponse[JobStatusV1Response]:
272
274
  """
273
- Start a speech to text bulk job V1
275
+ Start processing a speech to text bulk job after all audio files have been uploaded
274
276
 
275
277
  Parameters
276
278
  ----------
@@ -381,7 +383,7 @@ class RawSpeechToTextJobClient:
381
383
  self, *, job_id: str, files: typing.Sequence[str], request_options: typing.Optional[RequestOptions] = None
382
384
  ) -> HttpResponse[FilesUploadResponse]:
383
385
  """
384
- Start a speech to text bulk job V1
386
+ Generate presigned upload URLs for audio files that will be processed in a speech to text bulk job
385
387
 
386
388
  Parameters
387
389
  ----------
@@ -496,7 +498,7 @@ class RawSpeechToTextJobClient:
496
498
  self, *, job_id: str, files: typing.Sequence[str], request_options: typing.Optional[RequestOptions] = None
497
499
  ) -> HttpResponse[FilesDownloadResponse]:
498
500
  """
499
- Start a speech to text bulk job V1
501
+ Generate presigned download URLs for the transcription output files of a completed speech to text bulk job
500
502
 
501
503
  Parameters
502
504
  ----------
@@ -620,7 +622,7 @@ class AsyncRawSpeechToTextJobClient:
620
622
  request_options: typing.Optional[RequestOptions] = None,
621
623
  ) -> AsyncHttpResponse[BulkJobInitResponseV1]:
622
624
  """
623
- Get a job uuid, and storage folder details for speech to text bulk job v1
625
+ Create a new speech to text bulk job and receive a job UUID and storage folder details for processing multiple audio files
624
626
 
625
627
  Parameters
626
628
  ----------
@@ -741,7 +743,9 @@ class AsyncRawSpeechToTextJobClient:
741
743
  self, job_id: str, *, request_options: typing.Optional[RequestOptions] = None
742
744
  ) -> AsyncHttpResponse[JobStatusV1Response]:
743
745
  """
744
- Get the status of a speech to text bulk job V1
746
+ Retrieve the current status and details of a speech to text bulk job, including progress and file-level information.
747
+
748
+ **Rate Limiting Best Practice:** To prevent rate limit errors and ensure optimal server performance, we recommend implementing a minimum 5-millisecond delay between consecutive status polling requests. This helps maintain system stability while still providing timely status updates.
745
749
 
746
750
  Parameters
747
751
  ----------
@@ -851,7 +855,7 @@ class AsyncRawSpeechToTextJobClient:
851
855
  request_options: typing.Optional[RequestOptions] = None,
852
856
  ) -> AsyncHttpResponse[JobStatusV1Response]:
853
857
  """
854
- Start a speech to text bulk job V1
858
+ Start processing a speech to text bulk job after all audio files have been uploaded
855
859
 
856
860
  Parameters
857
861
  ----------
@@ -962,7 +966,7 @@ class AsyncRawSpeechToTextJobClient:
962
966
  self, *, job_id: str, files: typing.Sequence[str], request_options: typing.Optional[RequestOptions] = None
963
967
  ) -> AsyncHttpResponse[FilesUploadResponse]:
964
968
  """
965
- Start a speech to text bulk job V1
969
+ Generate presigned upload URLs for audio files that will be processed in a speech to text bulk job
966
970
 
967
971
  Parameters
968
972
  ----------
@@ -1077,7 +1081,7 @@ class AsyncRawSpeechToTextJobClient:
1077
1081
  self, *, job_id: str, files: typing.Sequence[str], request_options: typing.Optional[RequestOptions] = None
1078
1082
  ) -> AsyncHttpResponse[FilesDownloadResponse]:
1079
1083
  """
1080
- Start a speech to text bulk job V1
1084
+ Generate presigned download URLs for the transcription output files of a completed speech to text bulk job
1081
1085
 
1082
1086
  Parameters
1083
1087
  ----------
@@ -49,8 +49,6 @@ 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,
54
52
  api_subscription_key: typing.Optional[str] = None,
55
53
  request_options: typing.Optional[RequestOptions] = None,
56
54
  ) -> typing.Iterator[SpeechToTextStreamingSocketClient]:
@@ -84,12 +82,6 @@ class SpeechToTextStreamingClient:
84
82
  flush_signal : typing.Optional[SpeechToTextStreamingFlushSignal]
85
83
  Signal to flush the audio buffer and finalize transcription
86
84
 
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
-
93
85
  api_subscription_key : typing.Optional[str]
94
86
  API subscription key for authentication
95
87
 
@@ -116,12 +108,6 @@ class SpeechToTextStreamingClient:
116
108
  query_params = query_params.add("vad_signals", vad_signals)
117
109
  if flush_signal is not None:
118
110
  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
- )
125
111
  ws_url = ws_url + f"?{query_params}"
126
112
  headers = self._raw_client._client_wrapper.get_headers()
127
113
  if api_subscription_key is not None:
@@ -172,8 +158,6 @@ class AsyncSpeechToTextStreamingClient:
172
158
  high_vad_sensitivity: typing.Optional[SpeechToTextStreamingHighVadSensitivity] = None,
173
159
  vad_signals: typing.Optional[SpeechToTextStreamingVadSignals] = None,
174
160
  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,
177
161
  api_subscription_key: typing.Optional[str] = None,
178
162
  request_options: typing.Optional[RequestOptions] = None,
179
163
  ) -> typing.AsyncIterator[AsyncSpeechToTextStreamingSocketClient]:
@@ -207,12 +191,6 @@ class AsyncSpeechToTextStreamingClient:
207
191
  flush_signal : typing.Optional[SpeechToTextStreamingFlushSignal]
208
192
  Signal to flush the audio buffer and finalize transcription
209
193
 
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
-
216
194
  api_subscription_key : typing.Optional[str]
217
195
  API subscription key for authentication
218
196
 
@@ -239,12 +217,6 @@ class AsyncSpeechToTextStreamingClient:
239
217
  query_params = query_params.add("vad_signals", vad_signals)
240
218
  if flush_signal is not None:
241
219
  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
- )
248
220
  ws_url = ws_url + f"?{query_params}"
249
221
  headers = self._raw_client._client_wrapper.get_headers()
250
222
  if api_subscription_key is not None:
@@ -37,8 +37,6 @@ 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,
42
40
  api_subscription_key: typing.Optional[str] = None,
43
41
  request_options: typing.Optional[RequestOptions] = None,
44
42
  ) -> typing.Iterator[SpeechToTextStreamingSocketClient]:
@@ -72,12 +70,6 @@ class RawSpeechToTextStreamingClient:
72
70
  flush_signal : typing.Optional[SpeechToTextStreamingFlushSignal]
73
71
  Signal to flush the audio buffer and finalize transcription
74
72
 
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
-
81
73
  api_subscription_key : typing.Optional[str]
82
74
  API subscription key for authentication
83
75
 
@@ -104,12 +96,6 @@ class RawSpeechToTextStreamingClient:
104
96
  query_params = query_params.add("vad_signals", vad_signals)
105
97
  if flush_signal is not None:
106
98
  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
- )
113
99
  ws_url = ws_url + f"?{query_params}"
114
100
  headers = self._client_wrapper.get_headers()
115
101
  if api_subscription_key is not None:
@@ -149,8 +135,6 @@ class AsyncRawSpeechToTextStreamingClient:
149
135
  high_vad_sensitivity: typing.Optional[SpeechToTextStreamingHighVadSensitivity] = None,
150
136
  vad_signals: typing.Optional[SpeechToTextStreamingVadSignals] = None,
151
137
  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,
154
138
  api_subscription_key: typing.Optional[str] = None,
155
139
  request_options: typing.Optional[RequestOptions] = None,
156
140
  ) -> typing.AsyncIterator[AsyncSpeechToTextStreamingSocketClient]:
@@ -184,12 +168,6 @@ class AsyncRawSpeechToTextStreamingClient:
184
168
  flush_signal : typing.Optional[SpeechToTextStreamingFlushSignal]
185
169
  Signal to flush the audio buffer and finalize transcription
186
170
 
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
-
193
171
  api_subscription_key : typing.Optional[str]
194
172
  API subscription key for authentication
195
173
 
@@ -216,12 +194,6 @@ class AsyncRawSpeechToTextStreamingClient:
216
194
  query_params = query_params.add("vad_signals", vad_signals)
217
195
  if flush_signal is not None:
218
196
  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
- )
225
197
  ws_url = ws_url + f"?{query_params}"
226
198
  headers = self._client_wrapper.get_headers()
227
199
  if api_subscription_key is not None:
@@ -150,9 +150,58 @@ class AsyncSpeechToTextTranslateJob:
150
150
  "output_file": detail.outputs[0].file_name,
151
151
  }
152
152
  for detail in (job_status.job_details or [])
153
- if detail.inputs and detail.outputs
153
+ if detail.inputs and detail.outputs and detail.state == "Success"
154
154
  ]
155
155
 
156
+ async def get_file_results(
157
+ self,
158
+ ) -> typing.Dict[str, typing.List[typing.Dict[str, typing.Any]]]:
159
+ """
160
+ Get detailed results for each file in the batch job.
161
+
162
+ Returns
163
+ -------
164
+ Dict[str, List[Dict[str, Any]]]
165
+ Dictionary with 'successful' and 'failed' keys, each containing a list of file details.
166
+ Each file detail includes:
167
+ - 'file_name': Name of the input file
168
+ - 'status': Status of processing ('Success' or 'Failed')
169
+ - 'error_message': Error message if failed (None if successful)
170
+ - 'output_file': Name of output file if successful (None if failed)
171
+ """
172
+ job_status = await self.get_status()
173
+ results: typing.Dict[str, typing.List[typing.Dict[str, typing.Any]]] = {
174
+ "successful": [],
175
+ "failed": [],
176
+ }
177
+
178
+ for detail in job_status.job_details or []:
179
+ # Check for empty lists explicitly
180
+ if not detail.inputs or len(detail.inputs) == 0:
181
+ continue
182
+
183
+ try:
184
+ file_info = {
185
+ "file_name": detail.inputs[0].file_name,
186
+ "status": detail.state,
187
+ "error_message": detail.error_message,
188
+ "output_file": (
189
+ detail.outputs[0].file_name
190
+ if detail.outputs and len(detail.outputs) > 0
191
+ else None
192
+ ),
193
+ }
194
+
195
+ if detail.state == "Success":
196
+ results["successful"].append(file_info)
197
+ else:
198
+ results["failed"].append(file_info)
199
+ except (IndexError, AttributeError):
200
+ # Skip malformed job details
201
+ continue
202
+
203
+ return results
204
+
156
205
  async def download_outputs(self, output_dir: str) -> bool:
157
206
  """
158
207
  Download output files to the specified directory.
@@ -395,9 +444,58 @@ class SpeechToTextTranslateJob:
395
444
  "output_file": detail.outputs[0].file_name,
396
445
  }
397
446
  for detail in (job_status.job_details or [])
398
- if detail.inputs and detail.outputs
447
+ if detail.inputs and detail.outputs and detail.state == "Success"
399
448
  ]
400
449
 
450
+ def get_file_results(
451
+ self,
452
+ ) -> typing.Dict[str, typing.List[typing.Dict[str, typing.Any]]]:
453
+ """
454
+ Get detailed results for each file in the batch job.
455
+
456
+ Returns
457
+ -------
458
+ Dict[str, List[Dict[str, Any]]]
459
+ Dictionary with 'successful' and 'failed' keys, each containing a list of file details.
460
+ Each file detail includes:
461
+ - 'file_name': Name of the input file
462
+ - 'status': Status of processing ('Success' or 'Failed')
463
+ - 'error_message': Error message if failed (None if successful)
464
+ - 'output_file': Name of output file if successful (None if failed)
465
+ """
466
+ job_status = self.get_status()
467
+ results: typing.Dict[str, typing.List[typing.Dict[str, typing.Any]]] = {
468
+ "successful": [],
469
+ "failed": [],
470
+ }
471
+
472
+ for detail in job_status.job_details or []:
473
+ # Check for empty lists explicitly
474
+ if not detail.inputs or len(detail.inputs) == 0:
475
+ continue
476
+
477
+ try:
478
+ file_info = {
479
+ "file_name": detail.inputs[0].file_name,
480
+ "status": detail.state,
481
+ "error_message": detail.error_message,
482
+ "output_file": (
483
+ detail.outputs[0].file_name
484
+ if detail.outputs and len(detail.outputs) > 0
485
+ else None
486
+ ),
487
+ }
488
+
489
+ if detail.state == "Success":
490
+ results["successful"].append(file_info)
491
+ else:
492
+ results["failed"].append(file_info)
493
+ except (IndexError, AttributeError):
494
+ # Skip malformed job details
495
+ continue
496
+
497
+ return results
498
+
401
499
  def download_outputs(self, output_dir: str) -> bool:
402
500
  """
403
501
  Download output files to the specified directory.
@@ -40,7 +40,7 @@ class RawSpeechToTextTranslateJobClient:
40
40
  request_options: typing.Optional[RequestOptions] = None,
41
41
  ) -> HttpResponse[BulkJobInitResponseV1]:
42
42
  """
43
- Get a job uuid, and storage folder details for speech to text tranlsate bulk job v1
43
+ Create a new speech to text translate bulk job and receive a job UUID and storage folder details for processing multiple audio files with translation
44
44
 
45
45
  Parameters
46
46
  ----------
@@ -166,7 +166,9 @@ class RawSpeechToTextTranslateJobClient:
166
166
  self, job_id: str, *, request_options: typing.Optional[RequestOptions] = None
167
167
  ) -> HttpResponse[JobStatusV1Response]:
168
168
  """
169
- Get the status of a speech to text translate bulk job V1
169
+ Retrieve the current status and details of a speech to text translate bulk job, including progress and file-level information.
170
+
171
+ **Rate Limiting Best Practice:** To prevent rate limit errors and ensure optimal server performance, we recommend implementing a minimum 5-millisecond delay between consecutive status polling requests. This helps maintain system stability while still providing timely status updates.
170
172
 
171
173
  Parameters
172
174
  ----------
@@ -276,7 +278,7 @@ class RawSpeechToTextTranslateJobClient:
276
278
  request_options: typing.Optional[RequestOptions] = None,
277
279
  ) -> HttpResponse[JobStatusV1Response]:
278
280
  """
279
- Start a speech to text translate bulk job V1
281
+ Start processing a speech to text translate bulk job after all audio files have been uploaded
280
282
 
281
283
  Parameters
282
284
  ----------
@@ -392,7 +394,7 @@ class RawSpeechToTextTranslateJobClient:
392
394
  request_options: typing.Optional[RequestOptions] = None,
393
395
  ) -> HttpResponse[FilesUploadResponse]:
394
396
  """
395
- Start a speech to text bulk job V1
397
+ Generate presigned upload URLs for audio files that will be processed in a speech to text translate bulk job
396
398
 
397
399
  Parameters
398
400
  ----------
@@ -517,7 +519,7 @@ class RawSpeechToTextTranslateJobClient:
517
519
  request_options: typing.Optional[RequestOptions] = None,
518
520
  ) -> HttpResponse[FilesDownloadResponse]:
519
521
  """
520
- Start a speech to text bulk job V1
522
+ Generate presigned download URLs for the translated transcription output files of a completed speech to text translate bulk job
521
523
 
522
524
  Parameters
523
525
  ----------
@@ -647,7 +649,7 @@ class AsyncRawSpeechToTextTranslateJobClient:
647
649
  request_options: typing.Optional[RequestOptions] = None,
648
650
  ) -> AsyncHttpResponse[BulkJobInitResponseV1]:
649
651
  """
650
- Get a job uuid, and storage folder details for speech to text tranlsate bulk job v1
652
+ Create a new speech to text translate bulk job and receive a job UUID and storage folder details for processing multiple audio files with translation
651
653
 
652
654
  Parameters
653
655
  ----------
@@ -773,7 +775,9 @@ class AsyncRawSpeechToTextTranslateJobClient:
773
775
  self, job_id: str, *, request_options: typing.Optional[RequestOptions] = None
774
776
  ) -> AsyncHttpResponse[JobStatusV1Response]:
775
777
  """
776
- Get the status of a speech to text translate bulk job V1
778
+ Retrieve the current status and details of a speech to text translate bulk job, including progress and file-level information.
779
+
780
+ **Rate Limiting Best Practice:** To prevent rate limit errors and ensure optimal server performance, we recommend implementing a minimum 5-millisecond delay between consecutive status polling requests. This helps maintain system stability while still providing timely status updates.
777
781
 
778
782
  Parameters
779
783
  ----------
@@ -883,7 +887,7 @@ class AsyncRawSpeechToTextTranslateJobClient:
883
887
  request_options: typing.Optional[RequestOptions] = None,
884
888
  ) -> AsyncHttpResponse[JobStatusV1Response]:
885
889
  """
886
- Start a speech to text translate bulk job V1
890
+ Start processing a speech to text translate bulk job after all audio files have been uploaded
887
891
 
888
892
  Parameters
889
893
  ----------
@@ -999,7 +1003,7 @@ class AsyncRawSpeechToTextTranslateJobClient:
999
1003
  request_options: typing.Optional[RequestOptions] = None,
1000
1004
  ) -> AsyncHttpResponse[FilesUploadResponse]:
1001
1005
  """
1002
- Start a speech to text bulk job V1
1006
+ Generate presigned upload URLs for audio files that will be processed in a speech to text translate bulk job
1003
1007
 
1004
1008
  Parameters
1005
1009
  ----------
@@ -1124,7 +1128,7 @@ class AsyncRawSpeechToTextTranslateJobClient:
1124
1128
  request_options: typing.Optional[RequestOptions] = None,
1125
1129
  ) -> AsyncHttpResponse[FilesDownloadResponse]:
1126
1130
  """
1127
- Start a speech to text bulk job V1
1131
+ Generate presigned download URLs for the translated transcription output files of a completed speech to text translate bulk job
1128
1132
 
1129
1133
  Parameters
1130
1134
  ----------