cf-voice/cf_voice
pyr0ball 6e17da9e93 feat: AudioEvent models, classify_chunk() for per-chunk request-response path
- events.py: AudioEvent dataclass + ToneEvent with affect, shift_magnitude,
  shift_direction, prosody_flags; make_subtext() for generic/Elcor formats
- context.py: classify_chunk(audio_b64, timestamp, prior_frames, elcor)
  returns list[AudioEvent]; mock mode uses MockVoiceIO RNG, real raises NotImplementedError
- ToneEvent.__post_init__ pins event_type='tone' (avoids MRO default-field ordering bug)
- Elcor mode: same classifier output, Elcor speech-prefix wording; all tiers
2026-04-06 16:53:10 -07:00
..
__init__.py feat: initial cf-voice stub — VoiceFrame API, mock IO, context classifier 2026-04-06 16:03:07 -07:00
cli.py feat: initial cf-voice stub — VoiceFrame API, mock IO, context classifier 2026-04-06 16:03:07 -07:00
context.py feat: AudioEvent models, classify_chunk() for per-chunk request-response path 2026-04-06 16:53:10 -07:00
events.py feat: AudioEvent models, classify_chunk() for per-chunk request-response path 2026-04-06 16:53:10 -07:00
io.py feat: initial cf-voice stub — VoiceFrame API, mock IO, context classifier 2026-04-06 16:03:07 -07:00
models.py feat: initial cf-voice stub — VoiceFrame API, mock IO, context classifier 2026-04-06 16:03:07 -07:00