Release Notes: v0.10.0¶
Release Date: 2026-06-15
Highlights¶
- Unified Registry: Single source of truth via delegation to omnivoice-core
- Gateway Provider Registry: Full-duplex voice gateway support for telephony
- Simplified Provider Names:
"openai"and"gemini"replace"openai-realtime"and"gemini-live"
Breaking Changes¶
Provider Name Changes¶
Provider names have been simplified for consistency:
| Old Name | New Name |
|---|---|
openai-realtime |
openai |
gemini-live |
gemini |
Migration:
// Before (v0.9.x)
rt, _ := omnivoice.GetRealtimeProvider("openai-realtime", ...)
rt, _ := omnivoice.GetRealtimeProvider("gemini-live", ...)
// After (v0.10.0)
rt, _ := omnivoice.GetRealtimeProvider("openai", ...)
rt, _ := omnivoice.GetRealtimeProvider("gemini", ...)
New Features¶
Gateway Provider Registry¶
Voice gateway providers for full-duplex telephony are now available via the registry:
import (
"github.com/plexusone/omnivoice"
_ "github.com/plexusone/omnivoice/providers/all"
)
// Get Twilio gateway
gw, err := omnivoice.GetGatewayProvider("twilio",
omnivoice.WithAccountSID(accountSID),
omnivoice.WithAuthToken(authToken),
omnivoice.WithPublicURL("https://your-server.com"),
omnivoice.WithListenAddr(":8080"))
// Get Telnyx gateway
gw, err := omnivoice.GetGatewayProvider("telnyx",
omnivoice.WithAPIKey(apiKey),
omnivoice.WithConnectionID(connectionID),
omnivoice.WithPublicURL("https://your-server.com"))
// List registered gateways
fmt.Println(omnivoice.ListGatewayProviders()) // [twilio telnyx]
Gateway Registry Functions¶
| Function | Description |
|---|---|
RegisterGatewayProvider |
Register a gateway factory |
GetGatewayProvider |
Create gateway by name |
ListGatewayProviders |
List registered gateways |
HasGatewayProvider |
Check if gateway exists |
GetGatewayProviderPriority |
Get gateway priority |
Gateway Type Aliases¶
New types re-exported from omnivoice-core:
| Type | Description |
|---|---|
Gateway |
Full gateway interface |
GatewayMinimal |
Minimal gateway interface for registry |
GatewayConfig |
Gateway configuration |
GatewaySession |
Active voice session |
RealtimeConfig |
Configuration for realtime mode |
PipelineConfig |
Configuration for pipeline mode |
Pipeline Mode Constants¶
| Constant | Description |
|---|---|
PipelineModeText |
Traditional STT->LLM->TTS pipeline |
PipelineModeRealtime |
Native voice-to-voice mode |
Architecture Changes¶
Unified Registry¶
The omnivoice package now delegates all registry operations to omnivoice-core:
omnivoice-core ← Core interfaces + global registry
↑
provider packages ← Implement interfaces, register via init()
↑
omnivoice ← Imports all providers, delegates to core registry
Benefits:
- Single source of truth for provider registration
- Provider packages register with omnivoice-core, not omnivoice
- Both packages share the same registry state
- Consistent priority-based registration
Auto-Registration for Realtime/Gateway¶
Realtime and Gateway providers now use side-effect imports for automatic registration:
// In providers/all/all.go
import (
// Auto-register via init()
_ "github.com/plexusone/omni-google/omnivoice/realtime"
_ "github.com/plexusone/omni-openai/omnivoice/realtime"
_ "github.com/plexusone/omni-telnyx/omnivoice/gateway"
_ "github.com/plexusone/omni-twilio/omnivoice/gateway"
)
Dependencies¶
| Package | Change |
|---|---|
omnivoice-core |
v0.13.0 -> v0.14.0 (unified registry) |
omni-openai |
v0.4.0 -> v0.4.1 (registry support) |
omni-google |
v0.5.0 -> v0.6.0 (registry support) |
omni-twilio |
v0.7.0 -> v0.8.0 (gateway registry) |
omni-telnyx |
v0.3.0 -> v0.4.0 (gateway registry) |
Installation¶
Migration Guide¶
From v0.9.x¶
- Update provider names (breaking change):
"openai-realtime"→"openai"-
"gemini-live"→"gemini" -
Gateway support (new feature):
- Use
GetGatewayProvider()for telephony gateways - Import gateway types from omnivoice
Quick Start¶
package main
import (
"context"
"os"
"github.com/plexusone/omnivoice"
_ "github.com/plexusone/omnivoice/providers/all"
)
func main() {
ctx := context.Background()
// Native voice-to-voice (Realtime)
rt, _ := omnivoice.GetRealtimeProvider("openai",
omnivoice.WithAPIKey(os.Getenv("OPENAI_API_KEY")))
// Full-duplex telephony (Gateway)
gw, _ := omnivoice.GetGatewayProvider("twilio",
omnivoice.WithAccountSID(os.Getenv("TWILIO_ACCOUNT_SID")),
omnivoice.WithAuthToken(os.Getenv("TWILIO_AUTH_TOKEN")),
omnivoice.WithPublicURL("https://your-server.com"),
omnivoice.WithListenAddr(":8080"))
// Use providers...
_ = rt
_ = gw
}
Full Changelog¶
See CHANGELOG.md for the complete list of changes.