feat: transcription support (#394)

* 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:12:01 +08:00
committed by GitHub
parent fd8f1ec078
commit 925fdee478
70 changed files with 6612 additions and 1692 deletions
+8 -8
View File
@@ -8,6 +8,7 @@ import (
"github.com/memohai/memoh/internal/accounts"
"github.com/memohai/memoh/internal/acl"
audiopkg "github.com/memohai/memoh/internal/audio"
"github.com/memohai/memoh/internal/bind"
"github.com/memohai/memoh/internal/boot"
"github.com/memohai/memoh/internal/bots"
@@ -29,7 +30,6 @@ import (
"github.com/memohai/memoh/internal/schedule"
"github.com/memohai/memoh/internal/searchproviders"
"github.com/memohai/memoh/internal/settings"
ttspkg "github.com/memohai/memoh/internal/tts"
)
func runServe() {
@@ -63,9 +63,9 @@ func options() fx.Option {
identities.NewService,
bind.NewService,
event.NewHub,
provideTtsRegistry,
ttspkg.NewService,
provideTtsTempStore,
provideAudioRegistry,
audiopkg.NewService,
provideAudioTempStore,
emailpkg.NewDBOAuthTokenStore,
provideEmailRegistry,
emailpkg.NewService,
@@ -121,8 +121,8 @@ func options() fx.Option {
provideServerHandler(weixin.NewQRServerHandler),
provideServerHandler(provideUsersHandler),
provideServerHandler(handlers.NewMemoryProvidersHandler),
provideServerHandler(handlers.NewSpeechHandler),
provideServerHandler(handlers.NewBotTtsHandler),
provideServerHandler(handlers.NewAudioHandler),
provideServerHandler(handlers.NewBotAudioHandler),
provideServerHandler(handlers.NewEmailProvidersHandler),
provideServerHandler(handlers.NewEmailBindingsHandler),
provideServerHandler(handlers.NewEmailOutboxHandler),
@@ -141,7 +141,7 @@ func options() fx.Option {
fx.Invoke(
injectToolProviders,
startRegistrySync,
startSpeechProviderBootstrap,
startAudioProviderBootstrap,
startMemoryProviderBootstrap,
startSearchProviderBootstrap,
startScheduleService,
@@ -151,7 +151,7 @@ func options() fx.Option {
startEmailManager,
startContainerReconciliation,
startBackgroundTaskCleanup,
startTtsTempStoreCleanup,
startAudioTempStoreCleanup,
startServer,
),
fx.WithLogger(func(logger *slog.Logger) fxevent.Logger {