sarvamai 0.1.22a3__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.
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/PKG-INFO +1 -1
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/pyproject.toml +1 -1
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/__init__.py +0 -6
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/core/client_wrapper.py +2 -2
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_transcription_data.py +0 -6
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_translate_transcription_data.py +0 -6
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_job/job.py +100 -2
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_job/raw_client.py +14 -10
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/__init__.py +0 -2
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/client.py +0 -31
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/raw_client.py +0 -31
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/types/__init__.py +0 -2
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_job/job.py +100 -2
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_job/raw_client.py +14 -10
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_streaming/__init__.py +0 -2
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_streaming/client.py +0 -31
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_streaming/raw_client.py +0 -31
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_streaming/types/__init__.py +0 -4
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/__init__.py +0 -2
- sarvamai-0.1.22a4/src/sarvamai/types/completion_event_flag.py +5 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_transcription_data.py +0 -6
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_translate_transcription_data.py +0 -6
- sarvamai-0.1.22a3/src/sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_stream_ongoing_speech_results.py +0 -5
- sarvamai-0.1.22a3/src/sarvamai/speech_to_text_translate_streaming/types/speech_to_text_translate_streaming_stream_ongoing_speech_results.py +0 -5
- sarvamai-0.1.22a3/src/sarvamai/types/completion_event_flag.py +0 -3
- sarvamai-0.1.22a3/src/sarvamai/types/response_speech_state.py +0 -7
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/README.md +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/chat/__init__.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/chat/client.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/chat/raw_client.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/client.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/core/__init__.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/core/api_error.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/core/datetime_utils.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/core/events.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/core/file.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/core/force_multipart.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/core/http_client.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/core/http_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/core/jsonable_encoder.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/core/pydantic_utilities.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/core/query_encoder.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/core/remove_none_from_dict.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/core/request_options.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/core/serialization.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/environment.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/errors/__init__.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/errors/bad_request_error.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/errors/forbidden_error.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/errors/internal_server_error.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/errors/service_unavailable_error.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/errors/too_many_requests_error.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/errors/unprocessable_entity_error.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/play.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/py.typed +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/__init__.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/audio_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/audio_message.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/audio_output.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/audio_output_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/base_job_parameters.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/bulk_job_callback.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/bulk_job_init_response_v_1.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/chat_completion_request_assistant_message.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/chat_completion_request_message.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/chat_completion_request_system_message.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/chat_completion_request_user_message.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/chat_completion_response_message.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/choice.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/completion_usage.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/config_message.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/configure_connection.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/configure_connection_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/create_chat_completion_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/diarized_entry.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/diarized_transcript.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/error_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/error_details.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/error_message.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/error_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/error_response_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/event_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/event_response_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/events_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/file_signed_url_details.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/files_download_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/files_request.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/files_upload_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/flush_signal.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/job_status_v_1_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/language_identification_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/ping_signal.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/send_text.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/send_text_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_job_parameters.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_response_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_streaming_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_translate_job_parameters.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_translate_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_translate_response_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_translate_streaming_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/stop_configuration.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/stt_flush_signal.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/task_detail_v_1.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/task_file_details.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/text_to_speech_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/timestamps_model.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/transcription_metrics.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/translation_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/transliteration_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text/__init__.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text/client.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text/raw_client.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_job/__init__.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_job/client.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/socket_client.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_flush_signal.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_high_vad_sensitivity.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_input_audio_codec.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_language_code.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/types/speech_to_text_streaming_vad_signals.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_job/__init__.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_job/client.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_streaming/socket_client.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_streaming/types/speech_to_text_translate_streaming_flush_signal.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_streaming/types/speech_to_text_translate_streaming_high_vad_sensitivity.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_streaming/types/speech_to_text_translate_streaming_input_audio_codec.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_translate_streaming/types/speech_to_text_translate_streaming_vad_signals.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/text/__init__.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/text/client.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/text/raw_client.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/text_to_speech/__init__.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/text_to_speech/client.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/text_to_speech/raw_client.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/text_to_speech_streaming/__init__.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/text_to_speech_streaming/client.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/text_to_speech_streaming/raw_client.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/text_to_speech_streaming/socket_client.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/text_to_speech_streaming/types/__init__.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/text_to_speech_streaming/types/text_to_speech_streaming_send_completion_event.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/audio_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/audio_data_input_audio_codec.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/audio_message.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/audio_output.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/audio_output_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/base_job_parameters.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/bulk_job_callback.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/bulk_job_init_response_v_1.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/chat_completion_request_assistant_message.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/chat_completion_request_message.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/chat_completion_request_system_message.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/chat_completion_request_user_message.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/chat_completion_response_message.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/choice.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/completion_usage.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/config_message.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/configure_connection.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/configure_connection_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/configure_connection_data_output_audio_bitrate.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/configure_connection_data_output_audio_codec.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/configure_connection_data_speaker.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/configure_connection_data_target_language_code.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/connection_sample_rate.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/create_chat_completion_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/diarized_entry.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/diarized_transcript.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/error_code.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/error_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/error_details.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/error_message.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/error_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/error_response_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/event_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/event_response_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/events_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/events_data_signal_type.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/file_signed_url_details.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/files_download_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/files_request.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/files_upload_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/finish_reason.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/flush_signal.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/input_audio_codec.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/job_state.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/job_status_v_1_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/language_identification_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/numerals_format.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/ping_signal.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/reasoning_effort.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/response_type.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/role.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/sarvam_model_ids.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/send_text.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/send_text_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_sample_rate.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_job_parameters.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_language.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_model.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_response_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_streaming_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_translate_job_parameters.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_translate_language.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_translate_model.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_translate_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_translate_response_data.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/speech_to_text_translate_streaming_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/spoken_form_numerals_format.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/stop_configuration.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/storage_container_type.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/stt_flush_signal.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/task_detail_v_1.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/task_file_details.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/task_state.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/text_to_speech_language.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/text_to_speech_model.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/text_to_speech_output_audio_codec.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/text_to_speech_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/text_to_speech_speaker.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/timestamps_model.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/transcription_metrics.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/translate_mode.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/translate_model.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/translate_source_language.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/translate_speaker_gender.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/translate_target_language.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/translation_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/translatiterate_target_language.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/transliterate_mode.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/transliterate_source_language.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/types/transliteration_response.py +0 -0
- {sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/version.py +0 -0
|
@@ -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,
|
|
@@ -190,14 +189,12 @@ from .speech_to_text_streaming import (
|
|
|
190
189
|
SpeechToTextStreamingHighVadSensitivity,
|
|
191
190
|
SpeechToTextStreamingInputAudioCodec,
|
|
192
191
|
SpeechToTextStreamingLanguageCode,
|
|
193
|
-
SpeechToTextStreamingStreamOngoingSpeechResults,
|
|
194
192
|
SpeechToTextStreamingVadSignals,
|
|
195
193
|
)
|
|
196
194
|
from .speech_to_text_translate_streaming import (
|
|
197
195
|
SpeechToTextTranslateStreamingFlushSignal,
|
|
198
196
|
SpeechToTextTranslateStreamingHighVadSensitivity,
|
|
199
197
|
SpeechToTextTranslateStreamingInputAudioCodec,
|
|
200
|
-
SpeechToTextTranslateStreamingStreamOngoingSpeechResults,
|
|
201
198
|
SpeechToTextTranslateStreamingVadSignals,
|
|
202
199
|
)
|
|
203
200
|
from .text_to_speech_streaming import TextToSpeechStreamingSendCompletionEvent
|
|
@@ -300,7 +297,6 @@ __all__ = [
|
|
|
300
297
|
"PingSignal",
|
|
301
298
|
"PingSignalParams",
|
|
302
299
|
"ReasoningEffort",
|
|
303
|
-
"ResponseSpeechState",
|
|
304
300
|
"ResponseType",
|
|
305
301
|
"Role",
|
|
306
302
|
"SarvamAI",
|
|
@@ -326,7 +322,6 @@ __all__ = [
|
|
|
326
322
|
"SpeechToTextStreamingLanguageCode",
|
|
327
323
|
"SpeechToTextStreamingResponse",
|
|
328
324
|
"SpeechToTextStreamingResponseParams",
|
|
329
|
-
"SpeechToTextStreamingStreamOngoingSpeechResults",
|
|
330
325
|
"SpeechToTextStreamingVadSignals",
|
|
331
326
|
"SpeechToTextTranscriptionData",
|
|
332
327
|
"SpeechToTextTranscriptionDataParams",
|
|
@@ -343,7 +338,6 @@ __all__ = [
|
|
|
343
338
|
"SpeechToTextTranslateStreamingInputAudioCodec",
|
|
344
339
|
"SpeechToTextTranslateStreamingResponse",
|
|
345
340
|
"SpeechToTextTranslateStreamingResponseParams",
|
|
346
|
-
"SpeechToTextTranslateStreamingStreamOngoingSpeechResults",
|
|
347
341
|
"SpeechToTextTranslateStreamingVadSignals",
|
|
348
342
|
"SpeechToTextTranslateTranscriptionData",
|
|
349
343
|
"SpeechToTextTranslateTranscriptionDataParams",
|
|
@@ -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.
|
|
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.
|
|
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
|
{sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/requests/speech_to_text_transcription_data.py
RENAMED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
----------
|
|
@@ -7,7 +7,6 @@ from .types import (
|
|
|
7
7
|
SpeechToTextStreamingHighVadSensitivity,
|
|
8
8
|
SpeechToTextStreamingInputAudioCodec,
|
|
9
9
|
SpeechToTextStreamingLanguageCode,
|
|
10
|
-
SpeechToTextStreamingStreamOngoingSpeechResults,
|
|
11
10
|
SpeechToTextStreamingVadSignals,
|
|
12
11
|
)
|
|
13
12
|
|
|
@@ -16,6 +15,5 @@ __all__ = [
|
|
|
16
15
|
"SpeechToTextStreamingHighVadSensitivity",
|
|
17
16
|
"SpeechToTextStreamingInputAudioCodec",
|
|
18
17
|
"SpeechToTextStreamingLanguageCode",
|
|
19
|
-
"SpeechToTextStreamingStreamOngoingSpeechResults",
|
|
20
18
|
"SpeechToTextStreamingVadSignals",
|
|
21
19
|
]
|
|
@@ -15,9 +15,6 @@ from .types.speech_to_text_streaming_flush_signal import SpeechToTextStreamingFl
|
|
|
15
15
|
from .types.speech_to_text_streaming_high_vad_sensitivity import SpeechToTextStreamingHighVadSensitivity
|
|
16
16
|
from .types.speech_to_text_streaming_input_audio_codec import SpeechToTextStreamingInputAudioCodec
|
|
17
17
|
from .types.speech_to_text_streaming_language_code import SpeechToTextStreamingLanguageCode
|
|
18
|
-
from .types.speech_to_text_streaming_stream_ongoing_speech_results import (
|
|
19
|
-
SpeechToTextStreamingStreamOngoingSpeechResults,
|
|
20
|
-
)
|
|
21
18
|
from .types.speech_to_text_streaming_vad_signals import SpeechToTextStreamingVadSignals
|
|
22
19
|
|
|
23
20
|
try:
|
|
@@ -52,8 +49,6 @@ class SpeechToTextStreamingClient:
|
|
|
52
49
|
high_vad_sensitivity: typing.Optional[SpeechToTextStreamingHighVadSensitivity] = None,
|
|
53
50
|
vad_signals: typing.Optional[SpeechToTextStreamingVadSignals] = None,
|
|
54
51
|
flush_signal: typing.Optional[SpeechToTextStreamingFlushSignal] = None,
|
|
55
|
-
stream_ongoing_speech_results: typing.Optional[SpeechToTextStreamingStreamOngoingSpeechResults] = None,
|
|
56
|
-
streaming_ongoing_requests_frame_size: typing.Optional[str] = None,
|
|
57
52
|
api_subscription_key: typing.Optional[str] = None,
|
|
58
53
|
request_options: typing.Optional[RequestOptions] = None,
|
|
59
54
|
) -> typing.Iterator[SpeechToTextStreamingSocketClient]:
|
|
@@ -87,12 +82,6 @@ class SpeechToTextStreamingClient:
|
|
|
87
82
|
flush_signal : typing.Optional[SpeechToTextStreamingFlushSignal]
|
|
88
83
|
Signal to flush the audio buffer and finalize transcription
|
|
89
84
|
|
|
90
|
-
stream_ongoing_speech_results : typing.Optional[SpeechToTextStreamingStreamOngoingSpeechResults]
|
|
91
|
-
Enable streaming of ongoing speech results during active speech
|
|
92
|
-
|
|
93
|
-
streaming_ongoing_requests_frame_size : typing.Optional[str]
|
|
94
|
-
Frame size for streaming ongoing speech results (1-100)
|
|
95
|
-
|
|
96
85
|
api_subscription_key : typing.Optional[str]
|
|
97
86
|
API subscription key for authentication
|
|
98
87
|
|
|
@@ -119,12 +108,6 @@ class SpeechToTextStreamingClient:
|
|
|
119
108
|
query_params = query_params.add("vad_signals", vad_signals)
|
|
120
109
|
if flush_signal is not None:
|
|
121
110
|
query_params = query_params.add("flush_signal", flush_signal)
|
|
122
|
-
if stream_ongoing_speech_results is not None:
|
|
123
|
-
query_params = query_params.add("stream_ongoing_speech_results", stream_ongoing_speech_results)
|
|
124
|
-
if streaming_ongoing_requests_frame_size is not None:
|
|
125
|
-
query_params = query_params.add(
|
|
126
|
-
"streaming_ongoing_requests_frame_size", streaming_ongoing_requests_frame_size
|
|
127
|
-
)
|
|
128
111
|
ws_url = ws_url + f"?{query_params}"
|
|
129
112
|
headers = self._raw_client._client_wrapper.get_headers()
|
|
130
113
|
if api_subscription_key is not None:
|
|
@@ -175,8 +158,6 @@ class AsyncSpeechToTextStreamingClient:
|
|
|
175
158
|
high_vad_sensitivity: typing.Optional[SpeechToTextStreamingHighVadSensitivity] = None,
|
|
176
159
|
vad_signals: typing.Optional[SpeechToTextStreamingVadSignals] = None,
|
|
177
160
|
flush_signal: typing.Optional[SpeechToTextStreamingFlushSignal] = None,
|
|
178
|
-
stream_ongoing_speech_results: typing.Optional[SpeechToTextStreamingStreamOngoingSpeechResults] = None,
|
|
179
|
-
streaming_ongoing_requests_frame_size: typing.Optional[str] = None,
|
|
180
161
|
api_subscription_key: typing.Optional[str] = None,
|
|
181
162
|
request_options: typing.Optional[RequestOptions] = None,
|
|
182
163
|
) -> typing.AsyncIterator[AsyncSpeechToTextStreamingSocketClient]:
|
|
@@ -210,12 +191,6 @@ class AsyncSpeechToTextStreamingClient:
|
|
|
210
191
|
flush_signal : typing.Optional[SpeechToTextStreamingFlushSignal]
|
|
211
192
|
Signal to flush the audio buffer and finalize transcription
|
|
212
193
|
|
|
213
|
-
stream_ongoing_speech_results : typing.Optional[SpeechToTextStreamingStreamOngoingSpeechResults]
|
|
214
|
-
Enable streaming of ongoing speech results during active speech
|
|
215
|
-
|
|
216
|
-
streaming_ongoing_requests_frame_size : typing.Optional[str]
|
|
217
|
-
Frame size for streaming ongoing speech results (1-100)
|
|
218
|
-
|
|
219
194
|
api_subscription_key : typing.Optional[str]
|
|
220
195
|
API subscription key for authentication
|
|
221
196
|
|
|
@@ -242,12 +217,6 @@ class AsyncSpeechToTextStreamingClient:
|
|
|
242
217
|
query_params = query_params.add("vad_signals", vad_signals)
|
|
243
218
|
if flush_signal is not None:
|
|
244
219
|
query_params = query_params.add("flush_signal", flush_signal)
|
|
245
|
-
if stream_ongoing_speech_results is not None:
|
|
246
|
-
query_params = query_params.add("stream_ongoing_speech_results", stream_ongoing_speech_results)
|
|
247
|
-
if streaming_ongoing_requests_frame_size is not None:
|
|
248
|
-
query_params = query_params.add(
|
|
249
|
-
"streaming_ongoing_requests_frame_size", streaming_ongoing_requests_frame_size
|
|
250
|
-
)
|
|
251
220
|
ws_url = ws_url + f"?{query_params}"
|
|
252
221
|
headers = self._raw_client._client_wrapper.get_headers()
|
|
253
222
|
if api_subscription_key is not None:
|
|
@@ -14,9 +14,6 @@ from .types.speech_to_text_streaming_flush_signal import SpeechToTextStreamingFl
|
|
|
14
14
|
from .types.speech_to_text_streaming_high_vad_sensitivity import SpeechToTextStreamingHighVadSensitivity
|
|
15
15
|
from .types.speech_to_text_streaming_input_audio_codec import SpeechToTextStreamingInputAudioCodec
|
|
16
16
|
from .types.speech_to_text_streaming_language_code import SpeechToTextStreamingLanguageCode
|
|
17
|
-
from .types.speech_to_text_streaming_stream_ongoing_speech_results import (
|
|
18
|
-
SpeechToTextStreamingStreamOngoingSpeechResults,
|
|
19
|
-
)
|
|
20
17
|
from .types.speech_to_text_streaming_vad_signals import SpeechToTextStreamingVadSignals
|
|
21
18
|
|
|
22
19
|
try:
|
|
@@ -40,8 +37,6 @@ class RawSpeechToTextStreamingClient:
|
|
|
40
37
|
high_vad_sensitivity: typing.Optional[SpeechToTextStreamingHighVadSensitivity] = None,
|
|
41
38
|
vad_signals: typing.Optional[SpeechToTextStreamingVadSignals] = None,
|
|
42
39
|
flush_signal: typing.Optional[SpeechToTextStreamingFlushSignal] = None,
|
|
43
|
-
stream_ongoing_speech_results: typing.Optional[SpeechToTextStreamingStreamOngoingSpeechResults] = None,
|
|
44
|
-
streaming_ongoing_requests_frame_size: typing.Optional[str] = None,
|
|
45
40
|
api_subscription_key: typing.Optional[str] = None,
|
|
46
41
|
request_options: typing.Optional[RequestOptions] = None,
|
|
47
42
|
) -> typing.Iterator[SpeechToTextStreamingSocketClient]:
|
|
@@ -75,12 +70,6 @@ class RawSpeechToTextStreamingClient:
|
|
|
75
70
|
flush_signal : typing.Optional[SpeechToTextStreamingFlushSignal]
|
|
76
71
|
Signal to flush the audio buffer and finalize transcription
|
|
77
72
|
|
|
78
|
-
stream_ongoing_speech_results : typing.Optional[SpeechToTextStreamingStreamOngoingSpeechResults]
|
|
79
|
-
Enable streaming of ongoing speech results during active speech
|
|
80
|
-
|
|
81
|
-
streaming_ongoing_requests_frame_size : typing.Optional[str]
|
|
82
|
-
Frame size for streaming ongoing speech results (1-100)
|
|
83
|
-
|
|
84
73
|
api_subscription_key : typing.Optional[str]
|
|
85
74
|
API subscription key for authentication
|
|
86
75
|
|
|
@@ -107,12 +96,6 @@ class RawSpeechToTextStreamingClient:
|
|
|
107
96
|
query_params = query_params.add("vad_signals", vad_signals)
|
|
108
97
|
if flush_signal is not None:
|
|
109
98
|
query_params = query_params.add("flush_signal", flush_signal)
|
|
110
|
-
if stream_ongoing_speech_results is not None:
|
|
111
|
-
query_params = query_params.add("stream_ongoing_speech_results", stream_ongoing_speech_results)
|
|
112
|
-
if streaming_ongoing_requests_frame_size is not None:
|
|
113
|
-
query_params = query_params.add(
|
|
114
|
-
"streaming_ongoing_requests_frame_size", streaming_ongoing_requests_frame_size
|
|
115
|
-
)
|
|
116
99
|
ws_url = ws_url + f"?{query_params}"
|
|
117
100
|
headers = self._client_wrapper.get_headers()
|
|
118
101
|
if api_subscription_key is not None:
|
|
@@ -152,8 +135,6 @@ class AsyncRawSpeechToTextStreamingClient:
|
|
|
152
135
|
high_vad_sensitivity: typing.Optional[SpeechToTextStreamingHighVadSensitivity] = None,
|
|
153
136
|
vad_signals: typing.Optional[SpeechToTextStreamingVadSignals] = None,
|
|
154
137
|
flush_signal: typing.Optional[SpeechToTextStreamingFlushSignal] = None,
|
|
155
|
-
stream_ongoing_speech_results: typing.Optional[SpeechToTextStreamingStreamOngoingSpeechResults] = None,
|
|
156
|
-
streaming_ongoing_requests_frame_size: typing.Optional[str] = None,
|
|
157
138
|
api_subscription_key: typing.Optional[str] = None,
|
|
158
139
|
request_options: typing.Optional[RequestOptions] = None,
|
|
159
140
|
) -> typing.AsyncIterator[AsyncSpeechToTextStreamingSocketClient]:
|
|
@@ -187,12 +168,6 @@ class AsyncRawSpeechToTextStreamingClient:
|
|
|
187
168
|
flush_signal : typing.Optional[SpeechToTextStreamingFlushSignal]
|
|
188
169
|
Signal to flush the audio buffer and finalize transcription
|
|
189
170
|
|
|
190
|
-
stream_ongoing_speech_results : typing.Optional[SpeechToTextStreamingStreamOngoingSpeechResults]
|
|
191
|
-
Enable streaming of ongoing speech results during active speech
|
|
192
|
-
|
|
193
|
-
streaming_ongoing_requests_frame_size : typing.Optional[str]
|
|
194
|
-
Frame size for streaming ongoing speech results (1-100)
|
|
195
|
-
|
|
196
171
|
api_subscription_key : typing.Optional[str]
|
|
197
172
|
API subscription key for authentication
|
|
198
173
|
|
|
@@ -219,12 +194,6 @@ class AsyncRawSpeechToTextStreamingClient:
|
|
|
219
194
|
query_params = query_params.add("vad_signals", vad_signals)
|
|
220
195
|
if flush_signal is not None:
|
|
221
196
|
query_params = query_params.add("flush_signal", flush_signal)
|
|
222
|
-
if stream_ongoing_speech_results is not None:
|
|
223
|
-
query_params = query_params.add("stream_ongoing_speech_results", stream_ongoing_speech_results)
|
|
224
|
-
if streaming_ongoing_requests_frame_size is not None:
|
|
225
|
-
query_params = query_params.add(
|
|
226
|
-
"streaming_ongoing_requests_frame_size", streaming_ongoing_requests_frame_size
|
|
227
|
-
)
|
|
228
197
|
ws_url = ws_url + f"?{query_params}"
|
|
229
198
|
headers = self._client_wrapper.get_headers()
|
|
230
199
|
if api_subscription_key is not None:
|
{sarvamai-0.1.22a3 → sarvamai-0.1.22a4}/src/sarvamai/speech_to_text_streaming/types/__init__.py
RENAMED
|
@@ -6,7 +6,6 @@ from .speech_to_text_streaming_flush_signal import SpeechToTextStreamingFlushSig
|
|
|
6
6
|
from .speech_to_text_streaming_high_vad_sensitivity import SpeechToTextStreamingHighVadSensitivity
|
|
7
7
|
from .speech_to_text_streaming_input_audio_codec import SpeechToTextStreamingInputAudioCodec
|
|
8
8
|
from .speech_to_text_streaming_language_code import SpeechToTextStreamingLanguageCode
|
|
9
|
-
from .speech_to_text_streaming_stream_ongoing_speech_results import SpeechToTextStreamingStreamOngoingSpeechResults
|
|
10
9
|
from .speech_to_text_streaming_vad_signals import SpeechToTextStreamingVadSignals
|
|
11
10
|
|
|
12
11
|
__all__ = [
|
|
@@ -14,6 +13,5 @@ __all__ = [
|
|
|
14
13
|
"SpeechToTextStreamingHighVadSensitivity",
|
|
15
14
|
"SpeechToTextStreamingInputAudioCodec",
|
|
16
15
|
"SpeechToTextStreamingLanguageCode",
|
|
17
|
-
"SpeechToTextStreamingStreamOngoingSpeechResults",
|
|
18
16
|
"SpeechToTextStreamingVadSignals",
|
|
19
17
|
]
|
|
@@ -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.
|