assemblyai 1.0.0.pre.beta

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 (86) hide show
  1. checksums.yaml +7 -0
  2. data/lib/assemblyai/files/client.rb +63 -0
  3. data/lib/assemblyai/files/types/uploaded_file.rb +47 -0
  4. data/lib/assemblyai/lemur/client.rb +390 -0
  5. data/lib/assemblyai/lemur/types/lemur_action_items_response.rb +52 -0
  6. data/lib/assemblyai/lemur/types/lemur_base_params.rb +99 -0
  7. data/lib/assemblyai/lemur/types/lemur_base_params_context.rb +75 -0
  8. data/lib/assemblyai/lemur/types/lemur_base_response.rb +47 -0
  9. data/lib/assemblyai/lemur/types/lemur_model.rb +13 -0
  10. data/lib/assemblyai/lemur/types/lemur_question.rb +74 -0
  11. data/lib/assemblyai/lemur/types/lemur_question_answer.rb +53 -0
  12. data/lib/assemblyai/lemur/types/lemur_question_answer_response.rb +56 -0
  13. data/lib/assemblyai/lemur/types/lemur_question_context.rb +75 -0
  14. data/lib/assemblyai/lemur/types/lemur_summary_response.rb +52 -0
  15. data/lib/assemblyai/lemur/types/lemur_task_response.rb +52 -0
  16. data/lib/assemblyai/lemur/types/purge_lemur_request_data_response.rb +58 -0
  17. data/lib/assemblyai/realtime/client.rb +61 -0
  18. data/lib/assemblyai/realtime/types/audio_data.rb +7 -0
  19. data/lib/assemblyai/realtime/types/audio_encoding.rb +8 -0
  20. data/lib/assemblyai/realtime/types/final_transcript.rb +107 -0
  21. data/lib/assemblyai/realtime/types/message_type.rb +13 -0
  22. data/lib/assemblyai/realtime/types/partial_transcript.rb +94 -0
  23. data/lib/assemblyai/realtime/types/realtime_base_message.rb +48 -0
  24. data/lib/assemblyai/realtime/types/realtime_base_transcript.rb +87 -0
  25. data/lib/assemblyai/realtime/types/realtime_error.rb +47 -0
  26. data/lib/assemblyai/realtime/types/realtime_message.rb +115 -0
  27. data/lib/assemblyai/realtime/types/realtime_temporary_token_response.rb +47 -0
  28. data/lib/assemblyai/realtime/types/realtime_transcript.rb +76 -0
  29. data/lib/assemblyai/realtime/types/realtime_transcript_type.rb +8 -0
  30. data/lib/assemblyai/realtime/types/session_begins.rb +58 -0
  31. data/lib/assemblyai/realtime/types/session_terminated.rb +47 -0
  32. data/lib/assemblyai/realtime/types/terminate_session.rb +56 -0
  33. data/lib/assemblyai/realtime/types/word.rb +62 -0
  34. data/lib/assemblyai/transcripts/client.rb +525 -0
  35. data/lib/assemblyai/transcripts/polling_client.rb +173 -0
  36. data/lib/assemblyai/transcripts/types/audio_intelligence_model_status.rb +8 -0
  37. data/lib/assemblyai/transcripts/types/auto_highlight_result.rb +66 -0
  38. data/lib/assemblyai/transcripts/types/auto_highlights_result.rb +53 -0
  39. data/lib/assemblyai/transcripts/types/chapter.rb +68 -0
  40. data/lib/assemblyai/transcripts/types/content_safety_label.rb +57 -0
  41. data/lib/assemblyai/transcripts/types/content_safety_label_result.rb +84 -0
  42. data/lib/assemblyai/transcripts/types/content_safety_labels_result.rb +75 -0
  43. data/lib/assemblyai/transcripts/types/entity.rb +69 -0
  44. data/lib/assemblyai/transcripts/types/entity_type.rb +38 -0
  45. data/lib/assemblyai/transcripts/types/page_details.rb +74 -0
  46. data/lib/assemblyai/transcripts/types/paragraphs_response.rb +67 -0
  47. data/lib/assemblyai/transcripts/types/pii_policy.rb +36 -0
  48. data/lib/assemblyai/transcripts/types/polling_options.rb +21 -0
  49. data/lib/assemblyai/transcripts/types/redact_pii_audio_quality.rb +8 -0
  50. data/lib/assemblyai/transcripts/types/redacted_audio_response.rb +53 -0
  51. data/lib/assemblyai/transcripts/types/redacted_audio_status.rb +7 -0
  52. data/lib/assemblyai/transcripts/types/sentences_response.rb +67 -0
  53. data/lib/assemblyai/transcripts/types/sentiment.rb +8 -0
  54. data/lib/assemblyai/transcripts/types/sentiment_analysis_result.rb +82 -0
  55. data/lib/assemblyai/transcripts/types/severity_score_summary.rb +57 -0
  56. data/lib/assemblyai/transcripts/types/speech_model.rb +7 -0
  57. data/lib/assemblyai/transcripts/types/substitution_policy.rb +8 -0
  58. data/lib/assemblyai/transcripts/types/subtitle_format.rb +8 -0
  59. data/lib/assemblyai/transcripts/types/summary_model.rb +8 -0
  60. data/lib/assemblyai/transcripts/types/summary_type.rb +14 -0
  61. data/lib/assemblyai/transcripts/types/timestamp.rb +53 -0
  62. data/lib/assemblyai/transcripts/types/topic_detection_model_result.rb +68 -0
  63. data/lib/assemblyai/transcripts/types/topic_detection_result.rb +68 -0
  64. data/lib/assemblyai/transcripts/types/topic_detection_result_labels_item.rb +52 -0
  65. data/lib/assemblyai/transcripts/types/transcript.rb +454 -0
  66. data/lib/assemblyai/transcripts/types/transcript_boost_param.rb +8 -0
  67. data/lib/assemblyai/transcripts/types/transcript_custom_spelling.rb +53 -0
  68. data/lib/assemblyai/transcripts/types/transcript_language_code.rb +29 -0
  69. data/lib/assemblyai/transcripts/types/transcript_list.rb +62 -0
  70. data/lib/assemblyai/transcripts/types/transcript_list_item.rb +82 -0
  71. data/lib/assemblyai/transcripts/types/transcript_optional_params.rb +280 -0
  72. data/lib/assemblyai/transcripts/types/transcript_paragraph.rb +84 -0
  73. data/lib/assemblyai/transcripts/types/transcript_sentence.rb +84 -0
  74. data/lib/assemblyai/transcripts/types/transcript_status.rb +8 -0
  75. data/lib/assemblyai/transcripts/types/transcript_utterance.rb +84 -0
  76. data/lib/assemblyai/transcripts/types/transcript_word.rb +68 -0
  77. data/lib/assemblyai/transcripts/types/word_search_match.rb +63 -0
  78. data/lib/assemblyai/transcripts/types/word_search_response.rb +61 -0
  79. data/lib/assemblyai/transcripts/types/word_search_timestamp.rb +7 -0
  80. data/lib/assemblyai/types/error.rb +50 -0
  81. data/lib/assemblyai.rb +48 -0
  82. data/lib/environment.rb +7 -0
  83. data/lib/gemconfig.rb +14 -0
  84. data/lib/requests.rb +87 -0
  85. data/lib/types_export.rb +75 -0
  86. metadata +170 -0
