Expand description
§Audio Processing Module - 音频处理模块
这个模块提供了完整的音频处理功能,包括格式转换、重采样、元数据提取等。 设计目标是提供简单易用的 API,同时保持高性能和可靠性。
§主要功能
§音频格式支持
- WAV: 原生支持,包括各种 PCM 格式
- MP3: 通过 FFmpeg 转换支持
- FLAC: 通过 FFmpeg 转换支持
- M4A: 通过 FFmpeg 转换支持
- OGG: 通过 FFmpeg 转换支持
§核心功能
- 格式检测: 自动识别音频文件格式和参数
- 格式转换: 将任意格式转换为 Whisper 兼容格式
- 音频重采样: 高质量的采样率转换
- 元数据提取: 获取音频文件的详细信息
- 流式处理: 支持分块处理的流式重采样
§设计理念
- 最小化 API: 保持接口简洁,易于集成
- 零拷贝: 尽可能避免不必要的数据拷贝
- 错误处理: 提供详细的错误信息和恢复建议
- 跨平台: 支持 Windows、macOS 和 Linux
- 高性能: 使用优化的算法和并行处理
§使用示例
§基本格式检测
use rs_voice_toolkit_audio::{probe, AudioError};
async fn get_audio_info() -> Result<(), AudioError> {
let metadata = probe("audio/song.mp3")?;
println!("采样率: {} Hz", metadata.sample_rate);
println!("声道数: {}", metadata.channels);
println!("时长: {} ms", metadata.duration_ms.unwrap_or(0));
println!("格式: {:?}", metadata.format);
Ok(())
}§转换为 Whisper 兼容格式
use rs_voice_toolkit_audio::{ensure_whisper_compatible, AudioError};
async fn convert_for_whisper() -> Result<(), AudioError> {
let compatible = ensure_whisper_compatible(
"input.mp3",
Some("output_whisper.wav".into())
)?;
println!("转换完成: {}", compatible.path.display());
Ok(())
}§音频重采样
use rs_voice_toolkit_audio::{resample, AudioError};
async fn resample_audio() -> Result<(), AudioError> {
let input_samples: Vec<f32> = vec/*[音频数据]*/;
// 从 44100Hz 重采样到 16000Hz
let resampled = resample(&input_samples, 44100, 16000)?;
println!("重采样完成: {} -> {} 样本",
input_samples.len(),
resampled.samples.len()
);
println!("新采样率: {} Hz", resampled.sample_rate);
Ok(())
}§流式重采样
use rs_voice_toolkit_audio::{StreamingResampler, AudioError};
async fn stream_resample() -> Result<(), AudioError> {
let mut resampler = StreamingResampler::new(44100, 16000)?;
// 分块处理音频数据
let chunks: Vec<Vec<f32>> = vec/*[音频块]*/;
let mut all_output = Vec::new();
for chunk in chunks {
let output = resampler.process_chunk(&chunk)?;
all_output.extend(output);
}
// 处理剩余数据
let final_output = resampler.finalize()?;
all_output.extend(final_output);
println!("流式重采样完成,总计 {} 个样本", all_output.len());
Ok(())
}§性能特性
- 高质量重采样: 使用 Sinc 插值算法,保持音频质量
- 内存效率: 支持流式处理,避免大内存占用
- 并行处理: 利用多核 CPU 进行并行计算
- 缓存优化: 优化内存访问模式
§错误处理
模块提供了详细的错误类型,帮助开发者快速定位问题:
AudioError::FileNotFound: 文件不存在AudioError::FormatNotSupported: 格式不支持AudioError::SampleRateMismatch: 采样率不匹配AudioError::ResampleError: 重采样失败AudioError::FfmpegExecution: FFmpeg 执行错误
§系统要求
- FFmpeg: 用于格式转换(自动下载)
- 内存: 建议至少 512MB 可用内存
- CPU: 支持多线程处理
§依赖项
ffmpeg-sidecar: 跨平台 FFmpeg 集成hound: WAV 文件读写rubato: 高质量音频重采样serde: 序列化支持
Structs§
- Audio
Config - 音频参数配置
- Audio
Meta - Compatible
Wav - Resampled
- Streaming
Resampler - 流式重采样器 支持分块输入的连续重采样,使用 rubato 库实现
Enums§
- Audio
Error - Audio
Format - 音频格式枚举
Functions§
- ensure_
whisper_ compatible - 确保音频文件与 Whisper 兼容
- probe
- 探测音频文件的元数据
- resample