sync: migrate ai-operator to Gitea (2026-08-10)
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
package provider
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"log/slog"
|
||||
"strings"
|
||||
|
||||
"ai-operator/internal/ai"
|
||||
"ai-operator/internal/ai/fake"
|
||||
realtime "ai-operator/internal/ai/openai/realtime"
|
||||
"ai-operator/internal/ai/pipeline"
|
||||
"ai-operator/internal/config"
|
||||
)
|
||||
|
||||
func NewVoiceProvider(cfg config.Config, logger *slog.Logger) (ai.VoiceProvider, error) {
|
||||
switch strings.TrimSpace(cfg.Voice.Provider) {
|
||||
case "", "fake":
|
||||
return fake.New(), nil
|
||||
case "openai_realtime":
|
||||
if cfg.OpenAI.APIKey == "" {
|
||||
return nil, errors.New("OPENAI_API_KEY is required for openai_realtime provider")
|
||||
}
|
||||
return realtime.NewProvider(cfg, logger), nil
|
||||
case "pipeline_elevenlabs", "pipeline_elevenlabs_streaming":
|
||||
if cfg.Eleven.APIKey == "" {
|
||||
return nil, errors.New("ELEVENLABS_API_KEY is required for pipeline_elevenlabs_streaming provider")
|
||||
}
|
||||
if cfg.Eleven.VoiceIDRU == "" {
|
||||
return nil, errors.New("ELEVENLABS_VOICE_ID_RU is required for pipeline_elevenlabs_streaming provider")
|
||||
}
|
||||
if cfg.OpenAI.APIKey == "" {
|
||||
return nil, errors.New("OPENAI_API_KEY is required for pipeline_elevenlabs_streaming provider")
|
||||
}
|
||||
return pipeline.NewStreamingProvider(cfg, logger), nil
|
||||
default:
|
||||
return nil, errors.New("unknown voice provider")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user