# 剪辑音频 — 在线剪音频

边听边标出值得留的段落。它们会合成一个文件回来，就切在你说的位置。

> 一边播放录音，一边把值得留下的段落随手标出来，然后把这些段落存成一个文件。切点精确到采样，接缝不咔哒，什么都不上传。

这是一个浏览器交互工具，地址是 https://abox.tools/zh/trim-audio/。文件在运行该浏览器的设备上处理。主动分享和可选联网功能都在页面上说明。下文是它的文字说明；使用工具请打开该地址。

## 你的录音**在浏览器里处理**，无须上传处理。

你的录音由你自己的浏览器在你自己的硬件上读取、标记、剪切和写出。这里没有任何东西能取或能发，因为这个工具压根就没有网络功能。就算有路可走，页面的另一端也根本没有服务器可以接收录音。

- ✗ 不上传
- ✗ 不注册
- ✗ 无水印
- ✓ 想标多少段都行
- ✓ 标在哪就切在哪
- ✓ 断网可用

## 剪辑音频文件的步骤

1. **选一段录音。** 把 MP3、WAV、FLAC、M4A、Ogg 或 Opus 文件拖到选择框里；要是你想要的是某个视频里的一段声音，直接拖视频也行。浏览器直接从磁盘上读，并画成波形，这期间没有任何东西发往别处。
2. **边放边标出你要的段落。** 在某段该开始的地方按 `I`，该结束的地方按 `O`。想标几次都行，每一对都会变成下面表格里的一行，以及波形上的一条色带。`U` 撤销最后一次，`空格`播放和暂停，方向键跳五秒，按住 `Shift` 时每次挪十毫秒。要是那个瞬间不好抓，就把播放放慢。
3. **修一修标记。** 每一行都能单独试听，也能在里面填一个精确时间来改，还能在顺序里上下移动或者删掉。选中那段的两端也可以在波形上拖动，这是把标记落在静音上而不是落在前面那口气上的最快办法。上面的合计，就是成品录音的时长。
4. **留下它们，或者把它们剪掉。** 留下是常见的方向：成品录音就是你标出的段落，按顺序接起来。剪掉是另一件很多人想做却少有工具提供的事：把“嗯”“啊”、响起来的电话、说岔了的开头标出来，剩下的部分会绕开它们接上。
5. **剪好，然后下载。** 每一刀都落在你标的那个采样上；这里没有向关键帧取整这回事，因为声音根本没有关键帧。唯一值得挑的，是每个接缝上加多少淡入淡出：五毫秒足以挡住咔哒声，也短到根本听不出是淡入淡出。出来的是一个 WAV，先在页面上放一遍，然后直接交给浏览器的下载。

## 说得更细的版本

