diff --git a/examples/voice/static/main.py b/examples/voice/static/main.py
index 5f512db7..4e3840fc 100644
--- a/examples/voice/static/main.py
+++ b/examples/voice/static/main.py
@@ -1,15 +1,14 @@
 import asyncio
 import random
 
-from agents import (
-    Agent,
+from agents import Agent, function_tool
+from agents.extensions.handoff_prompt import prompt_with_handoff_instructions
+from agents.voice import (
     AudioInput,
     SingleAgentVoiceWorkflow,
     SingleAgentWorkflowCallbacks,
     VoicePipeline,
-    function_tool,
 )
-from agents.extensions.handoff_prompt import prompt_with_handoff_instructions
 
 from .util import AudioPlayer, record_audio
 
diff --git a/examples/voice/streamed/agents.py b/examples/voice/streamed/agents.py
index dcf312d7..3cb804b0 100644
--- a/examples/voice/streamed/agents.py
+++ b/examples/voice/streamed/agents.py
@@ -2,15 +2,9 @@
 from collections.abc import AsyncIterator
 from typing import Callable
 
-from agents import (
-    Agent,
-    Runner,
-    TResponseInputItem,
-    VoiceWorkflowBase,
-    VoiceWorkflowHelper,
-    function_tool,
-)
+from agents import Agent, Runner, TResponseInputItem, function_tool
 from agents.extensions.handoff_prompt import prompt_with_handoff_instructions
+from agents.voice import VoiceWorkflowBase, VoiceWorkflowHelper
 
 
 @function_tool
diff --git a/examples/voice/streamed/main.py b/examples/voice/streamed/main.py
index 36894338..aef3b36e 100644
--- a/examples/voice/streamed/main.py
+++ b/examples/voice/streamed/main.py
@@ -11,8 +11,7 @@
 from textual.widgets import Button, RichLog, Static
 from typing_extensions import override
 
-from agents import VoicePipeline
-from agents.voice.input import StreamedAudioInput
+from agents.voice import StreamedAudioInput, VoicePipeline
 
 from .agents import MyWorkflow
 
diff --git a/pyproject.toml b/pyproject.toml
index 9d0d8c55..7567013b 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -54,6 +54,7 @@ dev = [
     "sounddevice",
     "pynput",
     "textual",
+    "websockets",
 ]
 [tool.uv.workspace]
 members = ["agents"]
diff --git a/src/agents/__init__.py b/src/agents/__init__.py
index c0b47dc8..47bb2649 100644
--- a/src/agents/__init__.py
+++ b/src/agents/__init__.py
@@ -98,31 +98,6 @@
     transcription_span,
 )
 from .usage import Usage
-from .voice import (
-    AudioInput,
-    OpenAISTTModel,
-    OpenAISTTTranscriptionSession,
-    OpenAITTSModel,
-    OpenAIVoiceModelProvider,
-    SingleAgentVoiceWorkflow,
-    SingleAgentWorkflowCallbacks,
-    StreamedAudioInput,
-    StreamedAudioResult,
-    StreamedTranscriptionSession,
-    STTModel,
-    STTModelSettings,
-    TTSModel,
-    TTSModelSettings,
-    VoiceModelProvider,
-    VoicePipeline,
-    VoicePipelineConfig,
-    VoiceStreamEvent,
-    VoiceStreamEventAudio,
-    VoiceStreamEventLifecycle,
-    VoiceWorkflowBase,
-    VoiceWorkflowHelper,
-    get_sentence_based_splitter,
-)
 
 
 def set_default_openai_key(key: str, use_for_tracing: bool = True) -> None:
@@ -268,27 +243,4 @@ def enable_verbose_stdout_logging():
     "gen_trace_id",
     "gen_span_id",
     "default_tool_error_function",
-    "AudioInput",
-    "StreamedAudioInput",
-    "STTModel",
-    "STTModelSettings",
-    "TTSModel",
-    "TTSModelSettings",
-    "VoiceModelProvider",
-    "StreamedAudioResult",
-    "SingleAgentVoiceWorkflow",
-    "OpenAIVoiceModelProvider",
-    "OpenAISTTModel",
-    "OpenAITTSModel",
-    "VoiceStreamEventAudio",
-    "VoiceStreamEventLifecycle",
-    "VoiceStreamEvent",
-    "VoicePipeline",
-    "VoicePipelineConfig",
-    "get_sentence_based_splitter",
-    "VoiceWorkflowHelper",
-    "VoiceWorkflowBase",
-    "StreamedTranscriptionSession",
-    "OpenAISTTTranscriptionSession",
-    "SingleAgentWorkflowCallbacks",
 ]
diff --git a/tests/voice/fake_models.py b/tests/voice/fake_models.py
index 3febe428..109ee4cb 100644
--- a/tests/voice/fake_models.py
+++ b/tests/voice/fake_models.py
@@ -6,16 +6,19 @@
 import numpy as np
 import numpy.typing as npt
 
-from agents.voice import (
-    AudioInput,
-    StreamedAudioInput,
-    StreamedTranscriptionSession,
-    STTModel,
-    STTModelSettings,
-    TTSModel,
-    TTSModelSettings,
-    VoiceWorkflowBase,
-)
+try:
+    from agents.voice import (
+        AudioInput,
+        StreamedAudioInput,
+        StreamedTranscriptionSession,
+        STTModel,
+        STTModelSettings,
+        TTSModel,
+        TTSModelSettings,
+        VoiceWorkflowBase,
+    )
+except ImportError:
+    pass
 
 
 class FakeTTS(TTSModel):
