audio

package
v0.0.0-...-ae8f3be Latest Latest
Warning

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

Go to latest
Published: Feb 1, 2026 License: MIT Imports: 3 Imported by: 0

README

音频处理

提供高级音频处理功能,包括音量标准化、降噪、混音等。

特性

  • 音量标准化: EBU R128 标准音量标准化
  • 音频降噪: 去除背景噪声
  • 多轨混音: 多路音频混合
  • 声道映射: 灵活配置声道布局
  • 重采样: 采样率转换

快速开始

音量标准化
normalizer := audio.NewEBUR128Normalizer(audio.EBUConfig{
    TargetLUFS: -23.0,  // EBU R128 标准
    TruePeak:   -1.0,   // 真峰值限制
})

normalized, err := normalizer.Process(audioData)
音频降噪
denoiser := audio.NewDenoiser(audio.DenoiserConfig{
    ModelPath: "models/denoise.onnx",
    Backend:   audio.BackendONNX,
})

clean, err := denoiser.Process(noisyAudio)
多轨混音
mixer := audio.NewMixer(audio.MixerConfig{
    OutputChannels: 2,
    OutputSampleRate: 48000,
})

mixer.AddTrack(track1, -3.0)  // -3dB
mixer.AddTrack(track2, -6.0)  // -6dB

mixed, err := mixer.Mix()

文件说明

文件 说明
processor.go 音频处理器接口
ebu128.go EBU R128 音量标准化
denoiser.go 音频降噪
mixer.go 多轨混音
resampler.go 重采样

Documentation

Overview

Package audio 提供音频处理功能

本包实现了专业音频处理功能:

  • 音量标准化(EBU R128 / ITU-R BS.1770)
  • 音频降噪
  • 多轨混音
  • 声道映射

所有处理器支持实时流处理和文件处理两种模式。

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidSampleRate = errors.New("audio: invalid sample rate")
	ErrInvalidChannels   = errors.New("audio: invalid channel count")
	ErrInvalidData       = errors.New("audio: invalid audio data")
	ErrBufferTooSmall    = errors.New("audio: buffer too small")
)

错误定义

Functions

This section is empty.

Types

type AudioBuffer

type AudioBuffer struct {
	Data       []float64    // 交错的音频数据
	Channels   int          // 声道数
	SampleRate int          // 采样率
	Samples    int          // 每声道采样数
	Format     SampleFormat // 原始格式
}

AudioBuffer 音频缓冲区

func NewAudioBuffer

func NewAudioBuffer(channels, sampleRate, samples int) *AudioBuffer

NewAudioBuffer 创建音频缓冲区

func (*AudioBuffer) GetSample

func (b *AudioBuffer) GetSample(channel, sample int) float64

GetSample 获取指定声道和位置的采样值

func (*AudioBuffer) SetSample

func (b *AudioBuffer) SetSample(channel, sample int, value float64)

SetSample 设置指定声道和位置的采样值

type ChannelLayout

type ChannelLayout int

ChannelLayout 声道布局

const (
	LayoutMono ChannelLayout = iota
	LayoutStereo
	LayoutSurround51 // 5.1
	LayoutSurround71 // 7.1
)

type ChannelMapper

type ChannelMapper struct {
	// contains filtered or unexported fields
}

ChannelMapper 声道映射器

func NewChannelMapper

func NewChannelMapper(input, output ChannelLayout) *ChannelMapper

NewChannelMapper 创建声道映射器

func (*ChannelMapper) Map

func (m *ChannelMapper) Map(input *AudioBuffer) *AudioBuffer

Map 映射音频

func (*ChannelMapper) SetMapping

func (m *ChannelMapper) SetMapping(outputChannel, inputChannel int, gain float64)

SetMapping 设置自定义映射

type DenoiseConfig

type DenoiseConfig struct {
	Strength    float64 // 降噪强度 (0.0-1.0)
	NoiseFloor  float64 // 噪声底限 (dB)
	AttackTime  float64 // 起始时间 (ms)
	ReleaseTime float64 // 释放时间 (ms)
}

DenoiseConfig 降噪配置

func DefaultDenoiseConfig

func DefaultDenoiseConfig() DenoiseConfig

DefaultDenoiseConfig 返回默认降噪配置

type Denoiser

type Denoiser struct {
	// contains filtered or unexported fields
}

Denoiser 音频降噪器

func NewDenoiser

func NewDenoiser(config DenoiseConfig, sampleRate, channels int) *Denoiser

NewDenoiser 创建降噪器

