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/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 diff --git a/sdk/ai/azure-ai-voicelive/pyproject.toml b/sdk/ai/azure-ai-voicelive/pyproject.toml index 5fdee2a8b6d1..3e2540ab6842 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] 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