music

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Feb 24, 2026 License: MIT Imports: 9 Imported by: 0

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

生成音乐使用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音乐提供者.

func DefaultSunoConfig

func DefaultSunoConfig() SunoConfig

默认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

生成音乐使用Suno API创建.

func (*SunoProvider) Name

func (p *SunoProvider) Name() string

Jump to

Keyboard shortcuts

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