Files
ArtPlayer/packages/artplayer-plugin-asr/ARCHITECTURE.md
T

2.1 KiB

ASR maintenance

The current implementation is still in src/index.js. TypeScript migration and resource ownership changes are tracked in the repository refactor plan as PKG-ASR-02 through PKG-ASR-06. Do not interpret the baseline tests as completion.

  • The default factory snapshots options. Registration creates the asr layer and subscribes to player play, pause, volumechange and destroy events.
  • Play creates an AudioContext and tries a media element source, then a captured MediaStream source. An inline Blob contains the recorder-processor Worklet.
  • Worklet messages supply first-channel Float32 samples. The interval callback encodes little-endian mono PCM16 and a 44-byte-header WAV and invokes the caller's onAudioChunk({ pcm, wav }). A returned string replaces subtitles.
  • append splits punctuation and sets HTML in div.art-asr-line; hide changes display only. src/style.less owns layout and existing player CSS variables.
  • stop() is actually asynchronous and releases audio resources, but retains playback subscriptions. It is not a permanent disable API. There is no public start() method. Public declarations currently describe stop as returning void.

This package does not implement recognition or open an ASR network connection. The demo service and its WebSocket belong to the caller. Do not run that service to validate audio capture; use local media and a local callback.

The initial implementation has suspected chunk loss, partial initialization cleanup and stale callback issues. Preserve the frozen historical tests while adding candidate regression tests when fixing these. Keep callback/stop typing compatible with historical assignments, and preserve public entrypoints, HTML rendering behavior, layer names and stylesheet identity.

From the repository root, yarn test:asr verifies historical public behavior; yarn test:baseline includes archive provenance. yarn dev artplayer-plugin-asr and yarn build artplayer-plugin-asr use repository build tools. Real browser audio and lifecycle validation remains a separate required migration step.