feat: persist voice samples to disk, generate VTT, cleanup after analysis

This commit is contained in:
2026-04-16 19:50:38 +02:00
parent b4026235ab
commit 516ceb5882
13 changed files with 366 additions and 83 deletions

View File

@@ -2,6 +2,12 @@ package port
import "context"
type SpeechTranscriber interface {
Transcribe(ctx context.Context, audioData []byte, mimeType string) (string, error)
// TranscriptionResult holds both the plain-text transcript and the WebVTT subtitle content.
type TranscriptionResult struct {
Text string
VTT string // WebVTT format, empty if not available
}
type SpeechTranscriber interface {
Transcribe(ctx context.Context, audioData []byte, mimeType string) (TranscriptionResult, error)
}

View File

@@ -0,0 +1,12 @@
package port
import "context"
// VoiceFileStore manages lifecycle of voice sample files on disk.
// Files are persisted until Cleanup is called after successful analysis.
type VoiceFileStore interface {
SaveRaw(ctx context.Context, sampleID string, data []byte) (path string, err error)
SaveConverted(ctx context.Context, sampleID string, data []byte) (path string, err error)
SaveVTT(ctx context.Context, sampleID string, content string) (path string, err error)
Cleanup(ctx context.Context, sampleID string) error
}