AudioCV v2.0 🎤 音频处理 · 视觉分析
一个受OpenCV启发的现代化C++音频库,提供从文件I/O、信号处理、特征分析到量子/神经音频的完整工具链。
📖 概述
AudioCV 将音频处理与计算机视觉的直觉相结合,提供统一的 AudioBuffer 结构和数百个处理函数。支持实时流、离线分析、高级可视化,以及实验性的量子傅里叶变换、脑波合成和混沌加密。
核心组件
- AudioBuffer —— 多声道、多数据类型容器
- AudioReader / AudioWriter —— 基于libsndfile/FFmpeg
- AudioAnalyzer —— 频谱、MFCC、音高、节拍、响度 (EBU R128)
- AudioProcessor —— 滤波器、重采样、压缩、STFT
- AudioVisualizer —— OpenCV波形、频谱图、梅尔谱、VU表
- RealTimeProcessor —— 流式压缩器+均衡器
- 量子/超分辨率/神经/混沌 —— 前沿实验模块
✨ 特性一览
📦 多格式支持
WAV, MP3, FLAC, OGG (libsndfile/FFmpeg)
⚡ 实时I/O
PortAudio 驱动,低延迟录音/播放
📊 200+ 特征
MFCC, 色谱图, 音高(YIN), 节拍, 响度(R128)
🎛️ 效果器
压缩器、均衡器、混响、降噪、HPSS分离
📈 可视化
波形/频谱/梅尔谱/瀑布图/VU表/相位图
🌀 量子模块
QFT, 相位估计, 退火去噪, Grover放大
✨ 超分辨率
神经网络/小波上采样, 带宽扩展
🧠 脑波音乐
EEG δ/θ/α/β/γ 合成, 神经反馈
🔥 混沌加密
Logistic/Henon/Lorenz 加密, 水印, 隐写
⚡ 快速开始
#include <audiocv/audiocv.hpp>
using namespace audiocv;
int main() {
// 读取音频
AudioBuffer audio = AudioReader::read("track.wav");
// 转换为单声道并提取特征
AudioBuffer mono = audio.toMono();
auto features = AudioAnalyzer::extractFeatures(mono);
auto loudness = AudioAnalyzer::analyzeLoudness(mono);
std::cout << "BPM: " << detectTempo(mono).bpm << "\n";
std::cout << "LUFS: " << loudness.integrated_loudness << "\n";
// 低通滤波 + 保存
AudioBuffer filtered = AudioProcessor::filter(mono, FILTER_LOWPASS, 1000.0);
AudioWriter::write("filtered.wav", filtered);
// 可视化
cv::Mat spec = AudioVisualizer::createSpectrogram(audio, 800, 400);
AudioVisualizer::saveImage(spec, "spec.png");
return 0;
}
📦 安装与依赖
Ubuntu/Debian
sudo apt install build-essential cmake libsndfile1-dev libportaudio2 portaudio19-dev \
libfftw3-dev libopencv-dev libgtest-dev
CMake 集成
find_package(AudioCV REQUIRED)
target_link_libraries(my_app PRIVATE audiocv)
编译选项
cmake .. -DWITH_QUANTUM=ON -DWITH_SUPERRES=ON -DWITH_NEURO=ON -DWITH_CHAOTIC=ON
🧱 核心模块 (audiocv::core)
AudioBuffer 是数据中枢,支持多声道、多种数据类型。
AudioBuffer buf(2, 44100, 44100, AUDIO_F32); // 2声道, 1秒
float* left = buf.ptr<float>(0);
buf.toMono(); // 转为单声道
buf.slice(0, 22050); // 前0.5秒
buf.normalize();
Spectrogram 存储复数STFT结果。
📂 输入/输出 (audiocv::io)
AudioReader / AudioWriter
AudioBuffer in = AudioReader::read("in.wav");
AudioWriteParams params; params.format = FORMAT_FLAC;
AudioWriter::write("out.flac", in, params);
实时捕获与播放
AudioCapture cap(0, 1, 16000); cap.open();
AudioBuffer chunk(1, 512, 16000);
cap.read(chunk);
AudioPlayback play(0, 2, 44100); play.open();
play.write(chunk);
🔬 分析模块 (audiocv::analysis)
提供 SpectralFeatures, TempoAnalysis, LoudnessAnalysis 等。
auto pitch = AudioAnalyzer::detectPitch(audio, PITCH_YIN);
auto tempo = AudioAnalyzer::detectTempo(audio); // BPM, 节拍
auto mfcc = AudioAnalyzer::extractMFCC(audio); // 每帧MFCC
auto loud = AudioAnalyzer::analyzeLoudness(audio);
std::cout << "Integrated loudness: " << loud.integrated_loudness << " LUFS\n";
特征导出
AudioAnalyzer::exportFeaturesToCSV(features, "feats.csv");
🎛️ 处理模块 (audiocv::processing)
// 低通滤波
auto filtered = AudioProcessor::filter(audio, FILTER_LOWPASS, 1000.0);
// 重采样 44.1k -> 22.05k
auto resampled = AudioProcessor::resample(audio, 22050);
// 压缩器
auto comp = AudioProcessor::compress(audio, -20.0, 4.0);
// STFT / ISTFT
Spectrogram stft = AudioProcessor::stft(audio);
AudioBuffer restored = AudioProcessor::istft(stft);
还包含降噪、混响、HPSS分离、回声消除等。
📈 可视化 (audiocv::visualization)
cv::Mat wave = AudioVisualizer::createWaveform(audio, 1200, 300, {0});
cv::Mat spec = AudioVisualizer::createSpectrogram(audio, 800, 400);
cv::Mat mel = AudioVisualizer::createMelSpectrogram(audio, 800, 400, 128);
cv::Mat vu = AudioVisualizer::createVUMeter(audio, 100, 400);
AudioVisualizer::showImage(spec, "频谱图");
AudioVisualizer::saveImage(mel, "mel.png");
内置实时可视化器 RealTimeVisualizer 用于流式更新。
⏱️ 实时处理 (audiocv::realtime)
RealTimeProcessor proc(2, 44100);
proc.addCompressor(-20.0, 4.0);
proc.addEqualizer({100,1000,5000}, {2.0,0.0,-3.0});
proc.process(inputBuffer); // 就地处理
// 原始回调风格
float in[256], out[256];
proc.process(in, out, 256);
🌀 量子音频 (audiocv::quantum)
基于 QuantumFourierTransform (QFT) 的实验性算法。
QuantumFourierTransform qft(12); // 12 qubits
auto phases = qft.quantumPhaseEstimation(audio);
auto denoised = qft.quantumAnnealingDenoise(noisy, 1.0f, 500);
auto amplified = qft.quantumAmplitudeAmplification(audio, oracle);
可生成相位图像、量子退火去噪等。
✨ 超分辨率 (audiocv::superres)
SuperResolutionAudio sr(2, MODEL_NEURAL);
std::vector<float> up = sr.upscale(lowRes, 0); // 2x 上采样
std::vector<float> hf = sr.bandwidthExtension(lowRes, 2.0f); // 高频扩展
auto exampleBased = sr.exampleBasedUpscale(lowRes, highResExample);
支持线性/立方/Lanczos/神经网络/小波模型。
🧠 神经音频接口 (audiocv::neuro)
EEGAudioSynthesizer eegSynth(44100);
// 假设 eeg_channels 为多通道脑电数据
std::vector<float> brainMusic = eegSynth.synthesizeFromEEG(eeg_channels, 10000);
auto powers = eegSynth.extractBrainWaveFeatures(eeg_channels[0]); // δ/θ/α/β/γ 能量
支持将脑波映射为音频,用于神经反馈或音乐治疗研究。
🔥 混沌加密 / 隐写 (audiocv::chaotic)
ChaosEncryptor encryptor(0.4, 3.9, LOGISTIC_MAP);
auto encrypted = encryptor.encryptAudio(wavData, "key");
auto decrypted = encryptor.decryptAudio(encrypted, "key");
// 嵌入水印
std::vector<uint8_t> watermark = {1,2,3,4};
auto watermarked = encryptor.embedWatermark(wavData, watermark, 0.01f);
// 生成混沌吸引子用于可视化
auto attractor = encryptor.generateAttractor(10000);
💡 完整示例:实时播放 + 交互滤波
#include <audiocv/audiocv.hpp>
#include <thread>
using namespace audiocv;
int main(int argc, char** argv) {
AudioBuffer audio = AudioReader::read(argv[1]);
AudioPlayback playback(-1, audio.channels(), audio.sample_rate());
playback.open();
RealTimeProcessor processor(audio.channels(), audio.sample_rate());
processor.addCompressor(-20.0, 4.0);
std::atomic<bool> stop{false};
std::thread input([&]{
while(!stop) if(std::cin.get() == 'q') stop = true;
});
int pos = 0, chunk = 1024;
while(pos < audio.frames() && !stop) {
AudioBuffer block(audio.channels(), chunk, audio.sample_rate());
for(int c=0; c(c)+pos, audio.ptr(c)+pos+chunk, block.ptr(c));
processor.process(block);
playback.write(block);
pos += chunk;
}
stop = true; input.join();
return 0;
}
更多示例见 examples/ 目录 (basic_usage, spectrogram, quantum_audio, superres_audio 等)。
⚙️ 核心配置选项 (CMake)
| 选项 | 默认 | 说明 |
|---|---|---|
| WITH_OPENCV | ON | 启用可视化 |
| WITH_FFTW | ON | 启用FFT分析 |
| WITH_SNDFILE | ON | libsndfile支持 |
| WITH_PORT_AUDIO | ON | 实时音频I/O |
| WITH_QUANTUM | ON | 量子音频模块 |
| WITH_SUPERRES | ON | 超分辨率模块 |
| WITH_NEURO | ON | 神经音频(EEG) |
| WITH_CHAOTIC | ON | 混沌加密/隐写 |
🔍 故障排除
-DWITH_FFMPEG=ON 并安装libavformat-dev等。AudioCapture::listDevices() 枚举并指定正确的device_id。📝 更新日志
版本 2.0.0 (2026-03-17)
- ✨ 新增量子音频模块 (QFT, 相位估计, 退火去噪)
- ✨ 新增超分辨率音频 (神经网络/小波)
- ✨ 新增神经音频接口 (EEG合成)
- ✨ 新增混沌加密/隐写模块
- ⚡ 重构RealTimeProcessor,性能提升
- 📊 完善响度分析(EBU R128)
版本 1.2.0 (2025-11-20)
- 添加MFCC、色谱图、音高YIN算法
⚖️ 许可证
MIT License
Copyright (c) 2026 AudioCV Contributors
本库采用MIT许可证,可自由用于商业及非商业项目,需保留版权声明。
© 2026 AudioCV 开发团队 · 文档版本 2.0 · 生成于 2026-03-17