在Golang中,推荐使用以下音频录音合并库,它们功能强大且易于集成:
-
go-audio
- 支持WAV、AIFF等格式的读写和处理。
- 提供音频数据合并、剪切等基础功能。
- 示例代码(合并两个WAV文件):
package main
import (
"github.com/go-audio/audio"
"github.com/go-audio/wav"
"os"
)
func main() {
// 打开第一个WAV文件
file1, _ := os.Open("input1.wav")
decoder1 := wav.NewDecoder(file1)
buf1, _ := decoder1.FullPCMBuffer()
// 打开第二个WAV文件
file2, _ := os.Open("input2.wav")
decoder2 := wav.NewDecoder(file2)
buf2, _ := decoder2.FullPCMBuffer()
// 合并音频数据
merged := &audio.IntBuffer{
Data: append(buf1.Data, buf2.Data...),
Format: buf1.Format,
}
// 输出合并后的文件
out, _ := os.Create("merged.wav")
encoder := wav.NewEncoder(out, merged.Format.SampleRate, merged.Format.BitDepth, merged.Format.NumChannels, 1)
encoder.Write(merged)
encoder.Close()
}
-
beep
-
portaudio
- 绑定PortAudio库,适合实时录音和处理。
- 可结合其他库(如go-audio)实现录音合并。
选择建议:
- 若处理WAV文件,优先用go-audio;
- 需实时流处理时选beep;
- 涉及底层录音操作用portaudio。
注意:合并前需确保音频参数(采样率、位深等)一致,否则需先转换格式。