@@ -0,0 +1,525 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../requests"
4
+ require_relative "types/transcript_status"
5
+ require_relative "types/transcript_list"
6
+ require_relative "types/speech_model"
7
+ require_relative "types/transcript_language_code"
8
+ require_relative "types/transcript_boost_param"
9
+ require_relative "types/redact_pii_audio_quality"
10
+ require_relative "types/pii_policy"
11
+ require_relative "types/substitution_policy"
12
+ require_relative "types/transcript_custom_spelling"
13
+ require_relative "types/summary_model"
14
+ require_relative "types/summary_type"
15
+ require_relative "types/transcript"
16
+ require_relative "types/subtitle_format"
17
+ require_relative "types/sentences_response"
18
+ require_relative "types/paragraphs_response"
19
+ require_relative "types/word_search_response"
20
+ require_relative "types/redacted_audio_response"
21
+ require "async"
22
+
23
+ module AssemblyAI
24
+ class TranscriptsClient
25
+ attr_reader :request_client
26
+
27
+ # @param request_client [RequestClient]
28
+ # @return [TranscriptsClient]
29
+ def initialize(request_client:)
30
+ # @type [RequestClient]
31
+ @request_client = request_client
32
+ end
33
+
34
+ # Retrieve a list of transcripts you created
35
+ #
36
+ # @param limit [Integer] Maximum amount of transcripts to retrieve
37
+ # @param status [TRANSCRIPT_STATUS] Filter by transcript status
38
+ # @param created_on [String] Only get transcripts created on this date
39
+ # @param before_id [String] Get transcripts that were created before this transcript ID
40
+ # @param after_id [String] Get transcripts that were created after this transcript ID
41
+ # @param throttled_only [Boolean] Only get throttled transcripts, overrides the status filter
42
+ # @param request_options [RequestOptions]
43
+ # @return [Transcripts::TranscriptList]
44
+ def list(limit: nil, status: nil, created_on: nil, before_id: nil, after_id: nil, throttled_only: nil,
45
+ request_options: nil)
46
+ response = @request_client.conn.get("/v2/transcript") do |req|
47
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
48
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
49
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
50
+ req.params = {
51
+ **(request_options&.additional_query_parameters || {}),
52
+ "limit": limit,
53
+ "status": status,
54
+ "created_on": created_on,
55
+ "before_id": before_id,
56
+ "after_id": after_id,
57
+ "throttled_only": throttled_only
58
+ }.compact
59
+ end
60
+ Transcripts::TranscriptList.from_json(json_object: response.body)
61
+ end
62
+
63
+ # Create a transcript from an audio or video file that is accessible via a URL.
64
+ #
65
+ # @param speech_model [Transcripts::SPEECH_MODEL]
66
+ # @param language_code [TRANSCRIPT_LANGUAGE_CODE]
67
+ # @param punctuate [Boolean] Enable Automatic Punctuation, can be true or false
68
+ # @param format_text [Boolean] Enable Text Formatting, can be true or false
69
+ # @param dual_channel [Boolean] Enable [Dual Channel](https://www.assemblyai.com/docs/models/speech-recognition#dual-channel-transcription) transcription, can be true or false.
70
+ # @param webhook_url [String] The URL to which AssemblyAI send webhooks upon trancription completion
71
+ # @param webhook_auth_header_name [String] The header name which should be sent back with webhook calls
72
+ # @param webhook_auth_header_value [String] Specify a header name and value to send back with a webhook call for added security
73
+ # @param auto_highlights [Boolean] Whether Key Phrases is enabled, either true or false
74
+ # @param audio_start_from [Integer] The point in time, in milliseconds, to begin transcribing in your media file
75
+ # @param audio_end_at [Integer] The point in time, in milliseconds, to stop transcribing in your media file
76
+ # @param word_boost [Array<String>] The list of custom vocabulary to boost transcription probability for
77
+ # @param boost_param [TRANSCRIPT_BOOST_PARAM] The word boost parameter value
78
+ # @param filter_profanity [Boolean] Filter profanity from the transcribed text, can be true or false
79
+ # @param redact_pii [Boolean] Redact PII from the transcribed text using the Redact PII model, can be true or false
80
+ # @param redact_pii_audio [Boolean] Generate a copy of the original media file with spoken PII "beeped" out, can be true or false. See [PII redaction](https://www.assemblyai.com/docs/models/pii-redaction) for more details.
81
+ # @param redact_pii_audio_quality [REDACT_PII_AUDIO_QUALITY] Controls the filetype of the audio created by redact_pii_audio. Currently supports mp3 (default) and wav. See [PII redaction](https://www.assemblyai.com/docs/models/pii-redaction) for more details.
82
+ # @param redact_pii_policies [Array<Transcripts::PII_POLICY>] The list of PII Redaction policies to enable. See [PII redaction](https://www.assemblyai.com/docs/models/pii-redaction) for more details.
83
+ # @param redact_pii_sub [SUBSTITUTION_POLICY]
84
+ # @param speaker_labels [Boolean] Enable [Speaker diarization](https://www.assemblyai.com/docs/models/speaker-diarization), can be true or false
85
+ # @param speakers_expected [Integer] Tells the speaker label model how many speakers it should attempt to identify, up to 10. See [Speaker diarization](https://www.assemblyai.com/docs/models/speaker-diarization) for more details.
86
+ # @param content_safety [Boolean] Enable [Content Moderation](https://www.assemblyai.com/docs/models/content-moderation), can be true or false
87
+ # @param content_safety_confidence [Integer] The confidence threshold for content moderation. Values must be between 25 and 100.
88
+ # @param iab_categories [Boolean] Enable [Topic Detection](https://www.assemblyai.com/docs/models/topic-detection), can be true or false
89
+ # @param language_detection [Boolean] Whether [Automatic language detection](https://www.assemblyai.com/docs/models/speech-recognition#automatic-language-detection) was enabled in the transcription request, either true or false.
90
+ # @param custom_spelling [Array<Hash>] Customize how words are spelled and formatted using to and from valuesRequest of type Array<Transcripts::TranscriptCustomSpelling>, as a Hash
91
+ # * :from (Array<String>)
92
+ # * :to (String)
93
+ # @param disfluencies [Boolean] Transcribe Filler Words, like "umm", in your media file; can be true or false
94
+ # @param sentiment_analysis [Boolean] Enable [Sentiment Analysis](https://www.assemblyai.com/docs/models/sentiment-analysis), can be true or false
95
+ # @param auto_chapters [Boolean] Enable [Auto Chapters](https://www.assemblyai.com/docs/models/auto-chapters), can be true or false
96
+ # @param entity_detection [Boolean] Enable [Entity Detection](https://www.assemblyai.com/docs/models/entity-detection), can be true or false
97
+ # @param speech_threshold [Float] Reject audio files that contain less than this fraction of speech.
98
+ # Valid values are in the range [0, 1] inclusive.
99
+ # @param summarization [Boolean] Enable [Summarization](https://www.assemblyai.com/docs/models/summarization), can be true or false
100
+ # @param summary_model [SUMMARY_MODEL] The model to summarize the transcript
101
+ # @param summary_type [SUMMARY_TYPE] The type of summary
102
+ # @param custom_topics [Boolean] Whether custom topics is enabled, either true or false
103
+ # @param topics [Array<String>] The list of custom topics provided, if custom topics is enabled
104
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
105
+ # @param audio_url [String] The URL of the audio or video file to transcribe.
106
+ # @param request_options [RequestOptions]
107
+ # @return [Transcripts::Transcript]
108
+ def submit(audio_url:, speech_model: nil, language_code: nil, punctuate: nil, format_text: nil, dual_channel: nil,
109
+ webhook_url: nil, webhook_auth_header_name: nil, webhook_auth_header_value: nil, auto_highlights: nil, audio_start_from: nil, audio_end_at: nil, word_boost: nil, boost_param: nil, filter_profanity: nil, redact_pii: nil, redact_pii_audio: nil, redact_pii_audio_quality: nil, redact_pii_policies: nil, redact_pii_sub: nil, speaker_labels: nil, speakers_expected: nil, content_safety: nil, content_safety_confidence: nil, iab_categories: nil, language_detection: nil, custom_spelling: nil, disfluencies: nil, sentiment_analysis: nil, auto_chapters: nil, entity_detection: nil, speech_threshold: nil, summarization: nil, summary_model: nil, summary_type: nil, custom_topics: nil, topics: nil, additional_properties: nil, request_options: nil)
110
+ response = @request_client.conn.post("/v2/transcript") do |req|
111
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
112
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
113
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
114
+ req.body = {
115
+ **(request_options&.additional_body_parameters || {}),
116
+ speech_model: speech_model,
117
+ language_code: language_code,
118
+ punctuate: punctuate,
119
+ format_text: format_text,
120
+ dual_channel: dual_channel,
121
+ webhook_url: webhook_url,
122
+ webhook_auth_header_name: webhook_auth_header_name,
123
+ webhook_auth_header_value: webhook_auth_header_value,
124
+ auto_highlights: auto_highlights,
125
+ audio_start_from: audio_start_from,
126
+ audio_end_at: audio_end_at,
127
+ word_boost: word_boost,
128
+ boost_param: boost_param,
129
+ filter_profanity: filter_profanity,
130
+ redact_pii: redact_pii,
131
+ redact_pii_audio: redact_pii_audio,
132
+ redact_pii_audio_quality: redact_pii_audio_quality,
133
+ redact_pii_policies: redact_pii_policies,
134
+ redact_pii_sub: redact_pii_sub,
135
+ speaker_labels: speaker_labels,
136
+ speakers_expected: speakers_expected,
137
+ content_safety: content_safety,
138
+ content_safety_confidence: content_safety_confidence,
139
+ iab_categories: iab_categories,
140
+ language_detection: language_detection,
141
+ custom_spelling: custom_spelling,
142
+ disfluencies: disfluencies,
143
+ sentiment_analysis: sentiment_analysis,
144
+ auto_chapters: auto_chapters,
145
+ entity_detection: entity_detection,
146
+ speech_threshold: speech_threshold,
147
+ summarization: summarization,
148
+ summary_model: summary_model,
149
+ summary_type: summary_type,
150
+ custom_topics: custom_topics,
151
+ topics: topics,
152
+ additional_properties: additional_properties,
153
+ audio_url: audio_url
154
+ }.compact
155
+ end
156
+ Transcripts::Transcript.from_json(json_object: response.body)
157
+ end
158
+
159
+ # Get the transcript resource. The transcript is ready when the "status" is "completed".
160
+ #
161
+ # @param transcript_id [String] ID of the transcript
162
+ # @param request_options [RequestOptions]
163
+ # @return [Transcripts::Transcript]
164
+ def get(transcript_id:, request_options: nil)
165
+ response = @request_client.conn.get("/v2/transcript/#{transcript_id}") do |req|
166
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
167
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
168
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
169
+ end
170
+ Transcripts::Transcript.from_json(json_object: response.body)
171
+ end
172
+
173
+ # Delete the transcript
174
+ #
175
+ # @param transcript_id [String] ID of the transcript
176
+ # @param request_options [RequestOptions]
177
+ # @return [Transcripts::Transcript]
178
+ def delete(transcript_id:, request_options: nil)
179
+ response = @request_client.conn.delete("/v2/transcript/#{transcript_id}") do |req|
180
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
181
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
182
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
183
+ end
184
+ Transcripts::Transcript.from_json(json_object: response.body)
185
+ end
186
+
187
+ # Export your transcript in SRT or VTT format, to be plugged into a video player for subtitles and closed captions.
188
+ #
189
+ # @param transcript_id [String] ID of the transcript
190
+ # @param subtitle_format [SUBTITLE_FORMAT] The format of the captions
191
+ # @param chars_per_caption [Integer] The maximum number of characters per caption
192
+ # @param request_options [RequestOptions]
193
+ # @return [String]
194
+ def get_subtitles(transcript_id:, subtitle_format:, chars_per_caption: nil, request_options: nil)
195
+ response = @request_client.conn.get("/v2/transcript/#{transcript_id}/#{subtitle_format}") do |req|
196
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
197
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
198
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
199
+ req.params = {
200
+ **(request_options&.additional_query_parameters || {}),
201
+ "chars_per_caption": chars_per_caption
202
+ }.compact
203
+ end
204
+ response.body
205
+ end
206
+
207
+ # Get the transcript split by sentences. The API will attempt to semantically segment the transcript into sentences to create more reader-friendly transcripts.
208
+ #
209
+ # @param transcript_id [String] ID of the transcript
210
+ # @param request_options [RequestOptions]
211
+ # @return [Transcripts::SentencesResponse]
212
+ def get_sentences(transcript_id:, request_options: nil)
213
+ response = @request_client.conn.get("/v2/transcript/#{transcript_id}/sentences") do |req|
214
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
215
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
216
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
217
+ end
218
+ Transcripts::SentencesResponse.from_json(json_object: response.body)
219
+ end
220
+
221
+ # Get the transcript split by paragraphs. The API will attempt to semantically segment your transcript into paragraphs to create more reader-friendly transcripts.
222
+ #
223
+ # @param transcript_id [String] ID of the transcript
224
+ # @param request_options [RequestOptions]
225
+ # @return [Transcripts::ParagraphsResponse]
226
+ def get_paragraphs(transcript_id:, request_options: nil)
227
+ response = @request_client.conn.get("/v2/transcript/#{transcript_id}/paragraphs") do |req|
228
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
229
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
230
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
231
+ end
232
+ Transcripts::ParagraphsResponse.from_json(json_object: response.body)
233
+ end
234
+
235
+ # Search through the transcript for a specific set of keywords. You can search for individual words, numbers, or phrases containing up to five words or numbers.
236
+ #
237
+ # @param transcript_id [String] ID of the transcript
238
+ # @param words [String] Keywords to search for
239
+ # @param request_options [RequestOptions]
240
+ # @return [Transcripts::WordSearchResponse]
241
+ def word_search(transcript_id:, words: nil, request_options: nil)
242
+ response = @request_client.conn.get("/v2/transcript/#{transcript_id}/word-search") do |req|
243
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
244
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
245
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
246
+ req.params = { **(request_options&.additional_query_parameters || {}), "words": words }.compact
247
+ end
248
+ Transcripts::WordSearchResponse.from_json(json_object: response.body)
249
+ end
250
+
251
+ # Retrieve the redacted audio object containing the status and URL to the redacted audio.
252
+ #
253
+ # @param transcript_id [String] ID of the transcript
254
+ # @param request_options [RequestOptions]
255
+ # @return [Transcripts::RedactedAudioResponse]
256
+ def get_redacted_audio(transcript_id:, request_options: nil)
257
+ response = @request_client.conn.get("/v2/transcript/#{transcript_id}/redacted-audio") do |req|
258
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
259
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
260
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
261
+ end
262
+ Transcripts::RedactedAudioResponse.from_json(json_object: response.body)
263
+ end
264
+ end
265
+
266
+ class AsyncTranscriptsClient
267
+ attr_reader :request_client
268
+
269
+ # @param request_client [AsyncRequestClient]
270
+ # @return [AsyncTranscriptsClient]
271
+ def initialize(request_client:)
272
+ # @type [AsyncRequestClient]
273
+ @request_client = request_client
274
+ end
275
+
276
+ # Retrieve a list of transcripts you created
277
+ #
278
+ # @param limit [Integer] Maximum amount of transcripts to retrieve
279
+ # @param status [TRANSCRIPT_STATUS] Filter by transcript status
280
+ # @param created_on [String] Only get transcripts created on this date
281
+ # @param before_id [String] Get transcripts that were created before this transcript ID
282
+ # @param after_id [String] Get transcripts that were created after this transcript ID
283
+ # @param throttled_only [Boolean] Only get throttled transcripts, overrides the status filter
284
+ # @param request_options [RequestOptions]
285
+ # @return [Transcripts::TranscriptList]
286
+ def list(limit: nil, status: nil, created_on: nil, before_id: nil, after_id: nil, throttled_only: nil,
287
+ request_options: nil)
288
+ Async do
289
+ response = @request_client.conn.get("/v2/transcript") do |req|
290
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
291
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
292
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
293
+ req.params = {
294
+ **(request_options&.additional_query_parameters || {}),
295
+ "limit": limit,
296
+ "status": status,
297
+ "created_on": created_on,
298
+ "before_id": before_id,
299
+ "after_id": after_id,
300
+ "throttled_only": throttled_only
301
+ }.compact
302
+ end
303
+ Transcripts::TranscriptList.from_json(json_object: response.body)
304
+ end
305
+ end
306
+
307
+ # Create a transcript from an audio or video file that is accessible via a URL.
308
+ #
309
+ # @param speech_model [Transcripts::SPEECH_MODEL]
310
+ # @param language_code [TRANSCRIPT_LANGUAGE_CODE]
311
+ # @param punctuate [Boolean] Enable Automatic Punctuation, can be true or false
312
+ # @param format_text [Boolean] Enable Text Formatting, can be true or false
313
+ # @param dual_channel [Boolean] Enable [Dual Channel](https://www.assemblyai.com/docs/models/speech-recognition#dual-channel-transcription) transcription, can be true or false.
314
+ # @param webhook_url [String] The URL to which AssemblyAI send webhooks upon trancription completion
315
+ # @param webhook_auth_header_name [String] The header name which should be sent back with webhook calls
316
+ # @param webhook_auth_header_value [String] Specify a header name and value to send back with a webhook call for added security
317
+ # @param auto_highlights [Boolean] Whether Key Phrases is enabled, either true or false
318
+ # @param audio_start_from [Integer] The point in time, in milliseconds, to begin transcribing in your media file
319
+ # @param audio_end_at [Integer] The point in time, in milliseconds, to stop transcribing in your media file
320
+ # @param word_boost [Array<String>] The list of custom vocabulary to boost transcription probability for
321
+ # @param boost_param [TRANSCRIPT_BOOST_PARAM] The word boost parameter value
322
+ # @param filter_profanity [Boolean] Filter profanity from the transcribed text, can be true or false
323
+ # @param redact_pii [Boolean] Redact PII from the transcribed text using the Redact PII model, can be true or false
324
+ # @param redact_pii_audio [Boolean] Generate a copy of the original media file with spoken PII "beeped" out, can be true or false. See [PII redaction](https://www.assemblyai.com/docs/models/pii-redaction) for more details.
325
+ # @param redact_pii_audio_quality [REDACT_PII_AUDIO_QUALITY] Controls the filetype of the audio created by redact_pii_audio. Currently supports mp3 (default) and wav. See [PII redaction](https://www.assemblyai.com/docs/models/pii-redaction) for more details.
326
+ # @param redact_pii_policies [Array<Transcripts::PII_POLICY>] The list of PII Redaction policies to enable. See [PII redaction](https://www.assemblyai.com/docs/models/pii-redaction) for more details.
327
+ # @param redact_pii_sub [SUBSTITUTION_POLICY]
328
+ # @param speaker_labels [Boolean] Enable [Speaker diarization](https://www.assemblyai.com/docs/models/speaker-diarization), can be true or false
329
+ # @param speakers_expected [Integer] Tells the speaker label model how many speakers it should attempt to identify, up to 10. See [Speaker diarization](https://www.assemblyai.com/docs/models/speaker-diarization) for more details.
330
+ # @param content_safety [Boolean] Enable [Content Moderation](https://www.assemblyai.com/docs/models/content-moderation), can be true or false
331
+ # @param content_safety_confidence [Integer] The confidence threshold for content moderation. Values must be between 25 and 100.
332
+ # @param iab_categories [Boolean] Enable [Topic Detection](https://www.assemblyai.com/docs/models/topic-detection), can be true or false
333
+ # @param language_detection [Boolean] Whether [Automatic language detection](https://www.assemblyai.com/docs/models/speech-recognition#automatic-language-detection) was enabled in the transcription request, either true or false.
334
+ # @param custom_spelling [Array<Hash>] Customize how words are spelled and formatted using to and from valuesRequest of type Array<Transcripts::TranscriptCustomSpelling>, as a Hash
335
+ # * :from (Array<String>)
336
+ # * :to (String)
337
+ # @param disfluencies [Boolean] Transcribe Filler Words, like "umm", in your media file; can be true or false
338
+ # @param sentiment_analysis [Boolean] Enable [Sentiment Analysis](https://www.assemblyai.com/docs/models/sentiment-analysis), can be true or false
339
+ # @param auto_chapters [Boolean] Enable [Auto Chapters](https://www.assemblyai.com/docs/models/auto-chapters), can be true or false
340
+ # @param entity_detection [Boolean] Enable [Entity Detection](https://www.assemblyai.com/docs/models/entity-detection), can be true or false
341
+ # @param speech_threshold [Float] Reject audio files that contain less than this fraction of speech.
342
+ # Valid values are in the range [0, 1] inclusive.
343
+ # @param summarization [Boolean] Enable [Summarization](https://www.assemblyai.com/docs/models/summarization), can be true or false
344
+ # @param summary_model [SUMMARY_MODEL] The model to summarize the transcript
345
+ # @param summary_type [SUMMARY_TYPE] The type of summary
346
+ # @param custom_topics [Boolean] Whether custom topics is enabled, either true or false
347
+ # @param topics [Array<String>] The list of custom topics provided, if custom topics is enabled
348
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
349
+ # @param audio_url [String] The URL of the audio or video file to transcribe.
350
+ # @param request_options [RequestOptions]
351
+ # @return [Transcripts::Transcript]
352
+ def submit(audio_url:, speech_model: nil, language_code: nil, punctuate: nil, format_text: nil, dual_channel: nil,
353
+ webhook_url: nil, webhook_auth_header_name: nil, webhook_auth_header_value: nil, auto_highlights: nil, audio_start_from: nil, audio_end_at: nil, word_boost: nil, boost_param: nil, filter_profanity: nil, redact_pii: nil, redact_pii_audio: nil, redact_pii_audio_quality: nil, redact_pii_policies: nil, redact_pii_sub: nil, speaker_labels: nil, speakers_expected: nil, content_safety: nil, content_safety_confidence: nil, iab_categories: nil, language_detection: nil, custom_spelling: nil, disfluencies: nil, sentiment_analysis: nil, auto_chapters: nil, entity_detection: nil, speech_threshold: nil, summarization: nil, summary_model: nil, summary_type: nil, custom_topics: nil, topics: nil, additional_properties: nil, request_options: nil)
354
+ Async do
355
+ response = @request_client.conn.post("/v2/transcript") do |req|
356
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
357
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
358
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
359
+ req.body = {
360
+ **(request_options&.additional_body_parameters || {}),
361
+ speech_model: speech_model,
362
+ language_code: language_code,
363
+ punctuate: punctuate,
364
+ format_text: format_text,
365
+ dual_channel: dual_channel,
366
+ webhook_url: webhook_url,
367
+ webhook_auth_header_name: webhook_auth_header_name,
368
+ webhook_auth_header_value: webhook_auth_header_value,
369
+ auto_highlights: auto_highlights,
370
+ audio_start_from: audio_start_from,
371
+ audio_end_at: audio_end_at,
372
+ word_boost: word_boost,
373
+ boost_param: boost_param,
374
+ filter_profanity: filter_profanity,
375
+ redact_pii: redact_pii,
376
+ redact_pii_audio: redact_pii_audio,
377
+ redact_pii_audio_quality: redact_pii_audio_quality,
378
+ redact_pii_policies: redact_pii_policies,
379
+ redact_pii_sub: redact_pii_sub,
380
+ speaker_labels: speaker_labels,
381
+ speakers_expected: speakers_expected,
382
+ content_safety: content_safety,
383
+ content_safety_confidence: content_safety_confidence,
384
+ iab_categories: iab_categories,
385
+ language_detection: language_detection,
386
+ custom_spelling: custom_spelling,
387
+ disfluencies: disfluencies,
388
+ sentiment_analysis: sentiment_analysis,
389
+ auto_chapters: auto_chapters,
390
+ entity_detection: entity_detection,
391
+ speech_threshold: speech_threshold,
392
+ summarization: summarization,
393
+ summary_model: summary_model,
394
+ summary_type: summary_type,
395
+ custom_topics: custom_topics,
396
+ topics: topics,
397
+ additional_properties: additional_properties,
398
+ audio_url: audio_url
399
+ }.compact
400
+ end
401
+ Transcripts::Transcript.from_json(json_object: response.body)
402
+ end
403
+ end
404
+
405
+ # Get the transcript resource. The transcript is ready when the "status" is "completed".
406
+ #
407
+ # @param transcript_id [String] ID of the transcript
408
+ # @param request_options [RequestOptions]
409
+ # @return [Transcripts::Transcript]
410
+ def get(transcript_id:, request_options: nil)
411
+ Async do
412
+ response = @request_client.conn.get("/v2/transcript/#{transcript_id}") do |req|
413
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
414
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
415
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
416
+ end
417
+ Transcripts::Transcript.from_json(json_object: response.body)
418
+ end
419
+ end
420
+
421
+ # Delete the transcript
422
+ #
423
+ # @param transcript_id [String] ID of the transcript
424
+ # @param request_options [RequestOptions]
425
+ # @return [Transcripts::Transcript]
426
+ def delete(transcript_id:, request_options: nil)
427
+ Async do
428
+ response = @request_client.conn.delete("/v2/transcript/#{transcript_id}") do |req|
429
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
430
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
431
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
432
+ end
433
+ Transcripts::Transcript.from_json(json_object: response.body)
434
+ end
435
+ end
436
+
437
+ # Export your transcript in SRT or VTT format, to be plugged into a video player for subtitles and closed captions.
438
+ #
439
+ # @param transcript_id [String] ID of the transcript
440
+ # @param subtitle_format [SUBTITLE_FORMAT] The format of the captions
441
+ # @param chars_per_caption [Integer] The maximum number of characters per caption
442
+ # @param request_options [RequestOptions]
443
+ # @return [String]
444
+ def get_subtitles(transcript_id:, subtitle_format:, chars_per_caption: nil, request_options: nil)
445
+ Async do
446
+ response = @request_client.conn.get("/v2/transcript/#{transcript_id}/#{subtitle_format}") do |req|
447
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
448
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
449
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
450
+ req.params = {
451
+ **(request_options&.additional_query_parameters || {}),
452
+ "chars_per_caption": chars_per_caption
453
+ }.compact
454
+ end
455
+ response.body
456
+ end
457
+ end
458
+
459
+ # Get the transcript split by sentences. The API will attempt to semantically segment the transcript into sentences to create more reader-friendly transcripts.
460
+ #
461
+ # @param transcript_id [String] ID of the transcript
462
+ # @param request_options [RequestOptions]
463
+ # @return [Transcripts::SentencesResponse]
464
+ def get_sentences(transcript_id:, request_options: nil)
465
+ Async do
466
+ response = @request_client.conn.get("/v2/transcript/#{transcript_id}/sentences") do |req|
467
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
468
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
469
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
470
+ end
471
+ Transcripts::SentencesResponse.from_json(json_object: response.body)
472
+ end
473
+ end
474
+
475
+ # Get the transcript split by paragraphs. The API will attempt to semantically segment your transcript into paragraphs to create more reader-friendly transcripts.
476
+ #
477
+ # @param transcript_id [String] ID of the transcript
478
+ # @param request_options [RequestOptions]
479
+ # @return [Transcripts::ParagraphsResponse]
480
+ def get_paragraphs(transcript_id:, request_options: nil)
481
+ Async do
482
+ response = @request_client.conn.get("/v2/transcript/#{transcript_id}/paragraphs") do |req|
483
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
484
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
485
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
486
+ end
487
+ Transcripts::ParagraphsResponse.from_json(json_object: response.body)
488
+ end
489
+ end
490
+
491
+ # Search through the transcript for a specific set of keywords. You can search for individual words, numbers, or phrases containing up to five words or numbers.
492
+ #
493
+ # @param transcript_id [String] ID of the transcript
494
+ # @param words [String] Keywords to search for
495
+ # @param request_options [RequestOptions]
496
+ # @return [Transcripts::WordSearchResponse]
497
+ def word_search(transcript_id:, words: nil, request_options: nil)
498
+ Async do
499
+ response = @request_client.conn.get("/v2/transcript/#{transcript_id}/word-search") do |req|
500
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
501
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
502
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
503
+ req.params = { **(request_options&.additional_query_parameters || {}), "words": words }.compact
504
+ end
505
+ Transcripts::WordSearchResponse.from_json(json_object: response.body)
506
+ end
507
+ end
508
+
509
+ # Retrieve the redacted audio object containing the status and URL to the redacted audio.
510
+ #
511
+ # @param transcript_id [String] ID of the transcript
512
+ # @param request_options [RequestOptions]
513
+ # @return [Transcripts::RedactedAudioResponse]
514
+ def get_redacted_audio(transcript_id:, request_options: nil)
515
+ Async do
516
+ response = @request_client.conn.get("/v2/transcript/#{transcript_id}/redacted-audio") do |req|
517
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
518
+ req.headers["Authorization"] = request_options.api_key unless request_options&.api_key.nil?
519
+ req.headers = { **req.headers, **(request_options&.additional_headers || {}) }.compact
520
+ end
521
+ Transcripts::RedactedAudioResponse.from_json(json_object: response.body)
522
+ end
523
+ end
524
+ end
525
+ end