Files
copilotkit__copilotkit/packages/voice/README.md
Tyler Slaton 96885b5959 refactor: consolidate V1/V2 packages into flat @copilotkit/* structure
Flatten all packages from packages/v1/* and packages/v2/* into packages/* —
every package now lives directly under the @copilotkit/ scope with no v1/v2
subdirectories.

- Move all v1 packages (react-core, react-ui, runtime, shared, etc.) from
  packages/v1/* to packages/*
- Absorb v2 react code into packages/react-core/src/v2/ (exported via /v2 subpath)
- Absorb v2 agent code into packages/runtime/src/agent/ (exported via /v2 subpath)
- Move v2 packages (core, angular, demo-agents, etc.) to packages/*
- Replace all @copilotkitnext/* imports with @copilotkit/* equivalents
- Keep @copilotkitnext/angular as the sole exception (angular remains on next)
- Update CI workflows, renovate config, release scripts for flat structure
- No public API surface changes — all exports fields are preserved

Co-authored-by: Alem Tuzlak <t.zlak@hotmail.com>
Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
2026-03-28 16:45:10 -07:00

1.5 KiB

@copilotkit/voice

Audio transcription providers for CopilotKit.

Setup

pnpm add @copilotkit/voice openai
import { CopilotRuntime, createCopilotEndpoint } from "@copilotkit/runtime";
import { TranscriptionServiceOpenAI } from "@copilotkit/voice";
import OpenAI from "openai";

const runtime = new CopilotRuntime({
  agents: { default: yourAgent },
  transcriptionService: new TranscriptionServiceOpenAI({
    openai: new OpenAI({ apiKey: process.env.OPENAI_API_KEY }),
  }),
});

Once configured, the chat UI shows a microphone button. Users can record audio, which gets transcribed and inserted into the input field as text.

TranscriptionServiceOpenAI

Uses OpenAI Whisper for transcription.

new TranscriptionServiceOpenAI({
  openai: new OpenAI({ apiKey: "..." }), // required
  model: "whisper-1", // default
  language: "en", // optional, ISO-639-1 code
  prompt: "Technical discussion context", // optional, helps with domain terms
  temperature: 0, // optional, 0 = deterministic
});

Custom providers

Extend TranscriptionService from runtime:

import {
  TranscriptionService,
  TranscribeFileOptions,
} from "@copilotkit/runtime";

class MyTranscriptionService extends TranscriptionService {
  async transcribeFile(options: TranscribeFileOptions): Promise<string> {
    // options.audioFile, options.mimeType, options.size
    return "transcribed text";
  }
}