🧰 UtlKit

音频合并:30 秒 + 45 秒 + 15 秒三段合成 1 分 30 秒,采样率统一与 11 倍 WAV/MP3 体积差

在浏览器里合并音频片段:30 秒、45 秒与 15 秒经解码、修剪、排序与采样率统一后成为 1 个 1 分 30 秒的文件,导出为每秒 176400 字节的 16 位立体声 WAV 或每秒 16000 字节的 128 kbps MP3,11 倍的体积差距,整条管线本地运行、无上传。

合并音频是解码,不是计算:每个文件先被解码成同一串原始数字,保留的部分首尾相接,再整体编码回一个文件。音频合并在浏览器里跑完整条管线。放入 3 段片段——0:30 的开头、0:45 的中间、0:15 的结尾——用拖拽手柄修剪每段,用上下按钮排序,合并输出就是 1 个 1 分 30 秒的文件,导出为每秒 176400 字节的 16 位立体声 WAV,或每秒 16000 字节的 128 kbps MP3,体积差距 11 倍。全程无上传:Web Audio API 在持有这些文件的机器上完成解码、重采样与编码。

合并之前:修剪、裁剪与排序

每条轨道渲染出带两个拖拽手柄的波形。左手柄移动起点,右手柄移动终点,选中区域高亮,每个手柄旁跟随 M:SS 格式的时间标签。可选的最短窗口是 0.05 秒,在 44100 赫兹下恰好是 2205 个采样,所以每次裁剪都有一个不会跌破的硬下限。上下按钮重排轨道列表,列表顺序就是输出顺序:排最上面的片段在合并文件里最先播放。点击波形设置播放游标,轨道上的播放按钮从游标处开始,这就是确认裁剪之前的试听方式。如果手里已经有一个要剪短的单文件,音频修剪器把同样的手柄拖拽作为独立步骤做完,把结果作为文件交还给你,随时可以与其他文件合并。

浏览器能解码的格式

合并器接受浏览器解码器能接受的一切:在常见平台上是 MP3、WAV、OGG、AAC 与 M4A,全部走同一条 Web Audio 路径解码成同一种中间形态。解码失败的文件被跳过,而不是当成致命错误——其余轨道照常合并——这是一个有意的不对称。工具优先保证可用片段进入同一个文件,坏文件的代价只是少了一段,修好后重新导入即可。当格式落在解码窗口之外,或容器在当前平台上比较冷门时,先修正是用音频转换器把它转成 WAV 或 MP3,再回来合并。合并前先转换还能提前统一采样率,缩短重采样步骤,让整条管线从一开始就只有一种时钟。

一种采样率对应所有时钟

拼接需要一种时钟。两个不同采样率的片段每秒包含的采样数不同,直接首尾相接会让没被选中的那个速率被拉伸或压缩。合并器用轨道中最高的采样率解决这件事,其余轨道重采样到它:0:30 的 48000 赫兹片段与 0:45 的 44100 赫兹片段放在一起,整个合并就按 48000 赫兹跑,44100 那段被重采样上去。重采样器是浏览器的 OfflineAudioContext,变换速率的同时做低通滤波。这个滤波很关键,因为朴素的分拣——减半速率时直接丢掉每两个采样中的一个——会产生混叠,给高频加上一层金属边。输出为 MP3 时,编码器只认识一张固定速率表,所以高采样率的源走一条干净的减半链:96000 变 48000,88200 变 44100,192000 变 96000 再变 48000,176400 变 88200 再变 44100。

输出分流:WAV 与 MP3

两种输出装的是同一批采样,只是成本结构不同。WAV 在 44 字节的 RIFF 头后面写 16 位 PCM:44100 赫兹立体声下是每秒 176400 字节,所以 1 分 30 秒的合并文件是 15876044 字节,约 15.1 MiB,而且这个体积是精确的——时长乘速率乘 2 个声道乘 2 字节,再加头。MP3 按 128 kbps 编码,折出来是每秒 16000 字节,同样的 1 分 30 秒落在 1440000 字节,约 1.4 MiB。比例是 11 比 1,而且任意时长都保持 11 比 1,因为两种格式都随时长线性增长。取舍在于无损对上有损:WAV 保留每个采样,MP3 保留心理声学模型认为听得见的部分。单声道源被复制到两个声道,而不是用静音填充,所以声像保持居中。留底母版或还要继续编辑选 WAV;发送、嵌入视频或上传到托管平台选 MP3。需要估算工具没显示出来的时长对应的体积时,文件大小转换器做同样的每秒乘法。

从录音到合并

合并是录制工作流的后半段。录音机在同样的浏览器内 Web Audio 路径上录制,录下的片段可以保存后放进合并器,与已有文件并排,剪掉抢拍的部分,合并进最终版本,全程不离开站点,也不经过任何录音服务的中间上传。这正是播客与旁白编辑手工做的事:分开录,再组装。组装放在客户端做,意味着原始录音不必交给任何人,当录音是客户会议、排练或所有者不想贴进网页表单的内容时,这一点尤其重要。

合并模式出现的地方

合并是一个通用模式:解码成公共形态,重排,拼接,重新编码——文件格式只是进出两端的包装。同样的形状在浏览器里也贯穿文档与图片。PDF 合并器把多个 PDF 的页面按你选定的顺序拼到一起,图片转 PDF把一叠图片组装成单个文档,图片裁剪指南覆盖的是相邻的准备工作:图片先被裁到真正重要的区域,再被打包。它们共享的性质是公共中间形态承担全部工作,格式留在两端,而且整条管线都在本地运行:音频、页面与像素都不离开这台机器,这正是合并工具应当具备的性质。

相关工具

常见问题

MP3 和 WAV 文件可以合并成同一个输出吗?

可以。合并器把每个文件解码成同一串采样,所以 0:30 的 MP3 与 0:45 的 WAV 在首尾相接之前已经是同一种形态。输出是单一格式的单文件:每秒 176400 字节的 16 位立体声 WAV,或每秒 16000 字节的 128 kbps MP3。混合格式输入是常态,不是特例。

为什么合并后的文件总是立体声?

输出缓冲无论输入什么都按 2 个声道构建。单声道源被复制到两个声道——双单声道——而不是用单侧静音填充,所以混音居中,声像保持中立。立体声源的 2 个声道原样保留。这也是为什么同样时长的单声道合并与立体声合并体积相同。

为什么合并前我的片段会被重采样?

拼接要求所有轨道共用一种采样率。合并器取轨道中最高的速率,用浏览器的 OfflineAudioContext 把其余轨道重采样到它,变换速率的同时做低通滤波。没有这个滤波的朴素分拣会产生混叠。所以 44100 赫兹的片段与 48000 赫兹的片段放在一起,最终落在 48000 赫兹,44100 那侧被向上重采样,而不是反过来。

合并后的文件会有多大?

随时长线性增长。44100 赫兹立体声 WAV 是每秒 176400 字节,所以 1 分 30 秒的合并是 15876044 字节,约 15.1 MiB。128 kbps MP3 是每秒 16000 字节,同样的 1 分 30 秒是 1440000 字节,约 1.4 MiB。比例对任意时长都保持 11 比 1,这也是长合并里格式选择真正显现的地方。

我的音频会被上传到服务器吗?

不会。整条管线都在浏览器里运行:decodeAudioData、重采样器与编码器都是本机上的 Web Audio 与 Web API。文件从不离开这台机器,这正是该工具能用于客户会议、排练及其他所有者不想发送出去的任何录音的原因。

相关文章