Move OpenAIRealtimeSTTService's noise_reduction into its Settings object, as it might be useful to update it at runtime, and fix outdated OpenAIRealtimeSTTService docstring example

This commit is contained in:
Paul Kompfner
2026-03-11 10:17:24 -04:00
parent df82df8e39
commit 42262d10bb

View File

@@ -187,9 +187,15 @@ class OpenAIRealtimeSTTSettings(STTSettings):
Parameters: Parameters:
prompt: Optional prompt text to guide transcription style. prompt: Optional prompt text to guide transcription style.
noise_reduction: Noise reduction mode. ``"near_field"`` for close
microphones, ``"far_field"`` for distant microphones, or ``None``
to disable.
""" """
prompt: str | None | _NotGiven = field(default_factory=lambda: NOT_GIVEN) prompt: str | None | _NotGiven = field(default_factory=lambda: NOT_GIVEN)
noise_reduction: Literal["near_field", "far_field"] | None | _NotGiven = field(
default_factory=lambda: NOT_GIVEN
)
class OpenAIRealtimeSTTService(WebsocketSTTService): class OpenAIRealtimeSTTService(WebsocketSTTService):
@@ -220,8 +226,10 @@ class OpenAIRealtimeSTTService(WebsocketSTTService):
stt = OpenAIRealtimeSTTService( stt = OpenAIRealtimeSTTService(
api_key="sk-...", api_key="sk-...",
model="gpt-4o-transcribe", settings=OpenAIRealtimeSTTService.Settings(
noise_reduction="near_field", model="gpt-4o-transcribe",
noise_reduction="near_field",
),
) )
""" """
@@ -274,6 +282,9 @@ class OpenAIRealtimeSTTService(WebsocketSTTService):
noise_reduction: Noise reduction mode. ``"near_field"`` for noise_reduction: Noise reduction mode. ``"near_field"`` for
close microphones, ``"far_field"`` for distant close microphones, ``"far_field"`` for distant
microphones, or ``None`` to disable. microphones, or ``None`` to disable.
.. deprecated:: 0.0.106
Use ``settings=OpenAIRealtimeSTTSettings(noise_reduction=...)`` instead.
should_interrupt: Whether to interrupt bot output when should_interrupt: Whether to interrupt bot output when
speech is detected by server-side VAD. Only applies when speech is detected by server-side VAD. Only applies when
turn detection is enabled. Defaults to True. turn detection is enabled. Defaults to True.
@@ -295,6 +306,7 @@ class OpenAIRealtimeSTTService(WebsocketSTTService):
model="gpt-4o-transcribe", model="gpt-4o-transcribe",
language=Language.EN, language=Language.EN,
prompt=None, prompt=None,
noise_reduction=None,
) )
# --- 2. Deprecated direct-arg overrides --- # --- 2. Deprecated direct-arg overrides ---
@@ -307,6 +319,9 @@ class OpenAIRealtimeSTTService(WebsocketSTTService):
if prompt is not None: if prompt is not None:
_warn_deprecated_param("prompt", OpenAIRealtimeSTTSettings, "prompt") _warn_deprecated_param("prompt", OpenAIRealtimeSTTSettings, "prompt")
default_settings.prompt = prompt default_settings.prompt = prompt
if noise_reduction is not None:
_warn_deprecated_param("noise_reduction", OpenAIRealtimeSTTSettings, "noise_reduction")
default_settings.noise_reduction = noise_reduction
# --- 3. (no params object for this service) --- # --- 3. (no params object for this service) ---
@@ -324,7 +339,6 @@ class OpenAIRealtimeSTTService(WebsocketSTTService):
self._base_url = base_url self._base_url = base_url
self._turn_detection = turn_detection self._turn_detection = turn_detection
self._noise_reduction = noise_reduction
self._should_interrupt = should_interrupt self._should_interrupt = should_interrupt
self._receive_task = None self._receive_task = None
@@ -544,9 +558,9 @@ class OpenAIRealtimeSTTService(WebsocketSTTService):
input_audio["turn_detection"] = self._turn_detection input_audio["turn_detection"] = self._turn_detection
# Noise reduction # Noise reduction
if self._noise_reduction: if self._settings.noise_reduction:
input_audio["noise_reduction"] = { input_audio["noise_reduction"] = {
"type": self._noise_reduction, "type": self._settings.noise_reduction,
} }
await self._ws_send( await self._ws_send(