diff --git a/tests/voice/helpers.py b/tests/voice/helpers.py
index d2f9ca2e..ae902dc1 100644
--- a/tests/voice/helpers.py
+++ b/tests/voice/helpers.py
@@ -1,4 +1,7 @@
-from agents.voice import StreamedAudioResult
+try:
+    from agents.voice import StreamedAudioResult
+except ImportError:
+    pass
 
 
 async def extract_events(result: StreamedAudioResult) -> tuple[list[str], list[bytes]]:
diff --git a/tests/voice/test_input.py b/tests/voice/test_input.py
index 7d4197b5..d41d870d 100644
--- a/tests/voice/test_input.py
+++ b/tests/voice/test_input.py
@@ -4,9 +4,12 @@
 import numpy as np
 import pytest
 
-from agents import UserError
-from agents.voice import AudioInput, StreamedAudioInput
-from agents.voice.input import DEFAULT_SAMPLE_RATE, _buffer_to_audio_file
+try:
+    from agents import UserError
+    from agents.voice import AudioInput, StreamedAudioInput
+    from agents.voice.input import DEFAULT_SAMPLE_RATE, _buffer_to_audio_file
+except ImportError:
+    pass
 
 
 def test_buffer_to_audio_file_int16():
diff --git a/tests/voice/test_openai_stt.py b/tests/voice/test_openai_stt.py
index bb8d3cf8..75559232 100644
--- a/tests/voice/test_openai_stt.py
+++ b/tests/voice/test_openai_stt.py
@@ -8,11 +8,15 @@
 import numpy as np
 import pytest
 
-from agents.voice import OpenAISTTTranscriptionSession, StreamedAudioInput, STTModelSettings
-from agents.voice.exceptions import STTWebsocketConnectionError
-from agents.voice.models.openai_stt import EVENT_INACTIVITY_TIMEOUT
+try:
+    from agents.voice import OpenAISTTTranscriptionSession, StreamedAudioInput, STTModelSettings
+    from agents.voice.exceptions import STTWebsocketConnectionError
+    from agents.voice.models.openai_stt import EVENT_INACTIVITY_TIMEOUT
+
+    from .fake_models import FakeStreamedAudioInput
+except ImportError:
+    pass
 
-from .fake_models import FakeStreamedAudioInput
 
 # ===== Helpers =====
 
diff --git a/tests/voice/test_openai_tts.py b/tests/voice/test_openai_tts.py
index 0fbd6ba8..b18f9e8c 100644
--- a/tests/voice/test_openai_tts.py
+++ b/tests/voice/test_openai_tts.py
@@ -5,7 +5,10 @@
 
 import pytest
 
-from agents.voice import OpenAITTSModel, TTSModelSettings
+try:
+    from agents.voice import OpenAITTSModel, TTSModelSettings
+except ImportError:
+    pass
 
 
 class _FakeStreamResponse:
diff --git a/tests/voice/test_pipeline.py b/tests/voice/test_pipeline.py
index f9880267..51904468 100644
--- a/tests/voice/test_pipeline.py
+++ b/tests/voice/test_pipeline.py
@@ -4,10 +4,13 @@
 import numpy.typing as npt
 import pytest
 
-from agents.voice import AudioInput, TTSModelSettings, VoicePipeline, VoicePipelineConfig
+try:
+    from agents.voice import AudioInput, TTSModelSettings, VoicePipeline, VoicePipelineConfig
 
-from .fake_models import FakeStreamedAudioInput, FakeSTT, FakeTTS, FakeWorkflow
-from .helpers import extract_events
+    from .fake_models import FakeStreamedAudioInput, FakeSTT, FakeTTS, FakeWorkflow
+    from .helpers import extract_events
+except ImportError:
+    pass
 
 
 @pytest.mark.asyncio
diff --git a/tests/voice/test_workflow.py b/tests/voice/test_workflow.py
index 465c1247..3f18c049 100644
--- a/tests/voice/test_workflow.py
+++ b/tests/voice/test_workflow.py
@@ -17,10 +17,14 @@
     TResponseOutputItem,
     TResponseStreamEvent,
 )
-from agents.voice import SingleAgentVoiceWorkflow
 
-from ..fake_model import get_response_obj
-from ..test_responses import get_function_tool, get_function_tool_call, get_text_message
+try:
+    from agents.voice import SingleAgentVoiceWorkflow
+
+    from ..fake_model import get_response_obj
+    from ..test_responses import get_function_tool, get_function_tool_call, get_text_message
+except ImportError:
+    pass
 
 
 class FakeStreamingModel(Model):
diff --git a/uv.lock b/uv.lock
index 0f0d22a6..15e091a1 100644
--- a/uv.lock
+++ b/uv.lock
@@ -1085,6 +1085,7 @@ dev = [
     { name = "sounddevice" },
     { name = "textual" },
     { name = "types-pynput" },
+    { name = "websockets" },
 ]
 
 [package.metadata]
@@ -1118,6 +1119,7 @@ dev = [
     { name = "sounddevice" },
     { name = "textual" },
     { name = "types-pynput" },
+    { name = "websockets" },
 ]
 
 [[package]]