[怎么剪音频而不掉音质](https://abox.tools/zh/guides/trim-an-audio-file/): 一刀落在哪儿、为什么音频能剪得准而视频不能、为什么接缝有时会「咔」一声，以及那五毫秒的淡入淡出到底在做什么。

## 工具箱里还有

- [音频编辑](https://abox.tools/zh/edit-audio/): 倒着放、快慢随你调、把录轻了的声音提上来，全在你这台机器上。
- [PDF 合并与拆分](https://abox.tools/zh/merge-pdf/): 挪动页面，不用往服务器跑一趟。
- [PDF 压缩](https://abox.tools/zh/compress-pdf/): 文档变小，不用送去任何地方。
- [PDF 解锁](https://abox.tools/zh/unlock-pdf/): 权限限制与打开密码不同。页面会说明你的 PDF 使用哪种保护。

## 常见问题

### 我的音频会被传到哪里去吗？

不会。它由你自己的浏览器在你自己的硬件上读取、标记、剪切和写出。这个工具没有服务端，页面的 `Content-Security-Policy` 里写着它允许联系的每一个地址，没有一个属于本站。你要是宁可自己查也不愿听我们说，拔掉网线，照样剪一段试试。

### 同一段录音里能留下好几段吗？

这正是它的用处。播放时想按几次 `I` 和 `O` 就按几次；每一对变成一行，成品文件就是所有行按顺序接起来，其余全部去掉。多数在线剪辑工具只给你一对手柄，问你要留哪一段，这拿来给一段片头曲掐头去尾没问题，但要把一小时的采访听一遍、只留下值得的六个回答，就完全不够用。

### 切点会正好落在我标的位置吗？

会，每一段都会，在任何播放器里都会。这是音频比视频简单的唯一一处：解码后的录音就是一串数字，每一个都自己站得住，所以没有关键帧那样的东西可以往回取整，也没有理由让某一刀提前开始。页面会显示结果从第几个采样开始，那就是你标的位置乘以采样率，再取到最近的整采样。

### 接缝为什么会咔哒，淡入淡出又是干什么的？

因为从一个词的中间切到另一个词的中间，会把两段毫不相干的波形并排放在一起，而喇叭被要求在它们之间跳过去，就会发出一声咔哒。这不是切得不好，不连续本来就是这个声音。办法是在每个接缝两边各加几毫秒的淡入淡出：长到足够让纸盆跟上，短到完全听不出是淡入淡出。默认五毫秒，也可以关掉。淡入淡出只加在真的是切口的那种边上，所以录音最开头或最末尾的边，会原样保留。

### 能反过来把不好的部分剪掉吗？

能。把它们标出来，然后选“把它们剪掉”：这时接起来的是你*没*标的部分，按顺序。同一份标记列表能回答这两个问题，所以你可以来回切换，看着时长变化，而不用把同一处标两遍。

### 标记能保存下来，以后接着做吗？

能。“保存标记”会写出一个纯文本文件，一行一段，起点和终点用逗号隔开；“载入标记”再把它读回来。提供两种格式，纯秒数和 `HH:MM:SS.mmm`，而且两种都和本站视频剪辑写出来的排版一致，所以对着视频做的文件可以拿来配它的音频，反过来也行。标记是细活，没人该做两遍。

### 能打开哪些格式？

凡是你浏览器能解码的都行，实际上就是 MP3、WAV、FLAC、M4A 和 AAC、Ogg Vorbis 和 Opus，以及 MP4、M4V、MOV 和 WebM 视频里的音频。落在外面的还是那份老名单：AVI、WMA，以及大多数 MKV。这个浏览器读不了的文件会带一句说明直接拒掉，而不是走到一半才失败。

### 为什么存成 WAV 而不是 MP3？

因为没有哪个浏览器自带 MP3 编码器，而这个工具拒绝把你的录音送去某台装了编码器的服务器。WAV 根本不需要编码器，它就是采样加上一小段文件头，所以既是诚实的选项，也是唯一在输出这一步不可能掉画质的选项。代价是大：立体声大约每分钟十兆。任何播放器、手机和编辑软件都能打开，需要 MP3 的场合也能从它转出来。要是改成靠复制帧来剪 MP3，文件是小了，但每一刀都会被挪到最近的帧边界，而这个工具存在的意义，恰恰就是不做这种取整。

### 录音时长有上限吗？

工具里没有写死的上限。真正的天花板是内存：整段录音会一次性解码进这个页面，WAV 也是在下载前于内存里拼好的，所以一小时的立体声大约需要不到一 GB 的空间来周转。四 GB 的 WAV 会被直接拒掉，因为这个格式自己的大小字段就描述不了那么大的文件。

### 它免费吗，需要注册吗？

免费，没有账号，不用登录，没有试用期，也没有水印。本站带广告，经费就是从那儿来的，广告拿不到任何关于你录音的信息。

## 这条隐私承诺怎么核实

- **处理在这个浏览器里完成。** 本工具在浏览器里处理输入和结果，处理代码不把它们上传去处理。Content-Security-Policy 限制可用资源和连接目的地，但已允许的主机仍可接收请求。策略不检查载荷，不能单独证明什么都没有发出。请把具体操作的请求与源码核对，或断网完成该本地操作。
- **这里不会去取任何东西。** 这个工具压根就没有网络功能：没有地址可填，没有东西要下载，第一次用也不会拉什么引擎。碰到你音频的每一个字节，都是页面加载时从这个源来的。
- **解码器就是你浏览器里本来就有的那个。** 文件交给 `decodeAudioData` 处理，也就是在 `<audio>` 元素里放一首曲子用的同一段代码。这里没有为了读你的格式而额外发过来什么，也没有为此向这个页面之外的任何东西求助。
- **视频的画面根本不会被解码。** 你把视频拖进来时，只会去要它的音轨。那些帧不会被读取、不会被解码、不会被绘制，也不会被看一眼：这个页面上没有能做到这些的代码，出来的文件里只有声音。
- **剪切是在这台机器的内存里做的一次复制。** 剪切就是每段每声道做一次 `set`：你留下的采样，按你排的顺序挪进一个新数组。唯一被乘过系数的，是每个淡入淡出里的那几百个采样，而具体几个，页面在你按按钮之前就写着。
- **采样是被写下来的，不是重新编码的。** 一个 WAV 就是这个页面手里的那些采样，前面加一段文件头。整条流程里没有任何编码器在替你的录音做决定，也没有什么能称得上“上传”的环节让它发生。
- **标记文件是在页面里做出来的。** 保存标记，就是用屏幕上已有的那些数字写出一个文本文件，直接进你的下载。载入一个，也是在这里读的。两件事都不靠近网络，也都只带着时间数字。
- **Google 加载了什么，又拿不到什么。** 广告脚本和统计脚本来自 Google。关于你录音的信息，一条也没有交给它们，文件、采样、名字、大小、时长、你切在哪儿，都没有。读取、剪切、写出的每一行代码都由这个源提供，也都摆在仓库里。
- **捐助按钮加载了什么，又拿不到什么。** 页首那个“Buy me a coffee”按钮由 cdnjs.buymeacoffee.com 的脚本画出来，字体取自 Google Fonts。它不过是个链接，不上报访问，也拿不到关于你或你录音的任何东西。
- **断网也照样能用。** 断开网络，这个页面上的一切照常工作。这是最省事的一条证明。

**你可以自己核对。**上面这些不用你信。这个页面是仓库里的模板和配置生成出来的，构建脚本你能读，也能自己跑一遍，跑出来的结果就提交在 `dist` 分支上。拿实际发给你的内容，跟你自己从源码构建出来的结果对一遍就知道了： https://github.com/A-Box-of-Tools/website

最值得先读的几个文件：`config/site.toml` 里是 Content-Security-Policy，标记和它们保存成的文件在 `src/segments.js`，把你的文件交给浏览器自带解码器的那二十行在 `src/shared/audio-decode.js`，把一个标记换算成一段采样并逐个复制的循环在 `src/trim.js`，写在这些采样前面的文件头在 `src/shared/wav.js`。它们都没有引入任何能发出请求的东西。
