voice-agents — скилл для Claude Code: что делает и как установить
Скилл для ИИ-кодинга, который ведёт агента через сборку голосового ассистента: распознавание речи, ответ модели, синтез и борьба за задержку.
npx skills add sickn33/agentic-awesome-skills --skill voice-agents -a claude-codeЧто делает voice-agents
Скилл разбирает две архитектуры голосового агента: speech-to-speech через OpenAI Realtime API и пайплайн STT → LLM → TTS, где больше контроля и проще отлаживать. Главное ограничение — задержка. Человек ждёт ответ примерно за 500 мс, поэтому мерить нужно каждый шаг.
Внутри лежит эскиз пайплайна на Deepgram, ElevenLabs и OpenAI, советы вроде запуска синтеза на ходу, пока модель ещё генерирует текст, и паттерн VAD для определения начала и конца реплики. Эскиз помечен как legacy и прямо назван не production-реализацией: сигнатуры конструктора Deepgram, стримы ElevenLabs и бета-клиент Realtime придётся сверять с теми SDK, что стоят у вас в проекте.
Отдельный блок — про креды и хранение данных. Клиентам нужны короткоживущие session-креды вместо долгих ключей, аудио и транскрипты стоит держать по минимуму, а произнесённое имя не считается аутентификацией. Это повод проверить, чем именно вы авторизуете действия голосового агента, до того как ставить скилл.
Какие задачи решает
- выбрать между speech-to-speech и пайплайном STT → LLM → TTS
- добавить VAD, чтобы агент не перебивал сам себя
- урезать задержку до первого звука в ответе
- обработать barge-in и отменить устаревшую генерацию
- перевести клиентов на короткоживущие креды и урезать хранение аудио
Примеры запросов агенту
- Собери голосового ассистента на связке Deepgram, OpenAI и ElevenLabs, ответ не длиннее двух предложений.
- Добавь VAD и обработку перебивания в наш voice agent, старые ответы должны отменяться.
- Проверь сигнатуры `elevenlabs.textToSpeech.stream` и `transcription.live` в установленных у нас версиях SDK.
Как установить voice-agents
1Через Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill voice-agents -a claude-code2Вручную: положить файлы
~/.claude/skills/voice-agents/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/voice-agents/
1Через Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill voice-agents -a codex2Вручную: положить файлы
.agents/skills/voice-agents/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill voice-agents -a cursor2Вручную: положить файлы
.cursor/skills/voice-agents/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install sickn33/agentic-awesome-skills voice-agents2Вручную: положить файлы
.github/skills/voice-agents/SKILL.md1Через Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill voice-agents -a gemini-cli2Командой платформы
gemini skills install https://github.com/sickn33/agentic-awesome-skills --path skills/voice-agentsВручную: положить файлы
.devin/skills/voice-agents/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill voice-agents -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора80
Весь набор →Похожие
Вопросы о voice-agents
Как установить voice-agents в Claude Code?
Выполните npx skills add sickn33/agentic-awesome-skills --skill voice-agents -a claude-code. После этого файл скилла лежит по пути ~/.claude/skills/voice-agents/SKILL.md.
Что делает voice-agents?
Описывает две архитектуры голосового агента и их компромиссы, даёт эскиз пайплайна на Deepgram, ElevenLabs и OpenAI, паттерн VAD и советы по снижению задержки.
Чем speech-to-speech отличается от пайплайна?
Первый вариант идёт через OpenAI Realtime API и даёт меньше задержки. Пайплайн STT → LLM → TTS даёт больше контроля и проще отлаживается, но задержку нужно укладывать вручную.
Исходный текст
SKILL.md · MIT
---
name: voice-agents
description: Voice agents represent the frontier of AI interaction - humans
speaking naturally with AI systems.
risk: safe
source: vibeship-spawner-skills (Apache 2.0)
date_added: 2026-02-27
---
# Voice Agents
Voice agents represent the frontier of AI interaction - humans speaking
naturally with AI systems. The challenge isn't just speech recognition
and synthesis, it's achieving natural conversation flow with sub-800ms
latency while handling interruptions, background noise, and emotional
nuance.
This skill covers two architectures: speech-to-speech (OpenAI Realtime API,
one low-latency architecture option) and pipeline (STT→LLM→TTS, more control,
easier to debug). Key insight: latency is the constraint. Humans expect
responses in 500ms. Every millisecond matters.
No market-adoption statistic or universal latency benchmark is established by this skill.
## Detailed Guide
Read [the detailed guide](references/detailed-guide.md) before executing this skill. It retains the complete procedure and reference material. Treat its safety, prerequisites, and validation requirements as mandatory. For focused work, load the relevant sections; for end-to-end work, read the guide completely.
## Legacy Pipeline Sketch (not a production implementation)
```
import { Deepgram } from '@deepgram/sdk';
import { ElevenLabsClient } from 'elevenlabs';
import OpenAI from 'openai';
// Initialize clients
const deepgram = new Deepgram(process.env.DEEPGRAM_API_KEY);
const elevenlabs = new ElevenLabsClient();
const openai = new OpenAI();
async function processVoiceInput(audioStream) {
// 1. Speech-to-Text (Deepgram Nova-3)
const transcription = await deepgram.transcription.live({
model: 'nova-3',
punctuate: true,
endpointing: 300, // ms of silence before end
});
transcription.on('transcript', async (data) => {
if (data.is_final && data.speech_final) {
const userText = data.channel.alternatives[0].transcript;
// Do not log raw private transcripts by default.
// 2. LLM Processing
const completion = await openai.chat.completions.create({
model: 'gpt-4o-mini',
messages: [
{ role: 'system', content: 'You are a concise voice assistant.' },
{ role: 'user', content: userText }
],
max_tokens: 150, // Keep responses short for voice
});
const agentText = completion.choices[0].message.content;
// Log only authorized redacted operational metadata.
// 3. Text-to-Speech (ElevenLabs)
const audioStream = await elevenlabs.textToSpeech.stream({
voice_id: 'voice_id_here',
text: agentText,
model_id: 'eleven_flash_v2_5', // Lowest latency
});
// Stream to user
playAudioStream(audioStream);
}
});
// Pipe audio to transcription
audioStream.pipe(transcription);
}
```
### Optimization Tips:
- Start TTS while LLM still generating (streaming)
- Pre-compute first response segment during user speech
- Use Flash/turbo models for latency
### Voice Activity Detection Pattern
Detect when user starts/stops speaking
**When to use**: All voice agents need VAD for turn-taking
# VOICE ACTIVITY DETECTION (VAD):
```
VAD Types:
1. Energy-based: Simple, fast, noise-sensitive
2. Model-based: Silero VAD, more accurate
3. Semantic VAD: Understands meaning, best for conversation
```
## When to Use
- User mentions or implies: voice agent
- User mentions or implies: speech to text
- User mentions or implies: text to speech
- User mentions or implies: whisper
- User mentions or implies: elevenlabs
- User mentions or implies: deepgram
- User mentions or implies: realtime api
- User mentions or implies: voice assistant
- User mentions or implies: voice ai
- User mentions or implies: conversational ai
- User mentions or implies: tts
- User mentions or implies: stt
- User mentions or implies: asr
## Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
## Version, privacy and implementation boundaries
These mixed-version SDK sketches are conceptual and were not executed. Deepgram constructor/transcription.live, ElevenLabs stream signatures, the beta Realtime client and the named Silero JavaScript package must be checked against the installed official SDKs before use; do not infer missing package/runtime availability. smart_format formats text and is not noise reduction; model keyword/keyterm flags vary. A model-VAD probability threshold cannot be set from raw amplitude without a calibrated mapping. Confidence scores/latency figures are not universally comparable.
Define end-of-user-turn to first audible output and measure p50/p95 on representative devices/networks/languages. STT first partial, LLM first token and TTS first audio times are not simply additive end-to-end guarantees. Do not send partial/stale hypotheses to irreversible tools: serialize turns, deduplicate final transcripts, buffer complete TTS-safe segments, maintain history, and cancel/discard obsolete generation/audio. On barge-in truncate unheard assistant content in server history as well as stopping local playback; a checkpoint alone is insufficient.
Clients need appropriate ephemeral/session credentials, not long-lived API keys. Obtain authorized microphone/recording/voice/recipient scope, minimize audio/transcript retention and external-provider transfers, and avoid voice cloning/impersonation without rights. Bound sockets, retries, queues and costs; clean up listeners/streams on disconnect. Spoken names/numbers and claimed identity are not authentication. Validate tenant/recipient/action and obtain transaction-specific confirmation where needed. Text cleanup must preserve decimal numbers, currency, URLs and code semantics; SSML requires supported engines and escaping. A voice prompt is not a tool-authorization boundary. No call, recording or provider request was made.
© sickn33 · MIT · sickn33/agentic-awesome-skills