Skip to content
Open
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 @@ -11,6 +11,7 @@
from ._exceptions import JobError
from ._exceptions import TimeoutError
from ._exceptions import TransportError
from ._models import AudioFilteringConfig
from ._models import AutoChaptersConfig
from ._models import ConnectionConfig
from ._models import FetchData
Expand All @@ -34,6 +35,7 @@
from ._models import TranslationConfig

__all__ = [
"AudioFilteringConfig",
"AsyncClient",
"AuthBase",
"AuthenticationError",
Expand Down
18 changes: 18 additions & 0 deletions sdk/batch/speechmatics/batch/_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,8 @@ class TranscriptionConfig:
max_delay_mode: Mode for handling max delay.
transcript_filtering_config: Configuration for filtering transcription.
defaults to None.
audio_filtering_config: Configuration for limiting the transcription of quiet audio.
Defaults to None.
"""

language: str = "en"
Expand All @@ -115,11 +117,14 @@ class TranscriptionConfig:
max_delay: Optional[float] = None
max_delay_mode: Optional[str] = None
transcript_filtering_config: Optional[TranscriptFilteringConfig] = None
audio_filtering_config: Optional[AudioFilteringConfig] = None

def to_dict(self) -> dict[str, Any]:
result: dict[str, Any] = {k: v for k, v in asdict(self).items() if v is not None}
if self.transcript_filtering_config is not None:
result["transcript_filtering_config"] = self.transcript_filtering_config.to_dict()
if self.audio_filtering_config is not None:
result["audio_filtering_config"] = self.audio_filtering_config.to_dict()
return result


Expand Down Expand Up @@ -284,6 +289,17 @@ def to_dict(self) -> dict[str, Any]:
return {k: v for k, v in asdict(self).items() if v is not None}


@dataclass
class AudioFilteringConfig:
"""Configuration for limiting the transcription of quiet audio. 'volume_threshold' supports a range of 0 - 100 where 0 does not filter any audio and 100 removes all audio."""

volume_threshold: float = 0

def to_dict(self) -> dict[str, Any]:
"""Convert to dictionary."""
return asdict(self)


@dataclass
class JobConfig:
"""
Expand Down Expand Up @@ -368,6 +384,8 @@ def from_dict(cls, data: dict[str, Any]) -> JobConfig:
tc_data["transcript_filtering_config"] = TranscriptFilteringConfig(
**tc_data["transcript_filtering_config"]
)
if "audio_filtering_config" in tc_data and isinstance(tc_data["audio_filtering_config"], dict):
tc_data["audio_filtering_config"] = AudioFilteringConfig(**tc_data["audio_filtering_config"])
transcription_config = TranscriptionConfig(**tc_data)

alignment_config = None
Expand Down