wire whisper-cpp into transcriber factory

This commit is contained in:
leonardotrapani
2026-02-01 01:14:33 +01:00
parent f6bf81cf95
commit af0a55dc4b
4 changed files with 45 additions and 1 deletions
+7
View File
@@ -5,6 +5,7 @@ import (
"fmt"
"strings"
"github.com/leonardotrapani/hyprvoice/internal/models/whisper"
"github.com/leonardotrapani/hyprvoice/internal/provider"
"github.com/leonardotrapani/hyprvoice/internal/recording"
)
@@ -106,6 +107,12 @@ func NewTranscriber(config Config) (Transcriber, error) {
adapter = NewOpenAIAdapter(model.Endpoint, config.APIKey, model.ID, config.Language, config.Keywords, registryProvider)
case "elevenlabs":
adapter = NewElevenLabsAdapter(model.Endpoint, config.APIKey, model.ID, config.Language)
case "whisper-cpp":
modelPath := whisper.GetModelPath(config.Model)
if modelPath == "" {
return nil, fmt.Errorf("unknown whisper model: %s", config.Model)
}
adapter = NewWhisperCppAdapter(modelPath, config.Language, config.Threads)
default:
return nil, fmt.Errorf("unsupported adapter type: %s", model.AdapterType)
}
+29
View File
@@ -174,6 +174,35 @@ func TestNewTranscriber(t *testing.T) {
},
wantErr: true,
},
{
name: "valid whisper-cpp config creates adapter",
config: Config{
Provider: "whisper-cpp",
Language: "en",
Model: "base.en",
Threads: 4,
},
wantErr: false, // creates adapter even if model file doesn't exist (runtime check)
},
{
name: "whisper-cpp without api key is valid",
config: Config{
Provider: "whisper-cpp",
APIKey: "", // no api key required
Language: "en",
Model: "tiny.en",
},
wantErr: false,
},
{
name: "whisper-cpp with unknown model returns error",
config: Config{
Provider: "whisper-cpp",
Language: "en",
Model: "nonexistent-whisper-model",
},
wantErr: true,
},
}
for _, tt := range tests {