diff --git a/pyproject.toml b/pyproject.toml index 55760e7b2..362e5a9a1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,7 +37,6 @@ dependencies = [ "einx[torch]==0.2.2", "zstandard>=0.22.0", "pydub", - "pyaudio", "modelscope==1.17.1", "opencc-python-reimplemented==0.1.7", "silero-vad", @@ -70,6 +69,9 @@ cu129 = [ "torch==2.8.0", "torchaudio", ] +# Optional: native audio playback for the streaming api_client (PyAudio needs +# system PortAudio headers; keeping it out of core unblocks slim / headless installs). +client = ["pyaudio"] [tool.uv] override-dependencies = [ diff --git a/tools/api_client.py b/tools/api_client.py index 31898aed0..c6e8fb998 100644 --- a/tools/api_client.py +++ b/tools/api_client.py @@ -4,7 +4,6 @@ import wave import ormsgpack -import pyaudio import requests from pydub import AudioSegment from pydub.playback import play @@ -198,6 +197,14 @@ def parse_args(): if response.status_code == 200: if args.streaming: + try: + import pyaudio + except ImportError: + raise ImportError( + "Streaming playback requires PyAudio. Install it with: " + "pip install -e .[client]" + ) + p = pyaudio.PyAudio() audio_format = pyaudio.paInt16 # Assuming 16-bit PCM format stream = p.open(