From a366d61558c382da491ce51d985e65b294bc7aed Mon Sep 17 00:00:00 2001 From: leonardotrapani Date: Sun, 1 Feb 2026 01:02:07 +0100 Subject: [PATCH] add Threads field to transcriber config for local providers --- internal/config/convert.go | 1 + internal/config/save.go | 3 ++- internal/config/types.go | 1 + internal/transcriber/transcriber.go | 1 + progress.txt | 15 ++++++++------- tasks/prd.jsonc | 2 +- 6 files changed, 14 insertions(+), 9 deletions(-) diff --git a/internal/config/convert.go b/internal/config/convert.go index b432061..73ea1cb 100644 --- a/internal/config/convert.go +++ b/internal/config/convert.go @@ -26,6 +26,7 @@ func (c *Config) ToTranscriberConfig() transcriber.Config { Language: c.Transcription.Language, Model: c.Transcription.Model, Keywords: c.Keywords, + Threads: c.Transcription.Threads, } config.APIKey = c.resolveAPIKeyForProvider(c.Transcription.Provider) diff --git a/internal/config/save.go b/internal/config/save.go index dcff232..080879e 100644 --- a/internal/config/save.go +++ b/internal/config/save.go @@ -66,9 +66,10 @@ keywords = [] # ───────────────────────────────────────────────────────────────────────────── [transcription] - provider = "openai" # "openai", "groq-transcription", "groq-translation", "mistral-transcription", "elevenlabs" + provider = "openai" # "openai", "groq-transcription", "groq-translation", "mistral-transcription", "elevenlabs", "whisper-cpp" language = "" # Language code (empty = auto-detect, "en", "it", "es", "fr", etc.) model = "whisper-1" # Model: OpenAI="whisper-1", Groq="whisper-large-v3", Mistral="voxtral-mini-latest", ElevenLabs="scribe_v1" + threads = 0 # CPU threads for local transcription (0 = auto: uses NumCPU-1) # ───────────────────────────────────────────────────────────────────────────── # LLM Post-Processing (Recommended) diff --git a/internal/config/types.go b/internal/config/types.go index fbf10e8..41d3fb5 100644 --- a/internal/config/types.go +++ b/internal/config/types.go @@ -60,6 +60,7 @@ type TranscriptionConfig struct { APIKey string `toml:"api_key"` Language string `toml:"language"` Model string `toml:"model"` + Threads int `toml:"threads"` // CPU threads for local transcription (0 = auto: NumCPU-1) } type InjectionConfig struct { diff --git a/internal/transcriber/transcriber.go b/internal/transcriber/transcriber.go index e2a5f82..fae093b 100644 --- a/internal/transcriber/transcriber.go +++ b/internal/transcriber/transcriber.go @@ -28,6 +28,7 @@ type Config struct { Language string Model string Keywords []string + Threads int // CPU threads for local transcription (0 = auto) } // mapConfigProviderToRegistryName maps config provider names to provider registry names diff --git a/progress.txt b/progress.txt index 9224668..d8cdf67 100644 --- a/progress.txt +++ b/progress.txt @@ -10,16 +10,17 @@ Started: Sun Feb 1 12:22:47 AM CET 2026 - Full 57 language list from OpenAI Whisper - All tests passing, typecheck passes -### Task 8: Migrate OpenAI provider to new Model structure -- Added gpt-4o-transcribe and gpt-4o-mini-transcribe transcription models -- Removed gpt-4-turbo and gpt-3.5-turbo LLM models (not in PRD) -- OpenAI now has 5 models: 3 transcription (whisper-1, gpt-4o-transcribe, gpt-4o-mini-transcribe) + 2 LLM (gpt-4o-mini, gpt-4o) -- All models have AdapterType='openai', Endpoint with BaseURL='https://api.openai.com' -- All models use language.AllLanguageCodes() for SupportedLanguages (57 languages) -- Updated provider_test.go to expect 3 transcription and 2 LLM models +### Task 16: Update config.ToTranscriberConfig to work with new architecture +- Added `Threads int` field to `TranscriptionConfig` in types.go (for local transcription CPU threads) +- Added `Threads int` field to `transcriber.Config` struct +- Updated `ToTranscriberConfig()` to pass Threads from config +- Updated config template in save.go with `threads = 0` and comment explaining auto-detection (NumCPU-1) +- Added whisper-cpp to provider list in config template +- Config package doesn't import provider - factory handles model lookup - All tests passing, typecheck passes + ### Task 3: Create Model type with full metadata - Created `internal/provider/model.go` - ModelType enum: Transcription, LLM diff --git a/tasks/prd.jsonc b/tasks/prd.jsonc index 12a1d19..9ebb3b0 100644 --- a/tasks/prd.jsonc +++ b/tasks/prd.jsonc @@ -392,7 +392,7 @@ "Config doesn't import provider package (factory does)", "Typecheck passes" ], - "passes": false + "passes": true }, { "title": "Write tests for transcriber factory",