// worker/jobs.go — the two verb payloads (Transcribe + Synthesize). // // Audio bytes are base64-encoded by encoding/json automatically via the // []byte type — the wire shape is a string field carrying base64. Local // unix socket ⇒ expansion cost is invisible; the JSON envelope stays // debuggable per the package doc. // // Input shape (Transcribe): core has captured audio (push-to-talk) or // synthesised it (TTS round-trip test path — non-production). The worker // module consumes audio bytes with the declared Format. Lang is a hint // ("ru"/"en"/"mixed"); faster-whisper is multilingual and treats the hint // as a soft bias, vosk ru ignores it (one-model, one-language). The reference // stt stub ignores all params and returns a canned phrase so the loop is // exercisable without a model on disk. // // Output shape (Transcribe): Text is the recognized string. Confidence is // the model's own estimate when available; 0 ⇒ unknown. The router downstream // does its own confidence scoring (the cosine-sim classifier), so worker-side // confidence is for logging/gating, not for routing. // // Input shape (Synthesize): text to render. Lang is the requested voice // language ("ru"/"en"). Voice ID is a named voice when supported, "" ⇒ the // worker's configured default. Speed is a 1.0 = normal multiplier; out of // range is clamped by the worker, not the caller. // // Output shape (Synthesize): Audio is the rendered PCM bytes in Format. package worker import "github.com/kami/maven/internal/audio" // TranscribeReq — the transcribe verb args. type TranscribeReq struct { Audio audio.Audio `json:"audio"` // capture bytes (raw PCM, format declared) Lang string `json:"lang"` // "ru" | "en" | "mixed" | "" ⇒ module default } // TranscribeResp — the transcribe verb result. type TranscribeResp struct { Text string `json:"text"` Confidence float64 `json:"confidence,omitempty"` // 0 ⇒ unknown } // SynthesizeReq — the synthesize verb args. type SynthesizeReq struct { Text string `json:"text"` Lang string `json:"lang"` // "ru" | "en" | "" Voice string `json:"voice"` // named voice or "" ⇒ worker default Speed float64 `json:"speed"` // 1.0 = normal; clamped server-side } // SynthesizeResp — the synthesize verb result. type SynthesizeResp struct { Audio audio.Audio `json:"audio"` // rendered PCM }