@vite-tts/core
v0.1.0
Published
Framework-agnostic core for vite-plugin-tts
Readme
@vite-tts/core
Framework-agnostic core engine for
vite-plugin-tts.
@vite-tts/core provides the foundational architecture for parsing <tts> elements in HTML, calculating deterministic content hashes, managing the disk/memory audio cache, orchestrating adapter synthesis, and transforming HTML into accessible <audio> elements.
📦 Installation
pnpm add -D @vite-tts/core
# or
npm install -D @vite-tts/core🚀 Key Modules
1. parseTTSNodes(html: string): TTSNode[]
Parses input HTML to extract all <tts> elements (both paired <tts>...</tts> and self-closing <tts ... />).
- Correctly ignores
<tts>occurrences inside HTML comments (<!-- <tts> -->). - Extracts inner text, attributes (
lang,voice,format,rate,pitch,controls,autoplay,loop,muted,preload,class,id,style).
2. TTSCacheManager
A disk and memory cache manager designed to eliminate redundant AI TTS synthesis:
- Hashing: SHA-256 hash derived deterministically from
{ text, lang, voice, format, rate, pitch }. - Cache directory: Stores generated audio files under
.tts-cache/audio/and metadata in.tts-cache/manifest.json. - Zero redundant API calls: If identical text and settings have already been synthesized, the cached audio buffer is returned immediately.
3. transformHTML(html: string, nodes: TTSNode[], options: TransformOptions): string
Transforms raw <tts> tags in HTML into compliant, accessible <audio> tags:
- Injects source tags:
<source src="..." type="audio/wav" />. - Preserves accessibility attributes (
controls,aria-label, data attributes likedata-tts="true").
4. loadProjectEnv(root?: string): void
Utility to load .env, .env.local, and mode-specific environment files from the project root into process.env during Vite configuration evaluation.
5. TTSAdapter Interface
The contract all TTS provider adapters implement:
export interface TTSAdapter {
readonly name: string
readonly defaultVoice?: string
readonly defaultFormat?: AudioFormat
readonly supportedLangs?: string[]
synthesize(request: TTSRequest): Promise<TTSResponse>
}📄 License
MIT
