wire streaming adapters into transcriber factory
This commit is contained in:
@@ -95,12 +95,23 @@ func NewTranscriber(config Config) (Transcriber, error) {
|
|||||||
return nil, fmt.Errorf("model %s is not a transcription model", config.Model)
|
return nil, fmt.Errorf("model %s is not a transcription model", config.Model)
|
||||||
}
|
}
|
||||||
|
|
||||||
// streaming models not supported yet
|
// streaming models use StreamingTranscriber
|
||||||
if model.Streaming {
|
if model.Streaming {
|
||||||
return nil, fmt.Errorf("streaming model %s not supported yet (coming soon)", config.Model)
|
var streamingAdapter StreamingAdapter
|
||||||
|
switch model.AdapterType {
|
||||||
|
case "elevenlabs-streaming":
|
||||||
|
streamingAdapter = NewElevenLabsStreamingAdapter(model.Endpoint, config.APIKey, model.ID, config.Language)
|
||||||
|
case "deepgram":
|
||||||
|
streamingAdapter = NewDeepgramAdapter(model.Endpoint, config.APIKey, model.ID, config.Language)
|
||||||
|
case "openai-realtime":
|
||||||
|
streamingAdapter = NewOpenAIRealtimeAdapter(model.Endpoint, config.APIKey, model.ID, config.Language)
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("unsupported streaming adapter type: %s", model.AdapterType)
|
||||||
|
}
|
||||||
|
return NewStreamingTranscriber(streamingAdapter, config.Language), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// create adapter based on model.AdapterType
|
// batch models use SimpleTranscriber
|
||||||
var adapter BatchAdapter
|
var adapter BatchAdapter
|
||||||
switch model.AdapterType {
|
switch model.AdapterType {
|
||||||
case "openai":
|
case "openai":
|
||||||
|
|||||||
@@ -155,14 +155,34 @@ func TestNewTranscriber(t *testing.T) {
|
|||||||
wantErr: false, // uses default model when empty
|
wantErr: false, // uses default model when empty
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "streaming model returns error",
|
name: "elevenlabs streaming model creates StreamingTranscriber",
|
||||||
config: Config{
|
config: Config{
|
||||||
Provider: "elevenlabs",
|
Provider: "elevenlabs",
|
||||||
APIKey: "test-key",
|
APIKey: "test-key",
|
||||||
Language: "en",
|
Language: "en",
|
||||||
Model: "scribe_v1-streaming",
|
Model: "scribe_v1-streaming",
|
||||||
},
|
},
|
||||||
wantErr: true, // streaming not yet supported
|
wantErr: false, // streaming is now supported
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "deepgram streaming model creates StreamingTranscriber",
|
||||||
|
config: Config{
|
||||||
|
Provider: "deepgram",
|
||||||
|
APIKey: "test-key",
|
||||||
|
Language: "en",
|
||||||
|
Model: "nova-3",
|
||||||
|
},
|
||||||
|
wantErr: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "openai realtime streaming model creates StreamingTranscriber",
|
||||||
|
config: Config{
|
||||||
|
Provider: "openai",
|
||||||
|
APIKey: "test-key",
|
||||||
|
Language: "en",
|
||||||
|
Model: "gpt-4o-realtime-preview",
|
||||||
|
},
|
||||||
|
wantErr: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "unknown model returns error",
|
name: "unknown model returns error",
|
||||||
|
|||||||
@@ -406,3 +406,15 @@ Started: Sun Feb 1 12:22:47 AM CET 2026
|
|||||||
- Context cancellation stops reconnection attempts (checked in reconnect loop)
|
- Context cancellation stops reconnection attempts (checked in reconnect loop)
|
||||||
- TestOpenAIRealtimeAdapter_Reconnection verifies behavior
|
- TestOpenAIRealtimeAdapter_Reconnection verifies behavior
|
||||||
- All tests passing with -race flag, typecheck passes
|
- All tests passing with -race flag, typecheck passes
|
||||||
|
|
||||||
|
### Task 39: Update factory to create streaming transcribers
|
||||||
|
- Updated `NewTranscriber()` in internal/transcriber/transcriber.go
|
||||||
|
- Added streaming model check: `if model.Streaming {...}`
|
||||||
|
- For streaming models, creates appropriate StreamingAdapter based on AdapterType:
|
||||||
|
- `elevenlabs-streaming` -> `NewElevenLabsStreamingAdapter()`
|
||||||
|
- `deepgram` -> `NewDeepgramAdapter()`
|
||||||
|
- `openai-realtime` -> `NewOpenAIRealtimeAdapter()`
|
||||||
|
- Wraps streaming adapter in `NewStreamingTranscriber(adapter, config.Language)`
|
||||||
|
- Updated tests: streaming models now succeed (not error)
|
||||||
|
- Added tests for deepgram and openai-realtime streaming models
|
||||||
|
- All tests passing with -race flag, typecheck passes
|
||||||
+1
-1
@@ -911,7 +911,7 @@
|
|||||||
"Factory creates SimpleTranscriber for whisper-1",
|
"Factory creates SimpleTranscriber for whisper-1",
|
||||||
"Typecheck passes"
|
"Typecheck passes"
|
||||||
],
|
],
|
||||||
"passes": false
|
"passes": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "Write tests for streaming adapters",
|
"title": "Write tests for streaming adapters",
|
||||||
|
|||||||
Reference in New Issue
Block a user