func (*Denoiser) LearnNoise

func (d *Denoiser) LearnNoise(buffer *AudioBuffer) error

LearnNoise 学习噪声特征

func (*Denoiser) Process

func (d *Denoiser) Process(buffer *AudioBuffer) (*AudioBuffer, error)

Process 处理音频(降噪)

type LoudnessConfig

type LoudnessConfig struct {
	Standard         LoudnessStandard // 响度标准
	TargetLoudness   float64          // 目标响度 (LUFS)
	MaxTruePeak      float64          // 最大真峰值 (dBTP)
	MaxLoudnessRange float64          // 最大响度范围 (LU)
}

LoudnessConfig 响度配置

func DefaultLoudnessConfig

func DefaultLoudnessConfig() LoudnessConfig

DefaultLoudnessConfig 返回默认响度配置(EBU R128)

type LoudnessMeter

type LoudnessMeter struct {
	// contains filtered or unexported fields
}

LoudnessMeter EBU R128 响度计

func NewLoudnessMeter

func NewLoudnessMeter(sampleRate, channels int) *LoudnessMeter

NewLoudnessMeter 创建响度计

func (*LoudnessMeter) GetIntegratedLoudness

func (m *LoudnessMeter) GetIntegratedLoudness() float64

GetIntegratedLoudness 获取积分响度

func (*LoudnessMeter) GetMomentaryLoudness

func (m *LoudnessMeter) GetMomentaryLoudness() float64

GetMomentaryLoudness 获取瞬时响度(400ms)

func (*LoudnessMeter) GetShortTermLoudness

func (m *LoudnessMeter) GetShortTermLoudness() float64

GetShortTermLoudness 获取短期响度(3s)

func (*LoudnessMeter) Process

func (m *LoudnessMeter) Process(buffer *AudioBuffer) error

Process 处理音频块

func (*LoudnessMeter) Reset

func (m *LoudnessMeter) Reset()

Reset 重置响度计

type LoudnessStandard

type LoudnessStandard int

LoudnessStandard 响度标准

const (
	StandardEBUR128 LoudnessStandard = iota // EBU R128 (-23 LUFS)
	StandardATSCA85                         // ATSC A/85 (-24 LKFS)
	StandardSONYJP                          // Sony Japan (-24 LUFS)
	StandardCustom                          // 自定义
)

type Mixer

type Mixer struct {
	// contains filtered or unexported fields
}

Mixer 多轨混音器

func NewMixer

func NewMixer(sampleRate, outputChannels int) *Mixer

NewMixer 创建混音器

func (*Mixer) AddTrack

func (m *Mixer) AddTrack(track *MixerTrack)

AddTrack 添加轨道

func (*Mixer) GetTrack

func (m *Mixer) GetTrack(name string) *MixerTrack

GetTrack 获取轨道

func (*Mixer) Mix

func (m *Mixer) Mix(samples int) *AudioBuffer

Mix 混音

func (*Mixer) RemoveTrack

func (m *Mixer) RemoveTrack(name string)

RemoveTrack 移除轨道

type MixerTrack

type MixerTrack struct {
	Name   string       // 轨道名称
	Volume float64      // 音量 (0.0-2.0)
	Pan    float64      // 声像 (-1.0 左, 0 中, 1.0 右)
	Mute   bool         // 静音
	Solo   bool         // 独奏
	Buffer *AudioBuffer // 音频数据
}

MixerTrack 混音轨道

type Normalizer

type Normalizer struct {
	// contains filtered or unexported fields
}

Normalizer 音量标准化器

func NewNormalizer

func NewNormalizer(config LoudnessConfig, sampleRate, channels int) *Normalizer

NewNormalizer 创建标准化器

func (*Normalizer) Analyze

func (n *Normalizer) Analyze(buffer *AudioBuffer) error

Analyze 分析音频响度

func (*Normalizer) GetGain

func (n *Normalizer) GetGain() float64

GetGain 获取标准化增益

func (*Normalizer) Normalize

func (n *Normalizer) Normalize(buffer *AudioBuffer) *AudioBuffer

Normalize 标准化音频

type SampleFormat

type SampleFormat int

SampleFormat 采样格式

const (
	SampleFormatS16 SampleFormat = iota // 16-bit signed integer
	SampleFormatS32                     // 32-bit signed integer
	SampleFormatF32                     // 32-bit float
	SampleFormatF64                     // 64-bit float
)

Source Files

  • processor.go

Jump to

Keyboard shortcuts

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