Files
Cyrene_v2/internal/runtime/multimodal/voice/provider.go
T
AskaEth b0fbb8bc0d
CI / Backend (build / vet / test / cross-compile) (push) Has been cancelled
CI / Frontend (tsc + vite build) (push) Has been cancelled
docs(comments): 注释中文化 · internal/runtime/multimodal(21 文件,纯替换)
- 只翻注释/文档字符串,代码零变化:go/scanner 词法流比对 21 文件 token+字面量全等,增删行数 1:1(467/467)
- 刻意保留非散文英文:JSON Schema description、工具 Description() 返回值、adapter prompt、API 路径与命令示例、环境变量名
- 逐行确认代码前缀未变,未触碰其他模块
2026-10-04 12:28:16 +08:00

80 lines
2.4 KiB
Go

package voice
import "context"
// Provider 是语音降级链上的一级。它可实现零个、一个
// 或两个方向;返回 nil 表示该方向在此级上不可用,
// 链会移向下一级。
type Provider interface {
// Name 返回稳定的提供方标识。
Name() string
// STT 返回语音转文字实现,提供方无法转写时
// 返回 nil。
STT() STT
// TTS 返回文字转语音实现,提供方无法合成时
// 返回 nil。
TTS() TTS
}
// StaticProvider 是名字固定、STT/TTS 在构造时设定的
// Provider。下面各具体提供方都用它。
type StaticProvider struct {
name string
stt STT
tts TTS
}
// Name 返回提供方标识。
func (p *StaticProvider) Name() string { return p.name }
// STT 返回配置的 STT,可能为 nil。
func (p *StaticProvider) STT() STT { return p.stt }
// TTS 返回配置的 TTS,可能为 nil。
func (p *StaticProvider) TTS() TTS { return p.tts }
// NewProvider 用给定名字及其支持的可选方向构造一个
// Provider。
func NewProvider(name string, stt STT, tts TTS) *StaticProvider {
return &StaticProvider{name: name, stt: stt, tts: tts}
}
// CloudProvider 是链上的云端一级。它是一个适配点:
// 真实的 STT/TTS 实现经 NewProvider 与云端适配器接入。
func CloudProvider(stt STT, tts TTS) *StaticProvider {
return NewProvider("cloud", stt, tts)
}
// LocalProvider 是链上的本地模型一级。
func LocalProvider(stt STT, tts TTS) *StaticProvider {
return NewProvider("local", stt, tts)
}
// EdgeTTSProvider 是 edge-tts 一级(仅文字转语音)。
func EdgeTTSProvider(tts TTS) *StaticProvider {
return NewProvider("edge-tts", nil, tts)
}
// EspeakProvider 是 espeak 一级(仅文字转语音)。
func EspeakProvider(tts TTS) *StaticProvider {
return NewProvider("espeak", nil, tts)
}
// SilentProvider 是末端一级。它总是成功,返回空
// 转写与空音频,因此包含它的链永不报错。
func SilentProvider() *StaticProvider {
return NewProvider("silent", silenceSTT{}, silenceTTS{})
}
// silenceSTT 是静默 STT 一级;它返回空转写。
type silenceSTT struct{}
func (silenceSTT) STT(_ context.Context, _ Audio) (string, error) { return "", nil }
// silenceTTS 是静默 TTS 一级;它返回空音频。
type silenceTTS struct{}
func (silenceTTS) TTS(_ context.Context, _ string) (Audio, error) {
return Audio{}, nil
}