From 40d23d78d4458b5c0f40a9be00b9f61005c732e3 Mon Sep 17 00:00:00 2001 From: Xiting Zhang Date: Thu, 29 Jan 2026 10:39:50 -0800 Subject: [PATCH 1/3] [VoiceLive] Skip pyaudio dependency on Ubuntu/macOS --- sdk/ai/azure-ai-voicelive/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/ai/azure-ai-voicelive/pyproject.toml b/sdk/ai/azure-ai-voicelive/pyproject.toml index a9e8a901bc41..b251c5ac61a0 100644 --- a/sdk/ai/azure-ai-voicelive/pyproject.toml +++ b/sdk/ai/azure-ai-voicelive/pyproject.toml @@ -51,7 +51,7 @@ test = [ "python-dotenv", "azure-identity", "soundfile", - "pyaudio; platform_python_implementation == 'CPython' and python_version < '3.13'", + "pyaudio; platform_python_implementation == 'CPython' and python_version < '3.13' and sys_platform == 'win32'", ] [project.urls] From 1e2da79a24a3fdeb7f25ef62e16f606f162acb8d Mon Sep 17 00:00:00 2001 From: Xiting Zhang Date: Thu, 29 Jan 2026 11:15:34 -0800 Subject: [PATCH 2/3] update --- sdk/ai/azure-ai-voicelive/dev_requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/ai/azure-ai-voicelive/dev_requirements.txt b/sdk/ai/azure-ai-voicelive/dev_requirements.txt index babde7a9e9a1..ffa5c1ebca5d 100644 --- a/sdk/ai/azure-ai-voicelive/dev_requirements.txt +++ b/sdk/ai/azure-ai-voicelive/dev_requirements.txt @@ -4,7 +4,7 @@ aiohttp python-dotenv isodate websockets -pyaudio; platform_python_implementation == 'CPython' and python_version < '3.13' +pyaudio; platform_python_implementation == 'CPython' and python_version < '3.13' and sys_platform == 'win32' azure.identity pytest-rerunfailures>=13.0 pytest-asyncio From b04b8dfc388d253a157e683eaad61674f0549f2d Mon Sep 17 00:00:00 2001 From: Xiting Zhang Date: Mon, 2 Feb 2026 16:31:23 -0800 Subject: [PATCH 3/3] update docs --- sdk/ai/azure-ai-voicelive/README.md | 3 +++ .../samples/BASIC_VOICE_ASSISTANT.md | 26 ++++++++++++++++--- sdk/ai/azure-ai-voicelive/samples/README.md | 23 ++++++++++++++-- .../samples/async_function_calling_sample.py | 12 +++++++-- .../samples/async_mcp_sample.py | 12 +++++++-- .../samples/supervisor_agent_sample.py | 12 +++++++-- 6 files changed, 77 insertions(+), 11 deletions(-) diff --git a/sdk/ai/azure-ai-voicelive/README.md b/sdk/ai/azure-ai-voicelive/README.md index e33bb7535f36..cf1b1a2d8bb4 100644 --- a/sdk/ai/azure-ai-voicelive/README.md +++ b/sdk/ai/azure-ai-voicelive/README.md @@ -33,6 +33,9 @@ python -m pip install azure-ai-voicelive python -m pip install "azure-ai-voicelive[aiohttp]" # For voice samples (includes audio processing) +# First install PyAudio dependencies for your platform: +# Linux: sudo apt-get install -y portaudio19-dev libasound2-dev +# macOS: brew install portaudio python -m pip install azure-ai-voicelive[aiohttp] pyaudio python-dotenv ``` diff --git a/sdk/ai/azure-ai-voicelive/samples/BASIC_VOICE_ASSISTANT.md b/sdk/ai/azure-ai-voicelive/samples/BASIC_VOICE_ASSISTANT.md index 768f915a250d..ca7302cbd1a6 100644 --- a/sdk/ai/azure-ai-voicelive/samples/BASIC_VOICE_ASSISTANT.md +++ b/sdk/ai/azure-ai-voicelive/samples/BASIC_VOICE_ASSISTANT.md @@ -19,9 +19,29 @@ This sample demonstrates a complete voice assistant implementation using the Azu ## Installation -```bash -pip install azure-ai-voicelive pyaudio python-dotenv -``` +1. **Install the SDK**: + ```bash + pip install azure-ai-voicelive python-dotenv + ``` + +2. **Install PyAudio** (required for audio capture/playback): + + PyAudio requires PortAudio to be installed on your system: + + - **Linux (Ubuntu/Debian)**: + ```bash + sudo apt-get install -y portaudio19-dev libasound2-dev + pip install pyaudio + ``` + - **macOS**: + ```bash + brew install portaudio + pip install pyaudio + ``` + - **Windows**: + ```bash + pip install pyaudio + ``` ## Configuration diff --git a/sdk/ai/azure-ai-voicelive/samples/README.md b/sdk/ai/azure-ai-voicelive/samples/README.md index 41529c87416f..bb113070478d 100644 --- a/sdk/ai/azure-ai-voicelive/samples/README.md +++ b/sdk/ai/azure-ai-voicelive/samples/README.md @@ -15,10 +15,29 @@ This directory contains sample applications demonstrating various capabilities o 1. **Install dependencies**: ```bash - pip install azure-ai-voicelive[aiohttp] pyaudio python-dotenv + pip install azure-ai-voicelive[aiohttp] python-dotenv ``` -2. **Configure environment variables**: +2. **Install PyAudio** (required for audio samples): + + PyAudio requires PortAudio to be installed on your system: + + - **Linux (Ubuntu/Debian)**: + ```bash + sudo apt-get install -y portaudio19-dev libasound2-dev + pip install pyaudio + ``` + - **macOS**: + ```bash + brew install portaudio + pip install pyaudio + ``` + - **Windows**: + ```bash + pip install pyaudio + ``` + +3. **Configure environment variables**: Create a `.env` file at the root of the azure-ai-voicelive directory or in the samples directory with the following variables: diff --git a/sdk/ai/azure-ai-voicelive/samples/async_function_calling_sample.py b/sdk/ai/azure-ai-voicelive/samples/async_function_calling_sample.py index 4b804ef4e447..2d80f8bcb16b 100644 --- a/sdk/ai/azure-ai-voicelive/samples/async_function_calling_sample.py +++ b/sdk/ai/azure-ai-voicelive/samples/async_function_calling_sample.py @@ -45,7 +45,10 @@ try: import pyaudio except ImportError: - print("This sample requires pyaudio. Install with: pip install pyaudio") + print("This sample requires pyaudio. Install with:") + print(" Linux: sudo apt-get install -y portaudio19-dev libasound2-dev && pip install pyaudio") + print(" macOS: brew install portaudio && pip install pyaudio") + print(" Windows: pip install pyaudio") sys.exit(1) # Environment variable loading @@ -770,7 +773,12 @@ def signal_handler(sig, frame): print("❌ Missing required dependencies:") for dep in missing_deps: print(f" - {dep}") - print("\nInstall with: pip install azure-ai-voicelive pyaudio python-dotenv") + print("\nInstall with:") + print(" pip install azure-ai-voicelive python-dotenv") + print(" For PyAudio:") + print(" Linux: sudo apt-get install -y portaudio19-dev libasound2-dev && pip install pyaudio") + print(" macOS: brew install portaudio && pip install pyaudio") + print(" Windows: pip install pyaudio") sys.exit(1) # Check audio system diff --git a/sdk/ai/azure-ai-voicelive/samples/async_mcp_sample.py b/sdk/ai/azure-ai-voicelive/samples/async_mcp_sample.py index a9f120caf6d6..dba44749167e 100644 --- a/sdk/ai/azure-ai-voicelive/samples/async_mcp_sample.py +++ b/sdk/ai/azure-ai-voicelive/samples/async_mcp_sample.py @@ -42,7 +42,10 @@ try: import pyaudio except ImportError: - print("This sample requires pyaudio. Install with: pip install pyaudio") + print("This sample requires pyaudio. Install with:") + print(" Linux: sudo apt-get install -y portaudio19-dev libasound2-dev && pip install pyaudio") + print(" macOS: brew install portaudio && pip install pyaudio") + print(" Windows: pip install pyaudio") sys.exit(1) # Environment variable loading @@ -707,7 +710,12 @@ def signal_handler(sig, frame): print("❌ Missing required dependencies:") for dep in missing_deps: print(f" - {dep}") - print("\nInstall with: pip install azure-ai-voicelive pyaudio python-dotenv") + print("\nInstall with:") + print(" pip install azure-ai-voicelive python-dotenv") + print(" For PyAudio:") + print(" Linux: sudo apt-get install -y portaudio19-dev libasound2-dev && pip install pyaudio") + print(" macOS: brew install portaudio && pip install pyaudio") + print(" Windows: pip install pyaudio") sys.exit(1) # Check audio system diff --git a/sdk/ai/azure-ai-voicelive/samples/supervisor_agent_sample.py b/sdk/ai/azure-ai-voicelive/samples/supervisor_agent_sample.py index 9514cf835e63..2b43bcd1a85c 100644 --- a/sdk/ai/azure-ai-voicelive/samples/supervisor_agent_sample.py +++ b/sdk/ai/azure-ai-voicelive/samples/supervisor_agent_sample.py @@ -30,7 +30,10 @@ try: import pyaudio except ImportError: - print("This sample requires pyaudio. Install with: pip install pyaudio") + print("This sample requires pyaudio. Install with:") + print(" Linux: sudo apt-get install -y portaudio19-dev libasound2-dev && pip install pyaudio") + print(" macOS: brew install portaudio && pip install pyaudio") + print(" Windows: pip install pyaudio") sys.exit(1) # Environment variable loading @@ -599,7 +602,12 @@ def signal_handler(sig, frame): print("❌ Missing required dependencies:") for dep in missing_deps: print(f" - {dep}") - print("\nInstall with: pip install azure-ai-voicelive pyaudio python-dotenv") + print("\nInstall with:") + print(" pip install azure-ai-voicelive python-dotenv") + print(" For PyAudio:") + print(" Linux: sudo apt-get install -y portaudio19-dev libasound2-dev && pip install pyaudio") + print(" macOS: brew install portaudio && pip install pyaudio") + print(" Windows: pip install pyaudio") sys.exit(1) # Check audio system