/** * SpeakerEmbedding — speaker identity embeddings via the server's * /v1/audio/speaker_embeddings route. * * The browser SDK is server-route-only; there is no local C-ABI native * execution. This facade POSTs PCM-f32 audio bytes (as base64) to the * hosted native backend (sherpa-onnx ERes2NetV2) and returns a * normalized float-vector suitable for cosine similarity comparisons. * * Python reference: octomil-python/octomil/audio/speaker_embedding.py * Route: POST /v1/audio/speaker_embeddings (octomil-python/octomil/serve/app.py:1457) * * Request body: * { audio_pcm_f32_base64: string, sample_rate_hz: number, * model?: string, deadline_ms?: number } * * Response body: * { object: "audio.speaker.embedding", model: string, sample_rate_hz: number, * embedding: number[], dimensions: number } */ export interface SpeakerEmbeddingCreateRequest { /** * Raw mono PCM-f32 audio as ArrayBuffer / Uint8Array. * Bytes must be float32-LE. */ audioBytes: ArrayBuffer | Uint8Array; /** Sample rate of the audio, in Hz (e.g. 16000). */ sampleRateHz: number; /** * Model identifier. Defaults to "sherpa-eres2netv2-base" server-side. * Other model names will be rejected as UNSUPPORTED_MODALITY. */ model?: string; /** Per-request deadline in milliseconds. Defaults to 300 000 server-side. */ deadlineMs?: number; } export interface SpeakerEmbeddingCreateResponse { readonly object: "audio.speaker.embedding"; /** Model that produced the embedding. */ readonly model: string; readonly sampleRateHz: number; /** * L2-normalised float32 embedding vector. * * The canonical ERes2NetV2 base dimension is 512, but callers should NOT * hardcode 512 — read it from `dimensions` instead so future model updates * are handled transparently. */ readonly embedding: number[]; /** Embedding dimension (e.g. 512 for ERes2NetV2 base). */ readonly dimensions: number; } export declare class SpeakerEmbedding { private readonly serverUrl; private readonly apiKey; constructor(serverUrl: string, apiKey: string); /** * Create a speaker identity embedding from a PCM-f32 audio clip. * * The returned vector is L2-normalised; compute cosine similarity with a * simple dot product: * const score = embA.reduce((sum, v, i) => sum + v * (embB[i] ?? 0), 0); */ create(request: SpeakerEmbeddingCreateRequest): Promise; } //# sourceMappingURL=speaker-embedding.d.ts.map