Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions sdk/batch/speechmatics/batch/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
from ._models import OperatingPoint
from ._models import OutputConfig
from ._models import SentimentAnalysisConfig
from ._models import SpeakerIdentifier
from ._models import SummarizationConfig
from ._models import TopicDetectionConfig
from ._models import Transcript
Expand Down Expand Up @@ -61,6 +62,7 @@
"OperatingPoint",
"OutputConfig",
"SentimentAnalysisConfig",
"SpeakerIdentifier",
"StaticKeyAuth",
"SummarizationConfig",
"TimeoutError",
Expand Down
22 changes: 22 additions & 0 deletions sdk/batch/speechmatics/batch/_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -688,6 +688,22 @@ def from_dict(cls, data: dict[str, Any]) -> RecognitionResult:
)


@dataclass
class SpeakerIdentifier:
"""A unique speaker detected in the transcript."""

label: str
speaker_identifiers: list[str]

@classmethod
def from_dict(cls, data: dict[str, Any]) -> SpeakerIdentifier:
"""Create SpeakerIdentifier from dictionary."""
return cls(
label=data["label"],
Comment thread
J-Jaywalker marked this conversation as resolved.
speaker_identifiers=data["speaker_identifiers"],
)


@dataclass
class Transcript:
"""
Expand All @@ -701,6 +717,7 @@ class Transcript:
job: Job information and metadata.
metadata: Recognition process metadata.
results: List of recognition results with timing and alternatives.
speakers: List of unique speakers detected in the transcript, each with a label and byte identifiers.
translations: Optional translations by language code.
summary: Optional transcript summarization.
sentiment_analysis: Optional sentiment analysis results.
Expand All @@ -714,6 +731,7 @@ class Transcript:
job: JobInfo
metadata: RecognitionMetadata
results: list[RecognitionResult]
speakers: Optional[list[SpeakerIdentifier]] = None
translations: Optional[dict[str, Any]] = None
summary: Optional[dict[str, Any]] = None
sentiment_analysis: Optional[dict[str, Any]] = None
Expand Down Expand Up @@ -839,11 +857,15 @@ def from_dict(cls, data: dict[str, Any]) -> Transcript:
results_data = data.get("results", [])
results = [RecognitionResult.from_dict(result) for result in results_data]

speakers_data = data.get("speakers")
speakers = [SpeakerIdentifier.from_dict(s) for s in speakers_data] if speakers_data else None

return cls(
format=data["format"],
job=job_info,
metadata=metadata,
results=results,
speakers=speakers,
translations=data.get("translations"),
summary=data.get("summary"),
sentiment_analysis=data.get("sentiment_analysis"),
Expand Down
Loading