Azure Voice Live for TypeScript
Build real-time, bidirectional voice assistants with Azure in TypeScript.
The documentation recommends Entra credentials, managed identity in production, and avoiding hard-coded keys, while describing WebSocket, microphone, and function-calling data flows. However, API-key handling, microphone consent, voice-data privacy/retention, third-party tool side effects, user confirmation, least-privilege permissions, and rollback are not sufficiently specified, so points are deducted.
The main document and two references cover installation, sessions, events, audio, tool calls, and error handling, making the happy path plausible. However, there are no skill-specific tests or reproducible executions, and version/model/API compatibility, browser-audio edge cases, and concurrency assumptions remain uncertain; the static ceiling also applies.
The name, audience, Node.js/browser scenarios, and trigger phrases are reasonably clear, covering real-time voice, transcription, and tool calling. Non-fit boundaries, Chinese-language support, regional availability, and mainland-China network reachability are not stated, while browser use requires extra bundling and permissions, so points are deducted.
The skill uses a progressive main document plus audio-streaming and function-calling references, with installation, environment variables, examples, error handling, version, MIT licensing, and official reference links. It lacks a changelog, explicit maintenance owner/update path, systematic FAQ, and clear beta-stability limitations, so points are deducted.
It supplies practical patterns for client setup, event subscriptions, audio conversion/playback, function calling, and cleanup, which can reduce manual documentation work. Yet examples depend on omitted application implementations, service/model/region configuration, and unverified SDK behavior; static review cannot establish direct runnability, so adaptation work may remain substantial.
Package, version, type names, and official resource links provide some auditability. The selected skill directory contains no committed tests, CI coverage, or third-party execution evidence, and repository-level test material does not demonstrate this skill’s key paths, so only limited credit is justified.
- This is a static review; installation, compilation, browser audio, and Azure connectivity were not executed or independently verified.
- The function-calling examples can cause external effects such as weather lookup, product search, or appointment booking; applications should add validation, authorization, timeouts, auditing, and explicit confirmation for high-impact actions.
- The documentation identifies a beta package version; models, event names, voice types, and regional availability should be rechecked against the target SDK and service version.
- Chinese-language quality, data-handling policy, and mainland-China network reachability are not documented and should not be assumed for production use.
What it does & when to use it
This skill targets JavaScript and TypeScript development in Node.js and modern browsers with the @azure/ai-voicelive package. It covers WebSocket sessions, audio streaming, text and audio events, voice activity detection, and function calling. It also explains Microsoft Entra credentials and API-key authentication, browser microphone access, error handling, and logging. It fits Azure SDK projects that need conversational voice experiences, although the source does not provide a complete sample application or pricing information.
Guides an agent to install @azure/ai-voicelive and authentication dependencies, configure a Voice Live endpoint and credentials, create VoiceLiveClient and VoiceLiveSession instances, establish bidirectional WebSocket communication, send audio, subscribe to connection, transcription, text, audio, and function-call events, and generate response-handling code. It also covers voice selection, models, audio formats, VAD, typed errors, logging, and browser microphone permissions.
- A TypeScript Node.js developer needs a real-time voice assistant that sends microphone audio and receives streamed speech responses.
- A browser application developer needs voice chat through the microphone using InteractiveBrowserCredential with Azure.
- A customer-service application developer needs text-and-audio modalities, voice activity detection, and system instructions.
- A developer needs a voice assistant to call business functions such as weather lookup through tool definitions and function-call events.
Pros & cons
- Supports Node.js and modern browsers.
- Covers the SDK workflow from installation and authentication through session configuration and event handling.
- Includes patterns for streaming text, streaming audio, transcription, VAD, function calling, and error handling.
- Documents both Microsoft Entra authentication and API-key authentication.
- Depends on an SDK version identified as the prerelease `1.0.0-beta.3`.
- The source does not include a complete browser audio-processing implementation; it only states that a bundler is required and leaves part of the implementation open.
- Requires an Azure Voice Live endpoint and appropriate credentials; the source does not document pricing, quotas, or permission setup.
- There is no evidence in the supplied material of a dedicated test scenario or test coverage for this specific skill.
How to install
Install the collection with npx skills add microsoft/skills, then select the needed skill in the wizard. The collection is installed in the selected agent directory, such as .github/skills/ for GitHub Copilot. Install project dependencies with npm install @azure/ai-voicelive @azure/identity; TypeScript users should also run npm install @types/node.
How to use
Ask a coding agent something like: “Build a real-time bidirectional voice assistant in Node.js with VoiceLiveClient, DefaultAzureCredential, PCM16 audio, and streaming event handlers.” The application must set AZURE_VOICELIVE_ENDPOINT and may set AZURE_VOICELIVE_API_KEY, AZURE_LOG_LEVEL, or AZURE_TOKEN_CREDENTIALS. Typical code creates a client and session, calls updateSession(), handles events through subscribe(), and sends audio with sendAudio().
Compared to similar skills
The documented choices include Microsoft Entra Token Credential versus API-key authentication, basic server_vad versus Azure Semantic VAD variants, and Node.js versus modern browser deployment.