Versions in this module Expand all Collapse all v0 v0.6.1 Mar 15, 2026 Changes in this version + const EnvDeepSeekAPIKey + const EnvOpenAIAPIKey + const ProviderDeepSeek + const ProviderOpenAI + var DeepSeekProvider = Provider + var ErrAPIKeyMissing = errors.New("OPENAI_API_KEY environment variable not set") + var ErrDeepSeekKeyMissing = errors.New("DEEPSEEK_API_KEY environment variable not set") + var ErrFileNotFound = errors.New("file not found") + var ErrInvalidDuration = errors.New("invalid duration format") + var ErrInvalidProvider = errors.New("invalid provider") + var ErrOutputExists = errors.New("output file already exists") + var ErrUnsupportedFormat = errors.New("unsupported audio format") + var ErrUnsupportedProvider = fmt.Errorf("unsupported provider (use %q or %q)", ProviderDeepSeek, ProviderOpenAI) + var OpenAIProvider = Provider + func ConfigCmd(env *Env) *cobra.Command + func DevicesCmd(env *Env) *cobra.Command + func LiveCmd(env *Env) *cobra.Command + func RecordCmd(env *Env) *cobra.Command + func StructureCmd(env *Env) *cobra.Command + func TranscribeCmd(env *Env) *cobra.Command + type ChunkerFactory interface + NewSilenceChunker func(ffmpegPath string) (audio.Chunker, error) + type ConfigLoader interface + Load func() (config.Config, error) + type DeviceListerFactory interface + NewDeviceLister func(ffmpegPath string) (audio.DeviceLister, error) + type Env struct + ChunkerFactory ChunkerFactory + ConfigLoader ConfigLoader + DeviceListerFactory DeviceListerFactory + FFmpegResolver FFmpegResolver + Getenv func(string) string + Now func() time.Time + RecorderFactory RecorderFactory + RestructurerFactory RestructurerFactory + Stderr io.Writer + TranscriberFactory TranscriberFactory + func DefaultEnv() *Env + func NewEnv(opts ...EnvOption) *Env + type EnvOption func(*Env) + func WithChunkerFactory(f ChunkerFactory) EnvOption + func WithConfigLoader(l ConfigLoader) EnvOption + func WithDeviceListerFactory(f DeviceListerFactory) EnvOption + func WithFFmpegResolver(r FFmpegResolver) EnvOption + func WithGetenv(fn func(string) string) EnvOption + func WithNow(fn func() time.Time) EnvOption + func WithRecorderFactory(f RecorderFactory) EnvOption + func WithRestructurerFactory(f RestructurerFactory) EnvOption + func WithStderr(w io.Writer) EnvOption + func WithTranscriberFactory(f TranscriberFactory) EnvOption + type FFmpegResolver interface + CheckVersion func(ctx context.Context, ffmpegPath string) + Resolve func(ctx context.Context) (string, error) + type Provider struct + func MustParseProvider(s string) Provider + func ParseProvider(s string) (Provider, error) + func (p Provider) IsDeepSeek() bool + func (p Provider) IsOpenAI() bool + func (p Provider) IsZero() bool + func (p Provider) OrDefault() Provider + func (p Provider) String() string + type RecorderFactory interface + NewLoopbackRecorder func(ctx context.Context, ffmpegPath string) (audio.Recorder, error) + NewMixRecorder func(ctx context.Context, ffmpegPath, micDevice string) (audio.Recorder, error) + NewRecorder func(ffmpegPath, device string) (audio.Recorder, error) + type RestructureOptions struct + OnProgress func(phase string, current, total int) + OutputLang lang.Language + Provider Provider + Template template.Name + type RestructurerFactory interface + NewMapReducer func(provider Provider, apiKey string, opts ...restructure.MapReduceOption) (restructure.MapReducer, error) + type TranscriberFactory interface + NewTranscriber func(apiKey string) transcribe.Transcriber