# 剪輯音訊 — 線上剪音訊

邊聽邊標出值得留的段落。它們會合成一個檔案回來，就切在你說的位置。

> 一邊播放錄音，一邊把值得留下的段落隨手標出來，然後把這些段落存成一個檔案。切點精確到取樣，接縫不咔噠，什麼都不上傳。

本頁是一個完全在你的瀏覽器裡執行的互動式工具，地址是 https://abox.tools/zh-TW/trim-audio/。你交給它的任何內容都不會被上傳。下面是這個頁面用文字對該工具的全部說明；要使用它，請開啟這個地址。

## 你的錄音**不會上傳**。這裡根本沒有伺服器。

你的錄音由你自己的瀏覽器在你自己的硬體上讀取、標記、剪輯和寫出。這裡沒有任何東西能取或能發，因為這個工具壓根就沒有網路功能。就算有路可走，頁面的另一端也根本沒有伺服器可以接收錄音。

- ✗ 不上傳
- ✗ 不註冊
- ✗ 無水印
- ✓ 想標多少段都行
- ✓ 標在哪就切在哪
- ✓ 斷網可用

## 剪輯音訊檔案的步驟

1. **選一段錄音。** 把 MP3、WAV、FLAC、M4A、Ogg 或 Opus 檔案拖到選擇框裡；要是你想要的是某個影片裡的一段聲音，直接拖影片也行。瀏覽器直接從磁碟上讀，並畫成波形，這期間沒有任何東西發往別處。
2. **邊放邊標出你要的段落。** 在某段該開始的地方按 `I`，該結束的地方按 `O`。想標幾次都行，每一對都會變成下面表格裡的一行，以及波形上的一條色帶。`U` 撤銷最後一次，`空格`播放和暫停，方向鍵跳五秒，按住 `Shift` 時每次挪十毫秒。要是那個瞬間不好抓，就把播放放慢。
3. **修一修標記。** 每一行都能單獨試聽，也能在裡面填一個精確時間來改，還能在順序裡上下移動或者刪掉。選中那段的兩端也可以在波形上拖動，這是把標記落在靜音上而不是落在前面那口氣上的最快辦法。上面的合計，就是成品錄音的時長。
4. **留下它們，或者把它們剪掉。** 留下是常見的方向：成品錄音就是你標出的段落，按順序接起來。剪掉是另一件很多人想做卻少有工具提供的事：把「嗯」「啊」、響起來的電話、說岔了的開頭標出來，剩下的部分會繞開它們接上。
5. **剪好，然後下載。** 每一刀都落在你標的那個取樣上；這裡沒有向關鍵幀取整這回事，因為聲音根本沒有關鍵幀。唯一值得挑的，是每個接縫上加多少淡入淡出：五毫秒足以擋住咔噠聲，也短到根本聽不出是淡入淡出。出來的是一個 WAV，先在頁面上放一遍，然後直接交給瀏覽器的下載。

## 說得更細的版本

[怎麼剪音訊而不掉音質](https://abox.tools/zh-TW/guides/trim-an-audio-file/): 一刀落在哪裡、為什麼音訊能剪得準而影片不能、為什麼接縫有時會「咔」一聲，以及那五毫秒的淡入淡出到底在做什麼。

## 工具箱裡還有

- [音訊編輯](https://abox.tools/zh-TW/edit-audio/): 倒著放、快慢隨你調、把錄輕了的聲音提上來，全在你這臺機器上。
- [PDF 合併與拆分](https://abox.tools/zh-TW/merge-pdf/): 挪動頁面，不用往伺服器跑一趟。
- [PDF 壓縮](https://abox.tools/zh-TW/compress-pdf/): 文件變小，不用送去任何地方。
- [PDF 解鎖](https://abox.tools/zh-TW/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 根本不需要編碼器，它就是取樣加上一小段檔案頭，所以既是誠實的選項，也是唯一在輸出這一步不可能掉畫質的選項。代價是大：立體聲大約每分鐘 10 MB。任何播放器、手機和編輯軟體都能開啟，需要 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`。它們都沒有引入任何能發出請求的東西。
