首页 > 解决方案 > 将 2 个 wav 文件合并为一首同步歌曲

问题描述

我有一个程序可以在播放音乐时记录来自麦克风的输入。完成后,声音将保存为 wav 文件。我想将该 wav 文件与录制期间播放的 wav 文件歌曲结合起来。示例:song1.wav 在人唱歌时在背景中播放。那个人唱歌的录音现在是recording1.wav。我想将song1.wav和recording1.wav结合起来同时播放,成为一首歌曲录制finalsong1.wav。我是 Java 的初学者,还没有找到解决方案,甚至还没有找到如何连接它们的起点,这与我想做的相反。

标签: javajavasound

解决方案


我将列出所涉及的步骤。这些步骤已被多次介绍,应该很容易研究。

  • 对于两个 wav 文件,使用AudioInputStream.

  • 当数据到达时,将字节转换为有符号的 PCM。如果格式是 16 位,则 PCM 可以是有符号的短裤,或缩放/标准化为范围从 -1 到 1 的浮点数。

  • 使用加法来组合相应的数据(例如,第一帧右声道语音和第一帧音乐右声道)。如果信号太“热”,可能需要强制执行 min 和 max 函数以防止数据超出范围的界限,因为当它发生时这听起来真的很糟糕。

  • 根据音频格式将求和、签名的 PCM 数据转换回字节。

  • 写入wav文件。

我知道可以混合曲目进行播放的工具,但我不记得有一种工具会自动将结果保存到wav. 一个可能存在于某个地方,或者应该很容易编写或委托。


推荐阅读