asr

package
v0.8.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 14, 2026 License: Apache-2.0, MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func WithLanguage

func WithLanguage(ctx context.Context, language string) context.Context

WithLanguage attaches the operator's language hint (for example "zh") to a transcription. Empty and "auto" mean auto-detection, which is every vendor's default, and send nothing.

Types

type ASR

type ASR interface {
	// Transcribe sends audio bytes to the ASR model and returns the transcribed text and segments.
	Transcribe(ctx context.Context, audioBytes []byte, fileName string) (*TranscriptionResult, error)

	GetModelName() string
	GetModelID() string
}

ASR defines the interface for Automatic Speech Recognition model operations.

func NewASR

func NewASR(config *Config) (ASR, error)

NewASR creates an ASR instance based on the provided configuration.

type Config

type Config struct {
	Source    types.ModelSource
	BaseURL   string
	ModelName string
	APIKey    string
	ModelID   string
	// Provider is the vendor id stored on the row; empty detects it from
	// BaseURL.
	Provider    string
	Spec        *types.ModelSpecOverride `json:"spec,omitempty"`
	ExtraConfig map[string]string
	// CustomHeaders 允许在调用远程 API 时附加自定义 HTTP 请求头(类似 OpenAI Python SDK 的 extra_headers)。
	CustomHeaders map[string]string
}

Config holds the configuration needed to create an ASR instance.

func ConfigFromModel

func ConfigFromModel(m *types.Model) *Config

ConfigFromModel 根据 types.Model 构造 asr.Config。 生产路径(从 DB 拉起)和测试连接路径(临时表单)共享这份映射。 当前 ASR 不涉及 WeKnoraCloud 凭证,所以签名不含 appID/appSecret。

type Segment

type Segment struct {
	Start float64 `json:"start"`
	End   float64 `json:"end"`
	Text  string  `json:"text"`
}

Segment represents a transcribed segment with timestamps.

type TranscriptionResult

type TranscriptionResult struct {
	Text     string    `json:"text"`
	Segments []Segment `json:"segments,omitempty"`
	// Duration is the audio length in seconds when the vendor reports it,
	// which several do without segments; 0 when unknown.
	Duration float64 `json:"duration,omitempty"`
}

TranscriptionResult holds the full text and its segments.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL