Documentation
¶
Overview ¶
包 music 提供统一的 AI 音乐生成接入层,支持多服务商适配与统一请求模型。
概述 ¶
本包对上层业务暴露一致的音乐生成请求与响应结构,屏蔽不同服务商在 接口协议、鉴权方式和异步轮询机制上的差异。调用方只需构造 GenerateRequest 即可完成音乐创作,无需关心底层 API 细节。
典型使用场景:
- 根据文本描述或歌词 Prompt 生成完整音乐。
- 指定风格(pop、rock、jazz 等)与时长进行定制化生成。
- 基于参考音频进行风格延续或续写。
- 纯器乐模式生成无人声音轨。
核心接口 ¶
- MusicProvider:统一的音乐生成 Provider 接口,包含 Generate 与 Name 方法。
- GenerateRequest / GenerateResponse:标准化的请求与响应模型。
- MusicData:单条音轨数据,包含 URL、Base64 音频、时长、标题与歌词。
- MusicUsage:用量统计,包含生成曲目数与总时长。
主要能力 ¶
- Suno 适配:通过 SunoProvider 接入 Suno API,支持异步任务轮询。
- MiniMax 适配:通过 MiniMaxProvider 接入 MiniMax API,支持参考音频与音质设置。
- 配置管理:每个 Provider 提供独立的 Config 结构与 Default 工厂函数。
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type GenerateRequest ¶
type GenerateRequest struct {
Prompt string `json:"prompt"` // Text description or lyrics
Style string `json:"style,omitempty"` // Music style (pop, rock, jazz, etc.)
Duration float64 `json:"duration,omitempty"` // Duration in seconds
Instrumental bool `json:"instrumental,omitempty"` // Generate without vocals
Model string `json:"model,omitempty"` // Model to use
ContinueFrom string `json:"continue_from,omitempty"` // Audio clip ID to extend
ReferenceAudio string `json:"reference_audio,omitempty"` // Base64 reference audio
}
生成请求代表音乐生成请求.
type GenerateResponse ¶
type GenerateResponse struct {
Provider string `json:"provider"`
Model string `json:"model"`
Tracks []MusicData `json:"tracks"`
Usage MusicUsage `json:"usage"`
CreatedAt time.Time `json:"created_at"`
}
GenerateResponse代表音乐生成响应.
type MiniMaxMusicConfig ¶
type MiniMaxMusicConfig struct {
APIKey string `json:"api_key" yaml:"api_key"`
BaseURL string `json:"base_url" yaml:"base_url"`
Model string `json:"model,omitempty" yaml:"model,omitempty"`
Timeout time.Duration `json:"timeout,omitempty" yaml:"timeout,omitempty"`
}
MiniMaxMusicConfig配置了MiniMax音乐提供者.
func DefaultMiniMaxMusicConfig ¶
func DefaultMiniMaxMusicConfig() MiniMaxMusicConfig
默认MiniMaxMusicConfig返回默认的MiniMax音乐配置.
type MiniMaxProvider ¶
type MiniMaxProvider struct {
// contains filtered or unexported fields
}
MiniMax Provider使用MiniMax API执行音乐生成.
func NewMiniMaxProvider ¶
func NewMiniMaxProvider(cfg MiniMaxMusicConfig) *MiniMaxProvider
新MiniMax Provider创建了一个新的MiniMax音乐提供商.
func (*MiniMaxProvider) Generate ¶
func (p *MiniMaxProvider) Generate(ctx context.Context, req *GenerateRequest) (*GenerateResponse, error)
生成音乐使用MiniMax API创建.
func (*MiniMaxProvider) Name ¶
func (p *MiniMaxProvider) Name() string
type MusicData ¶
type MusicData struct {
ID string `json:"id,omitempty"`
URL string `json:"url,omitempty"` // Download URL
B64Audio string `json:"b64_audio,omitempty"` // Base64 encoded audio
Duration float64 `json:"duration"` // Duration in seconds
Title string `json:"title,omitempty"`
Lyrics string `json:"lyrics,omitempty"`
Style string `json:"style,omitempty"`
}
MusicData代表一个已生成的音乐音轨.
type MusicProvider ¶
type MusicProvider interface {
Name() string
Generate(ctx context.Context, req *GenerateRequest) (*GenerateResponse, error)
}
MusicProvider定义了音乐生成的界面.
type MusicUsage ¶
type MusicUsage struct {
TracksGenerated int `json:"tracks_generated"`
DurationSeconds float64 `json:"duration_seconds"`
Credits float64 `json:"credits,omitempty"`
}
MusicUsage包含使用信息.
type SunoConfig ¶
type SunoConfig struct {
APIKey string `json:"api_key" yaml:"api_key"`
BaseURL string `json:"base_url" yaml:"base_url"`
Model string `json:"model,omitempty" yaml:"model,omitempty"`
Timeout time.Duration `json:"timeout,omitempty" yaml:"timeout,omitempty"`
}
SunoConfig配置了Suno音乐提供者.
type SunoProvider ¶
type SunoProvider struct {
// contains filtered or unexported fields
}
SunoProvider使用Suno API执行音乐生成.
func NewSunoProvider ¶
func NewSunoProvider(cfg SunoConfig) *SunoProvider
NewSunoProvider创建了新的Suno音乐提供商.
func (*SunoProvider) Generate ¶
func (p *SunoProvider) Generate(ctx context.Context, req *GenerateRequest) (*GenerateResponse, error)
生成音乐使用Suno API创建.
func (*SunoProvider) Name ¶
func (p *SunoProvider) Name() string
Click to show internal directories.
Click to hide internal directories.