assemblyai 1.0.0.pre.beta

Sign up to get free protection for your applications and to get access to all the features.
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,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "entity_type"
4
+ require "json"
5
+
6
+ module AssemblyAI
7
+ class Transcripts
8
+ # A detected entity
9
+ class Entity
10
+ attr_reader :entity_type, :text, :start, :end_, :additional_properties
11
+
12
+ # @param entity_type [ENTITY_TYPE] The type of entity for the detected entity
13
+ # @param text [String] The text for the detected entity
14
+ # @param start [Integer] The starting time, in milliseconds, at which the detected entity appears in the audio file
15
+ # @param end_ [Integer] The ending time, in milliseconds, for the detected entity in the audio file
16
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
17
+ # @return [Transcripts::Entity]
18
+ def initialize(entity_type:, text:, start:, end_:, additional_properties: nil)
19
+ # @type [ENTITY_TYPE] The type of entity for the detected entity
20
+ @entity_type = entity_type
21
+ # @type [String] The text for the detected entity
22
+ @text = text
23
+ # @type [Integer] The starting time, in milliseconds, at which the detected entity appears in the audio file
24
+ @start = start
25
+ # @type [Integer] The ending time, in milliseconds, for the detected entity in the audio file
26
+ @end_ = end_
27
+ # @type [OpenStruct] Additional properties unmapped to the current class definition
28
+ @additional_properties = additional_properties
29
+ end
30
+
31
+ # Deserialize a JSON object to an instance of Entity
32
+ #
33
+ # @param json_object [JSON]
34
+ # @return [Transcripts::Entity]
35
+ def self.from_json(json_object:)
36
+ struct = JSON.parse(json_object, object_class: OpenStruct)
37
+ parsed_json = JSON.parse(json_object)
38
+ entity_type = Transcripts::ENTITY_TYPE.key(parsed_json["entity_type"]) || parsed_json["entity_type"]
39
+ text = struct.text
40
+ start = struct.start
41
+ end_ = struct.end
42
+ new(entity_type: entity_type, text: text, start: start, end_: end_, additional_properties: struct)
43
+ end
44
+
45
+ # Serialize an instance of Entity to a JSON object
46
+ #
47
+ # @return [JSON]
48
+ def to_json(*_args)
49
+ {
50
+ "entity_type": Transcripts::ENTITY_TYPE[@entity_type] || @entity_type,
51
+ "text": @text,
52
+ "start": @start,
53
+ "end": @end_
54
+ }.to_json
55
+ end
56
+
57
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given hash and check each fields type against the current object's property definitions.
58
+ #
59
+ # @param obj [Object]
60
+ # @return [Void]
61
+ def self.validate_raw(obj:)
62
+ obj.entity_type.is_a?(Transcripts::ENTITY_TYPE) != false || raise("Passed value for field obj.entity_type is not the expected type, validation failed.")
63
+ obj.text.is_a?(String) != false || raise("Passed value for field obj.text is not the expected type, validation failed.")
64
+ obj.start.is_a?(Integer) != false || raise("Passed value for field obj.start is not the expected type, validation failed.")
65
+ obj.end_.is_a?(Integer) != false || raise("Passed value for field obj.end_ is not the expected type, validation failed.")
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AssemblyAI
4
+ class Transcripts
5
+ # @type [ENTITY_TYPE]
6
+ ENTITY_TYPE = {
7
+ banking_information: "banking_information",
8
+ blood_type: "blood_type",
9
+ credit_card_cvv: "credit_card_cvv",
10
+ credit_card_expiration: "credit_card_expiration",
11
+ credit_card_number: "credit_card_number",
12
+ date: "date",
13
+ date_of_birth: "date_of_birth",
14
+ drivers_license: "drivers_license",
15
+ drug: "drug",
16
+ email_address: "email_address",
17
+ event: "event",
18
+ injury: "injury",
19
+ language: "language",
20
+ location: "location",
21
+ medical_condition: "medical_condition",
22
+ medical_process: "medical_process",
23
+ money_amount: "money_amount",
24
+ nationality: "nationality",
25
+ occupation: "occupation",
26
+ organization: "organization",
27
+ password: "password",
28
+ person_age: "person_age",
29
+ person_name: "person_name",
30
+ phone_number: "phone_number",
31
+ political_affiliation: "political_affiliation",
32
+ religion: "religion",
33
+ time: "time",
34
+ url: "url",
35
+ us_social_security_number: "us_social_security_number"
36
+ }.freeze
37
+ end
38
+ end
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+
5
+ module AssemblyAI
6
+ class Transcripts
7
+ class PageDetails
8
+ attr_reader :limit, :result_count, :current_url, :prev_url, :next_url, :additional_properties
9
+
10
+ # @param limit [Integer]
11
+ # @param result_count [Integer]
12
+ # @param current_url [String]
13
+ # @param prev_url [String]
14
+ # @param next_url [String]
15
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
16
+ # @return [Transcripts::PageDetails]
17
+ def initialize(limit:, result_count:, current_url:, prev_url:, next_url: nil, additional_properties: nil)
18
+ # @type [Integer]
19
+ @limit = limit
20
+ # @type [Integer]
21
+ @result_count = result_count
22
+ # @type [String]
23
+ @current_url = current_url
24
+ # @type [String]
25
+ @prev_url = prev_url
26
+ # @type [String]
27
+ @next_url = next_url
28
+ # @type [OpenStruct] Additional properties unmapped to the current class definition
29
+ @additional_properties = additional_properties
30
+ end
31
+
32
+ # Deserialize a JSON object to an instance of PageDetails
33
+ #
34
+ # @param json_object [JSON]
35
+ # @return [Transcripts::PageDetails]
36
+ def self.from_json(json_object:)
37
+ struct = JSON.parse(json_object, object_class: OpenStruct)
38
+ JSON.parse(json_object)
39
+ limit = struct.limit
40
+ result_count = struct.result_count
41
+ current_url = struct.current_url
42
+ prev_url = struct.prev_url
43
+ next_url = struct.next_url
44
+ new(limit: limit, result_count: result_count, current_url: current_url, prev_url: prev_url, next_url: next_url,
45
+ additional_properties: struct)
46
+ end
47
+
48
+ # Serialize an instance of PageDetails to a JSON object
49
+ #
50
+ # @return [JSON]
51
+ def to_json(*_args)
52
+ {
53
+ "limit": @limit,
54
+ "result_count": @result_count,
55
+ "current_url": @current_url,
56
+ "prev_url": @prev_url,
57
+ "next_url": @next_url
58
+ }.to_json
59
+ end
60
+
61
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given hash and check each fields type against the current object's property definitions.
62
+ #
63
+ # @param obj [Object]
64
+ # @return [Void]
65
+ def self.validate_raw(obj:)
66
+ obj.limit.is_a?(Integer) != false || raise("Passed value for field obj.limit is not the expected type, validation failed.")
67
+ obj.result_count.is_a?(Integer) != false || raise("Passed value for field obj.result_count is not the expected type, validation failed.")
68
+ obj.current_url.is_a?(String) != false || raise("Passed value for field obj.current_url is not the expected type, validation failed.")
69
+ obj.prev_url.is_a?(String) != false || raise("Passed value for field obj.prev_url is not the expected type, validation failed.")
70
+ obj.next_url&.is_a?(String) != false || raise("Passed value for field obj.next_url is not the expected type, validation failed.")
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "transcript_paragraph"
4
+ require "json"
5
+
6
+ module AssemblyAI
7
+ class Transcripts
8
+ class ParagraphsResponse
9
+ attr_reader :id, :confidence, :audio_duration, :paragraphs, :additional_properties
10
+
11
+ # @param id [String]
12
+ # @param confidence [Float]
13
+ # @param audio_duration [Float]
14
+ # @param paragraphs [Array<Transcripts::TranscriptParagraph>]
15
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
16
+ # @return [Transcripts::ParagraphsResponse]
17
+ def initialize(id:, confidence:, audio_duration:, paragraphs:, additional_properties: nil)
18
+ # @type [String]
19
+ @id = id
20
+ # @type [Float]
21
+ @confidence = confidence
22
+ # @type [Float]
23
+ @audio_duration = audio_duration
24
+ # @type [Array<Transcripts::TranscriptParagraph>]
25
+ @paragraphs = paragraphs
26
+ # @type [OpenStruct] Additional properties unmapped to the current class definition
27
+ @additional_properties = additional_properties
28
+ end
29
+
30
+ # Deserialize a JSON object to an instance of ParagraphsResponse
31
+ #
32
+ # @param json_object [JSON]
33
+ # @return [Transcripts::ParagraphsResponse]
34
+ def self.from_json(json_object:)
35
+ struct = JSON.parse(json_object, object_class: OpenStruct)
36
+ parsed_json = JSON.parse(json_object)
37
+ id = struct.id
38
+ confidence = struct.confidence
39
+ audio_duration = struct.audio_duration
40
+ paragraphs = parsed_json["paragraphs"]&.map do |v|
41
+ v = v.to_json
42
+ Transcripts::TranscriptParagraph.from_json(json_object: v)
43
+ end
44
+ new(id: id, confidence: confidence, audio_duration: audio_duration, paragraphs: paragraphs,
45
+ additional_properties: struct)
46
+ end
47
+
48
+ # Serialize an instance of ParagraphsResponse to a JSON object
49
+ #
50
+ # @return [JSON]
51
+ def to_json(*_args)
52
+ { "id": @id, "confidence": @confidence, "audio_duration": @audio_duration, "paragraphs": @paragraphs }.to_json
53
+ end
54
+
55
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given hash and check each fields type against the current object's property definitions.
56
+ #
57
+ # @param obj [Object]
58
+ # @return [Void]
59
+ def self.validate_raw(obj:)
60
+ obj.id.is_a?(String) != false || raise("Passed value for field obj.id is not the expected type, validation failed.")
61
+ obj.confidence.is_a?(Float) != false || raise("Passed value for field obj.confidence is not the expected type, validation failed.")
62
+ obj.audio_duration.is_a?(Float) != false || raise("Passed value for field obj.audio_duration is not the expected type, validation failed.")
63
+ obj.paragraphs.is_a?(Array) != false || raise("Passed value for field obj.paragraphs is not the expected type, validation failed.")
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AssemblyAI
4
+ class Transcripts
5
+ # @type [PII_POLICY]
6
+ PII_POLICY = {
7
+ medical_process: "medical_process",
8
+ medical_condition: "medical_condition",
9
+ blood_type: "blood_type",
10
+ drug: "drug",
11
+ injury: "injury",
12
+ number_sequence: "number_sequence",
13
+ email_address: "email_address",
14
+ date_of_birth: "date_of_birth",
15
+ phone_number: "phone_number",
16
+ us_social_security_number: "us_social_security_number",
17
+ credit_card_number: "credit_card_number",
18
+ credit_card_expiration: "credit_card_expiration",
19
+ credit_card_cvv: "credit_card_cvv",
20
+ date: "date",
21
+ nationality: "nationality",
22
+ event: "event",
23
+ language: "language",
24
+ location: "location",
25
+ money_amount: "money_amount",
26
+ person_name: "person_name",
27
+ person_age: "person_age",
28
+ organization: "organization",
29
+ political_affiliation: "political_affiliation",
30
+ occupation: "occupation",
31
+ religion: "religion",
32
+ drivers_license: "drivers_license",
33
+ banking_information: "banking_information"
34
+ }.freeze
35
+ end
36
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AssemblyAI
4
+ class Transcripts
5
+ # Configuration options for polling requests.
6
+ class PollingOptions
7
+ attr_reader :interval, :timeout
8
+
9
+ # @param interval [Integer] The amount of time to wait between polling requests, in milliseconds. Defaults to 3000.
10
+ # @param timeout [Integer] The maximum amount of time to wait for the transcript to be ready, in milliseconds. Defaults to -1, which means poll forever.
11
+ # @return [Transcripts::PollingOptions]
12
+ def initialize(interval: 3000, timeout: -1)
13
+ # @type [Integer] The amount of time to wait between polling requests, in milliseconds.
14
+ @interval = interval
15
+ # @type [Integer] The maximum amount of time to wait for the transcript to be ready, in milliseconds.
16
+ @timeout = timeout
17
+ end
18
+ end
19
+ end
20
+ end
21
+
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AssemblyAI
4
+ class Transcripts
5
+ # @type [REDACT_PII_AUDIO_QUALITY]
6
+ REDACT_PII_AUDIO_QUALITY = { mp3: "mp3", wav: "wav" }.freeze
7
+ end
8
+ end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "redacted_audio_status"
4
+ require "json"
5
+
6
+ module AssemblyAI
7
+ class Transcripts
8
+ class RedactedAudioResponse
9
+ attr_reader :status, :redacted_audio_url, :additional_properties
10
+
11
+ # @param status [Transcripts::REDACTED_AUDIO_STATUS] The status of the redacted audio
12
+ # @param redacted_audio_url [String] The URL of the redacted audio file
13
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
14
+ # @return [Transcripts::RedactedAudioResponse]
15
+ def initialize(status:, redacted_audio_url:, additional_properties: nil)
16
+ # @type [Transcripts::REDACTED_AUDIO_STATUS] The status of the redacted audio
17
+ @status = status
18
+ # @type [String] The URL of the redacted audio file
19
+ @redacted_audio_url = redacted_audio_url
20
+ # @type [OpenStruct] Additional properties unmapped to the current class definition
21
+ @additional_properties = additional_properties
22
+ end
23
+
24
+ # Deserialize a JSON object to an instance of RedactedAudioResponse
25
+ #
26
+ # @param json_object [JSON]
27
+ # @return [Transcripts::RedactedAudioResponse]
28
+ def self.from_json(json_object:)
29
+ struct = JSON.parse(json_object, object_class: OpenStruct)
30
+ JSON.parse(json_object)
31
+ status = struct.status
32
+ redacted_audio_url = struct.redacted_audio_url
33
+ new(status: status, redacted_audio_url: redacted_audio_url, additional_properties: struct)
34
+ end
35
+
36
+ # Serialize an instance of RedactedAudioResponse to a JSON object
37
+ #
38
+ # @return [JSON]
39
+ def to_json(*_args)
40
+ { "status": @status, "redacted_audio_url": @redacted_audio_url }.to_json
41
+ end
42
+
43
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given hash and check each fields type against the current object's property definitions.
44
+ #
45
+ # @param obj [Object]
46
+ # @return [Void]
47
+ def self.validate_raw(obj:)
48
+ obj.status.is_a?(String) != false || raise("Passed value for field obj.status is not the expected type, validation failed.")
49
+ obj.redacted_audio_url.is_a?(String) != false || raise("Passed value for field obj.redacted_audio_url is not the expected type, validation failed.")
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AssemblyAI
4
+ class Transcripts
5
+ REDACTED_AUDIO_STATUS = String
6
+ end
7
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "transcript_sentence"
4
+ require "json"
5
+
6
+ module AssemblyAI
7
+ class Transcripts
8
+ class SentencesResponse
9
+ attr_reader :id, :confidence, :audio_duration, :sentences, :additional_properties
10
+
11
+ # @param id [String]
12
+ # @param confidence [Float]
13
+ # @param audio_duration [Float]
14
+ # @param sentences [Array<Transcripts::TranscriptSentence>]
15
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
16
+ # @return [Transcripts::SentencesResponse]
17
+ def initialize(id:, confidence:, audio_duration:, sentences:, additional_properties: nil)
18
+ # @type [String]
19
+ @id = id
20
+ # @type [Float]
21
+ @confidence = confidence
22
+ # @type [Float]
23
+ @audio_duration = audio_duration
24
+ # @type [Array<Transcripts::TranscriptSentence>]
25
+ @sentences = sentences
26
+ # @type [OpenStruct] Additional properties unmapped to the current class definition
27
+ @additional_properties = additional_properties
28
+ end
29
+
30
+ # Deserialize a JSON object to an instance of SentencesResponse
31
+ #
32
+ # @param json_object [JSON]
33
+ # @return [Transcripts::SentencesResponse]
34
+ def self.from_json(json_object:)
35
+ struct = JSON.parse(json_object, object_class: OpenStruct)
36
+ parsed_json = JSON.parse(json_object)
37
+ id = struct.id
38
+ confidence = struct.confidence
39
+ audio_duration = struct.audio_duration
40
+ sentences = parsed_json["sentences"]&.map do |v|
41
+ v = v.to_json
42
+ Transcripts::TranscriptSentence.from_json(json_object: v)
43
+ end
44
+ new(id: id, confidence: confidence, audio_duration: audio_duration, sentences: sentences,
45
+ additional_properties: struct)
46
+ end
47
+
48
+ # Serialize an instance of SentencesResponse to a JSON object
49
+ #
50
+ # @return [JSON]
51
+ def to_json(*_args)
52
+ { "id": @id, "confidence": @confidence, "audio_duration": @audio_duration, "sentences": @sentences }.to_json
53
+ end
54
+
55
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given hash and check each fields type against the current object's property definitions.
56
+ #
57
+ # @param obj [Object]
58
+ # @return [Void]
59
+ def self.validate_raw(obj:)
60
+ obj.id.is_a?(String) != false || raise("Passed value for field obj.id is not the expected type, validation failed.")
61
+ obj.confidence.is_a?(Float) != false || raise("Passed value for field obj.confidence is not the expected type, validation failed.")
62
+ obj.audio_duration.is_a?(Float) != false || raise("Passed value for field obj.audio_duration is not the expected type, validation failed.")
63
+ obj.sentences.is_a?(Array) != false || raise("Passed value for field obj.sentences is not the expected type, validation failed.")
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AssemblyAI
4
+ class Transcripts
5
+ # @type [SENTIMENT]
6
+ SENTIMENT = { positive: "POSITIVE", neutral: "NEUTRAL", negative: "NEGATIVE" }.freeze
7
+ end
8
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "sentiment"
4
+ require "json"
5
+
6
+ module AssemblyAI
7
+ class Transcripts
8
+ # The result of the sentiment analysis model
9
+ class SentimentAnalysisResult
10
+ attr_reader :text, :start, :end_, :sentiment, :confidence, :speaker, :additional_properties
11
+
12
+ # @param text [String] The transcript of the sentence
13
+ # @param start [Integer] The starting time, in milliseconds, of the sentence
14
+ # @param end_ [Integer] The ending time, in milliseconds, of the sentence
15
+ # @param sentiment [SENTIMENT] The detected sentiment for the sentence, one of POSITIVE, NEUTRAL, NEGATIVE
16
+ # @param confidence [Float] The confidence score for the detected sentiment of the sentence, from 0 to 1
17
+ # @param speaker [String] The speaker of the sentence if [Speaker Diarization](https://www.assemblyai.com/docs/models/speaker-diarization) is enabled, else null
18
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
19
+ # @return [Transcripts::SentimentAnalysisResult]
20
+ def initialize(text:, start:, end_:, sentiment:, confidence:, speaker: nil, additional_properties: nil)
21
+ # @type [String] The transcript of the sentence
22
+ @text = text
23
+ # @type [Integer] The starting time, in milliseconds, of the sentence
24
+ @start = start
25
+ # @type [Integer] The ending time, in milliseconds, of the sentence
26
+ @end_ = end_
27
+ # @type [SENTIMENT] The detected sentiment for the sentence, one of POSITIVE, NEUTRAL, NEGATIVE
28
+ @sentiment = sentiment
29
+ # @type [Float] The confidence score for the detected sentiment of the sentence, from 0 to 1
30
+ @confidence = confidence
31
+ # @type [String] The speaker of the sentence if [Speaker Diarization](https://www.assemblyai.com/docs/models/speaker-diarization) is enabled, else null
32
+ @speaker = speaker
33
+ # @type [OpenStruct] Additional properties unmapped to the current class definition
34
+ @additional_properties = additional_properties
35
+ end
36
+
37
+ # Deserialize a JSON object to an instance of SentimentAnalysisResult
38
+ #
39
+ # @param json_object [JSON]
40
+ # @return [Transcripts::SentimentAnalysisResult]
41
+ def self.from_json(json_object:)
42
+ struct = JSON.parse(json_object, object_class: OpenStruct)
43
+ parsed_json = JSON.parse(json_object)
44
+ text = struct.text
45
+ start = struct.start
46
+ end_ = struct.end
47
+ sentiment = Transcripts::SENTIMENT.key(parsed_json["sentiment"]) || parsed_json["sentiment"]
48
+ confidence = struct.confidence
49
+ speaker = struct.speaker
50
+ new(text: text, start: start, end_: end_, sentiment: sentiment, confidence: confidence, speaker: speaker,
51
+ additional_properties: struct)
52
+ end
53
+
54
+ # Serialize an instance of SentimentAnalysisResult to a JSON object
55
+ #
56
+ # @return [JSON]
57
+ def to_json(*_args)
58
+ {
59
+ "text": @text,
60
+ "start": @start,
61
+ "end": @end_,
62
+ "sentiment": Transcripts::SENTIMENT[@sentiment] || @sentiment,
63
+ "confidence": @confidence,
64
+ "speaker": @speaker
65
+ }.to_json
66
+ end
67
+
68
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given hash and check each fields type against the current object's property definitions.
69
+ #
70
+ # @param obj [Object]
71
+ # @return [Void]
72
+ def self.validate_raw(obj:)
73
+ obj.text.is_a?(String) != false || raise("Passed value for field obj.text is not the expected type, validation failed.")
74
+ obj.start.is_a?(Integer) != false || raise("Passed value for field obj.start is not the expected type, validation failed.")
75
+ obj.end_.is_a?(Integer) != false || raise("Passed value for field obj.end_ is not the expected type, validation failed.")
76
+ obj.sentiment.is_a?(Transcripts::SENTIMENT) != false || raise("Passed value for field obj.sentiment is not the expected type, validation failed.")
77
+ obj.confidence.is_a?(Float) != false || raise("Passed value for field obj.confidence is not the expected type, validation failed.")
78
+ obj.speaker&.is_a?(String) != false || raise("Passed value for field obj.speaker is not the expected type, validation failed.")
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+
5
+ module AssemblyAI
6
+ class Transcripts
7
+ class SeverityScoreSummary
8
+ attr_reader :low, :medium, :high, :additional_properties
9
+
10
+ # @param low [Float]
11
+ # @param medium [Float]
12
+ # @param high [Float]
13
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
14
+ # @return [Transcripts::SeverityScoreSummary]
15
+ def initialize(low:, medium:, high:, additional_properties: nil)
16
+ # @type [Float]
17
+ @low = low
18
+ # @type [Float]
19
+ @medium = medium
20
+ # @type [Float]
21
+ @high = high
22
+ # @type [OpenStruct] Additional properties unmapped to the current class definition
23
+ @additional_properties = additional_properties
24
+ end
25
+
26
+ # Deserialize a JSON object to an instance of SeverityScoreSummary
27
+ #
28
+ # @param json_object [JSON]
29
+ # @return [Transcripts::SeverityScoreSummary]
30
+ def self.from_json(json_object:)
31
+ struct = JSON.parse(json_object, object_class: OpenStruct)
32
+ JSON.parse(json_object)
33
+ low = struct.low
34
+ medium = struct.medium
35
+ high = struct.high
36
+ new(low: low, medium: medium, high: high, additional_properties: struct)
37
+ end
38
+
39
+ # Serialize an instance of SeverityScoreSummary to a JSON object
40
+ #
41
+ # @return [JSON]
42
+ def to_json(*_args)
43
+ { "low": @low, "medium": @medium, "high": @high }.to_json
44
+ end
45
+
46
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given hash and check each fields type against the current object's property definitions.
47
+ #
48
+ # @param obj [Object]
49
+ # @return [Void]
50
+ def self.validate_raw(obj:)
51
+ obj.low.is_a?(Float) != false || raise("Passed value for field obj.low is not the expected type, validation failed.")
52
+ obj.medium.is_a?(Float) != false || raise("Passed value for field obj.medium is not the expected type, validation failed.")
53
+ obj.high.is_a?(Float) != false || raise("Passed value for field obj.high is not the expected type, validation failed.")
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AssemblyAI
4
+ class Transcripts
5
+ SPEECH_MODEL = String
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AssemblyAI
4
+ class Transcripts
5
+ # @type [SUBSTITUTION_POLICY]
6
+ SUBSTITUTION_POLICY = { entity_type: "entity_type", hash: "hash" }.freeze
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AssemblyAI
4
+ class Transcripts
5
+ # @type [SUBTITLE_FORMAT]
6
+ SUBTITLE_FORMAT = { srt: "srt", vtt: "vtt" }.freeze
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AssemblyAI
4
+ class Transcripts
5
+ # @type [SUMMARY_MODEL]
6
+ SUMMARY_MODEL = { informative: "informative", conversational: "conversational", catchy: "catchy" }.freeze
7
+ end
8
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AssemblyAI
4
+ class Transcripts
5
+ # @type [SUMMARY_TYPE]
6
+ SUMMARY_TYPE = {
7
+ bullets: "bullets",
8
+ bullets_verbose: "bullets_verbose",
9
+ gist: "gist",
10
+ headline: "headline",
11
+ paragraph: "paragraph"
12
+ }.freeze
13
+ end
14
+ end