UNPKG

@assistant-ui/react

Version:

TypeScript/React library for AI Chat

88 lines 2.73 kB
import { Unsubscribe } from "../../../types"; /** * Types and interfaces for speech synthesis (text-to-speech) functionality. */ export declare namespace SpeechSynthesisAdapter { /** * Status of a speech synthesis operation. */ type Status = { /** Speech is starting or currently running */ type: "starting" | "running"; } | { /** Speech has ended */ type: "ended"; /** Reason why speech ended */ reason: "finished" | "cancelled" | "error"; /** Error details if speech ended due to error */ error?: unknown; }; /** * Represents a single speech utterance with control and status tracking. */ type Utterance = { /** Current status of the utterance */ status: Status; /** Cancel the current speech */ cancel: () => void; /** Subscribe to status changes */ subscribe: (callback: () => void) => Unsubscribe; }; } /** * Interface for text-to-speech functionality. * * SpeechSynthesisAdapter provides the ability to convert text content * into spoken audio, with status tracking and cancellation support. * * @example * ```tsx * const speechAdapter: SpeechSynthesisAdapter = { * speak: (text) => { * const utterance = new SpeechSynthesisUtterance(text); * speechSynthesis.speak(utterance); * * return { * status: { type: "starting" }, * cancel: () => speechSynthesis.cancel(), * subscribe: (callback) => { * utterance.addEventListener('end', callback); * return () => utterance.removeEventListener('end', callback); * } * }; * } * }; * ``` */ export type SpeechSynthesisAdapter = { /** * Converts text to speech and returns an utterance object for control. * * @param text - The text content to speak * @returns An utterance object with status and control methods */ speak: (text: string) => SpeechSynthesisAdapter.Utterance; }; export declare namespace SpeechRecognitionAdapter { type Status = { type: "starting" | "running"; } | { type: "ended"; reason: "stopped" | "cancelled" | "error"; }; type Result = { transcript: string; }; type Session = { status: Status; stop: () => Promise<void>; cancel: () => void; onSpeechStart: (callback: () => void) => Unsubscribe; onSpeechEnd: (callback: (result: Result) => void) => Unsubscribe; onSpeech: (callback: (result: Result) => void) => Unsubscribe; }; } export type SpeechRecognitionAdapter = { listen: () => SpeechRecognitionAdapter.Session; }; //# sourceMappingURL=SpeechAdapterTypes.d.ts.map