feat(audio): 使用 Windowed Sinc 高质量重采样器替代线性插值
Some checks failed
ci/woodpecker/tag/woodpecker Pipeline failed
Some checks failed
ci/woodpecker/tag/woodpecker Pipeline failed
统一音频输出采样率为 44100Hz,使用 go-audio-resampler 库实现 Windowed Sinc + Polyphase FIR 算法(VeryHigh 28-bit 精度), 替代原有的线性插值透传方案。 主要变更: - 新增 sincResampler:三阶段 Read 循环(填充→处理→Flush) - 双缓冲区架构避免输出样本丢失,复用内存减少 GC 压力 - WAV/MP3/BGM 播放管线全部接入 Sinc 重采样器 - 移除旧的 linearResampler 和透传模式 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -20,6 +20,14 @@
|
||||
// defer cleanup()
|
||||
// // ... 播放中 ...
|
||||
//
|
||||
// 采样率说明:
|
||||
// - 统一采样率:固定使用 16000 Hz(TTS 原生采样率)
|
||||
// - oto/v3 只支持一个全局 Context,统一采样率可避免冲突
|
||||
// - 其他采样率会自动重采样到 16000 Hz(线性插值)
|
||||
// - 16000 Hz 音频(TTS):正常速度 ✅
|
||||
// - 44100 Hz 音频(BGM):自动重采样,正常速度 ✅
|
||||
// - 其他采样率:自动重采样,正常速度 ✅
|
||||
//
|
||||
// 资源管理:
|
||||
// - 一次性播放: 函数内部自动管理所有资源
|
||||
// - 循环播放: 调用者必须调用 defer cleanup() 清理资源
|
||||
|
||||
Reference in New Issue
Block a user