Feat/speech support (#392)

* feat: expand speech provider support with new client types and configuration schema

* feat: add icon support for speech providers and update related configurations

* feat: add SVG support for Deepgram and Elevenlabs with Vue components

* feat: except *-speech client type in llm provider

* feat: enhance speech provider functionality with advanced settings and model import capabilities

* chore: remove go.mod replace

* feat: enhance speech provider functionality with advanced settings and model import capabilities

* chore: update go module dependencies

* feat: Ear and Mouth

* fix: separate ear/mouth page

* fix: separate audio domain and restore transcription templates

Move speech and transcription internals into the audio domain, restore template-driven transcription providers, and regenerate Swagger/SDK so the frontend can stop hand-calling /transcription-* APIs.

---------

Co-authored-by: aki <arisu@ieee.org>
This commit is contained in:
Acbox
2026-04-22 00:09:46 +08:00
committed by GitHub
parent 8d78925a23
commit c9dcfe287f
70 changed files with 6612 additions and 1692 deletions
+15
View File
@@ -175,6 +175,14 @@ func (s *Service) UpsertBot(ctx context.Context, botID string, req UpsertRequest
}
ttsModelUUID = modelID
}
transcriptionModelUUID := pgtype.UUID{}
if value := strings.TrimSpace(req.TranscriptionModelID); value != "" {
modelID, err := db.ParseUUID(value)
if err != nil {
return Settings{}, err
}
transcriptionModelUUID = modelID
}
browserContextUUID := pgtype.UUID{}
if value := strings.TrimSpace(req.BrowserContextID); value != "" {
ctxID, err := db.ParseUUID(value)
@@ -204,6 +212,7 @@ func (s *Service) UpsertBot(ctx context.Context, botID string, req UpsertRequest
SearchProviderID: searchProviderUUID,
MemoryProviderID: memoryProviderUUID,
TtsModelID: ttsModelUUID,
TranscriptionModelID: transcriptionModelUUID,
BrowserContextID: browserContextUUID,
PersistFullToolResults: current.PersistFullToolResults,
})
@@ -298,6 +307,7 @@ func normalizeBotSettingsReadRow(row sqlc.GetSettingsByBotIDRow) Settings {
row.SearchProviderID,
row.MemoryProviderID,
row.TtsModelID,
row.TranscriptionModelID,
row.BrowserContextID,
row.PersistFullToolResults,
)
@@ -322,6 +332,7 @@ func normalizeBotSettingsWriteRow(row sqlc.UpsertBotSettingsRow) Settings {
row.SearchProviderID,
row.MemoryProviderID,
row.TtsModelID,
row.TranscriptionModelID,
row.BrowserContextID,
row.PersistFullToolResults,
)
@@ -345,6 +356,7 @@ func normalizeBotSettingsFields(
searchProviderID pgtype.UUID,
memoryProviderID pgtype.UUID,
ttsModelID pgtype.UUID,
transcriptionModelID pgtype.UUID,
browserContextID pgtype.UUID,
persistFullToolResults bool,
) Settings {
@@ -376,6 +388,9 @@ func normalizeBotSettingsFields(
if ttsModelID.Valid {
settings.TtsModelID = uuid.UUID(ttsModelID.Bytes).String()
}
if transcriptionModelID.Valid {
settings.TranscriptionModelID = uuid.UUID(transcriptionModelID.Bytes).String()
}
if browserContextID.Valid {
settings.BrowserContextID = uuid.UUID(browserContextID.Bytes).String()
}
+2
View File
@@ -12,6 +12,7 @@ type Settings struct {
SearchProviderID string `json:"search_provider_id"`
MemoryProviderID string `json:"memory_provider_id"`
TtsModelID string `json:"tts_model_id"`
TranscriptionModelID string `json:"transcription_model_id"`
BrowserContextID string `json:"browser_context_id"`
Language string `json:"language"`
AclDefaultEffect string `json:"acl_default_effect"`
@@ -36,6 +37,7 @@ type UpsertRequest struct {
SearchProviderID string `json:"search_provider_id,omitempty"`
MemoryProviderID string `json:"memory_provider_id,omitempty"`
TtsModelID string `json:"tts_model_id,omitempty"`
TranscriptionModelID string `json:"transcription_model_id,omitempty"`
BrowserContextID string `json:"browser_context_id,omitempty"`
Language string `json:"language,omitempty"`
AclDefaultEffect string `json:"acl_default_effect,omitempty"`