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,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