Skip to content

Commit e8cd7d0

Browse files
google-genai-botcopybara-github
authored andcommitted
feat: Add mode enum (VERBATIM, SMART) to AudioTranscriptionConfig and TranscriptionConfig.
PiperOrigin-RevId: 964981788
1 parent 656da78 commit e8cd7d0

6 files changed

Lines changed: 90 additions & 4 deletions

File tree

google/genai/_gaos/resources/interactions/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@
9797
from ...types.interactions.toolchoiceconfig import ToolChoiceConfig
9898
from ...types.interactions.toolchoicetype import ToolChoiceType
9999
from ...types.interactions.transcriptionconfig import TranscriptionConfig
100+
from ...types.interactions.transcriptionmode import TranscriptionMode
100101
from ...types.interactions.urlcitation import URLCitation
101102
from ...types.interactions.urlcontextcallarguments import URLContextCallArguments
102103
from ...types.interactions.urlcontextcallstep import URLContextCallStep
@@ -201,6 +202,7 @@
201202
"ToolChoiceConfig",
202203
"ToolChoiceType",
203204
"TranscriptionConfig",
205+
"TranscriptionMode",
204206
"URLCitation",
205207
"URLContextCallArguments",
206208
"URLContextCallStep",

google/genai/_gaos/types/interactions/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,7 @@
366366
from .toolchoiceconfig import ToolChoiceConfig, ToolChoiceConfigParam
367367
from .toolchoicetype import ToolChoiceType
368368
from .transcriptionconfig import TranscriptionConfig, TranscriptionConfigParam
369+
from .transcriptionmode import TranscriptionMode
369370
from .urlcitation import URLCitation, URLCitationParam
370371
from .urlcontext import URLContext, URLContextParam
371372
from .urlcontextcallarguments import (
@@ -732,6 +733,7 @@
732733
"ToolParam",
733734
"TranscriptionConfig",
734735
"TranscriptionConfigParam",
736+
"TranscriptionMode",
735737
"Transform",
736738
"TransformParam",
737739
"URLCitation",
@@ -1117,6 +1119,7 @@
11171119
"ToolChoiceType": ".toolchoicetype",
11181120
"TranscriptionConfig": ".transcriptionconfig",
11191121
"TranscriptionConfigParam": ".transcriptionconfig",
1122+
"TranscriptionMode": ".transcriptionmode",
11201123
"URLCitation": ".urlcitation",
11211124
"URLCitationParam": ".urlcitation",
11221125
"URLContext": ".urlcontext",

google/genai/_gaos/types/interactions/interaction.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
from .webhookconfig import WebhookConfig, WebhookConfigParam
4646
from functools import partial
4747
import pydantic
48-
from pydantic import ConfigDict, model_serializer, model_validator
48+
from pydantic import ConfigDict, model_serializer
4949
from pydantic.functional_validators import BeforeValidator
5050
from typing import Any, Dict, List, Literal, Optional, Union
5151
from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
@@ -387,7 +387,7 @@ def _maybe_coerce_outputs(cls, data: Any) -> Any:
387387
coerced["steps"] = [{"type": "model_output", "content": outputs}]
388388
return coerced
389389

390-
@model_validator(mode="before")
390+
@pydantic.model_validator(mode="before")
391391
@classmethod
392392
def _coerce_outputs_to_steps(cls, data: Any) -> Any:
393393
return cls._maybe_coerce_outputs(data)
@@ -396,9 +396,11 @@ def _coerce_outputs_to_steps(cls, data: Any) -> Any:
396396
def model_construct(cls, _fields_set=None, **values):
397397
# Coerce legacy lyria ``outputs`` -> ``steps`` here as well: validators
398398
# do not run on model_construct (used by deferred SSE parsing).
399-
return super().model_construct(_fields_set, **cls._maybe_coerce_outputs(values))
399+
return pydantic.BaseModel.model_construct(
400+
_fields_set, **cls._maybe_coerce_outputs(values)
401+
)
400402

401-
@model_validator(mode="after")
403+
@pydantic.model_validator(mode="after")
402404
def _populate_output_helpers(self):
403405
steps = self.steps if isinstance(self.steps, list) else []
404406

google/genai/_gaos/types/interactions/transcriptionconfig.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
from __future__ import annotations
2020
from .. import BaseModel, UNSET_SENTINEL
21+
from .transcriptionmode import TranscriptionMode
2122
import pydantic
2223
from pydantic import model_serializer
2324
from typing import List, Optional
@@ -39,6 +40,11 @@ class TranscriptionConfigParam(TypedDict):
3940
r"""Optional. BCP-47 language codes providing hints about the languages present in the
4041
audio. If omitted or empty, defaults to automatic language detection.
4142
"""
43+
mode: NotRequired[TranscriptionMode]
44+
r"""Configures transcription mode. Supported values: `VERBATIM`, `SMART`. If
45+
unspecified, defaults to `VERBATIM` transcription. Mutually exclusive with
46+
`timestamp_granularities` and `diarization_mode`.
47+
"""
4248
timestamp_granularities: NotRequired[List[str]]
4349
r"""Optional. The granularity of timestamps to include in the transcription output.
4450
Supported values: \"word\". If empty, no timestamps are generated.
@@ -69,6 +75,12 @@ class TranscriptionConfig(BaseModel):
6975
audio. If omitted or empty, defaults to automatic language detection.
7076
"""
7177

78+
mode: Optional[TranscriptionMode] = None
79+
r"""Configures transcription mode. Supported values: `VERBATIM`, `SMART`. If
80+
unspecified, defaults to `VERBATIM` transcription. Mutually exclusive with
81+
`timestamp_granularities` and `diarization_mode`.
82+
"""
83+
7284
timestamp_granularities: Optional[List[str]] = None
7385
r"""Optional. The granularity of timestamps to include in the transcription output.
7486
Supported values: \"word\". If empty, no timestamps are generated.
@@ -82,6 +94,7 @@ def serialize_model(self, handler):
8294
"custom_vocabulary",
8395
"diarization_mode",
8496
"language_codes",
97+
"mode",
8598
"timestamp_granularities",
8699
]
87100
)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# Copyright 2026 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
#
15+
# pyformat: disable
16+
17+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
18+
19+
from __future__ import annotations
20+
from .. import UnrecognizedStr
21+
from typing import Literal, Union
22+
23+
24+
TranscriptionMode = Union[
25+
Literal[
26+
"verbatim",
27+
"smart",
28+
],
29+
UnrecognizedStr,
30+
]
31+
r"""Configures transcription mode. Supported values: `VERBATIM`, `SMART`. If
32+
unspecified, defaults to `VERBATIM` transcription. Mutually exclusive with
33+
`timestamp_granularities` and `diarization_mode`.
34+
"""

google/genai/types.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1358,6 +1358,17 @@ class VoiceActivityType(_common.CaseInSensitiveEnum):
13581358
"""End of sentence signal."""
13591359

13601360

1361+
class AudioTranscriptionConfigMode(_common.CaseInSensitiveEnum):
1362+
"""Transcription mode."""
1363+
1364+
MODE_UNSPECIFIED = 'MODE_UNSPECIFIED'
1365+
"""Unspecified transcription mode."""
1366+
VERBATIM = 'VERBATIM'
1367+
"""Verbatim transcription mode."""
1368+
SMART = 'SMART'
1369+
"""Smart transcription mode."""
1370+
1371+
13611372
class StartSensitivity(_common.CaseInSensitiveEnum):
13621373
"""Start of speech sensitivity."""
13631374

@@ -6369,6 +6380,17 @@ class AudioTranscriptionConfig(_common.BaseModel):
63696380
description="""Configures speaker diarization.
63706381
""",
63716382
)
6383+
mode: Optional[AudioTranscriptionConfigMode] = Field(
6384+
default=None,
6385+
description="""Optional. Transcription mode.
6386+
6387+
When set to `SMART`, the model performs disfluency removal (eliminating
6388+
filler words, repetitions, and false starts), light grammatical cleanup,
6389+
automatic formatting (paragraphs, bullet points, numbered lists), and
6390+
minor user edits (inline self-corrections). Incompatible with
6391+
`word_timestamp` and `diarization`.
6392+
""",
6393+
)
63726394

63736395

63746396
class AudioTranscriptionConfigDict(TypedDict, total=False):
@@ -6397,6 +6419,16 @@ class AudioTranscriptionConfigDict(TypedDict, total=False):
63976419
"""Configures speaker diarization.
63986420
"""
63996421

6422+
mode: Optional[AudioTranscriptionConfigMode]
6423+
"""Optional. Transcription mode.
6424+
6425+
When set to `SMART`, the model performs disfluency removal (eliminating
6426+
filler words, repetitions, and false starts), light grammatical cleanup,
6427+
automatic formatting (paragraphs, bullet points, numbered lists), and
6428+
minor user edits (inline self-corrections). Incompatible with
6429+
`word_timestamp` and `diarization`.
6430+
"""
6431+
64006432

64016433
AudioTranscriptionConfigOrDict = Union[
64026434
AudioTranscriptionConfig, AudioTranscriptionConfigDict

0 commit comments

Comments
 (0)