音訊剪裁

精確剪到某一個取樣,而且告訴你那是第幾個。

本機處理

把檔案拖進來,或點擊選擇

支援 MP3, WAV, M4A, AAC, FLAC, OGG。這台裝置上限 300 MB、30 分鐘,不必註冊。

選一個檔案,這一頁會先把它解碼 —— 取樣率、聲道數、峰值 —— 並在寫出任何東西之前先算出 WAV 的確切大小。這台裝置的上限:單檔 300 MB、音訊總長 30 分鐘。全程不上傳。

    給這一頁一個起點和一個終點,它會保留那一段,並寫成未壓縮的 WAV。解碼和剪裁都在這個瀏覽器分頁裡完成,所以沒有任何東西被上傳,也不用註冊。但這裡有一個真實的上限,而且頁面上就寫著:桌機單檔 300 MB、音訊總長 30 分鐘,手機一半。這一頁還會告訴你剪裁實際落在第幾個取樣,而不是把你輸入的數字原封不動念回來給你。

    為什麼剪裁不可能剛好落在你要的位置

    數位音訊是一串以固定頻率取得的量測值 —— CD 是每秒 44,100 個,多數影片是每秒 48,000 個。剪裁必須落在兩個量測值之間,所以當你在一個 44.1 kHz 的檔案裡要求 12.5 秒,最接近的邊界是第 551,250 個取樣,下一個在 0.0227 毫秒之後。中間沒有東西,任何工具也放不進去。

    這個落差遠遠小到聽不出來,而這正是它值得講清楚的原因。一個安靜地把你輸入的數字念回來的工具比較容易讓人信任,但它同時也是之後會替你藏起真正問題的那一個。所以這一頁每一次都會顯示取樣序號,以及它對應的實際時間。

    同一種誠實也適用在一件比較不明顯的事上。當你的來源是 MP3 或 AAC,解碼出來的音訊不一定從容器宣告的那個瞬間開始 —— 編碼器會在真正的內容前面放一段暖機取樣。如果兩者相差超過幾毫秒,這一頁會講出來,並說明它回報的每一個位置都是以解碼後的音訊為基準量的,因為那才是真的會進到檔案裡的東西。

    為什麼輸出是 WAV,以及它的代價

    剪裁音訊必須先把它解碼。解碼之後要寫出來有兩條路:再壓一次,或者把取樣原樣存下來。再壓一次就是第二次有損壓縮,而它造成的傷害是救不回來的 —— 第二個編碼器會把第一個編碼器留下的失真當成真實訊號、花位元去保留它,同時再疊上自己一套妥協。

    所以這個工具把取樣原樣存下來:WAV 檔案裡的 16-bit PCM,那是每一個播放器、編輯軟體和手機都讀得懂的格式。這裡沒有品質設定,因為根本沒有品質決定要做。

    代價是體積,而且很大。44.1 kHz 立體聲的未壓縮 16-bit 音訊大約是每分鐘 10.1 MB。從一個 4 MB 的 MP3 剪出四分鐘,輸出大約 40 MB。這一頁會在你按下任何按鈕之前把確切數字算出來,所以這個取捨是你刻意做的,不是在下載資料夾裡發現的。

    把這件事講清楚:這裡不會發生第二次有損壓縮。但那跟說結果是「無損」不是同一件事。如果你的來源是 MP3 或 AAC,損失在它第一次被編碼的時候就已經發生,解碼救不回來。這個工具保證的是它不會再加上新的損失。

    可以餵它什麼,以及哪些上限是真的

    解碼是由你瀏覽器自己的音訊解碼器負責的,所以可用的格式就是它本來就帶著的那些:MP3、WAV、FLAC、裝在 M4A 或 MP4 裡的 AAC,通常還有 Ogg Vorbis 與 Opus。如果某個檔案解不開,這一頁會講出來,並且說出它從檔頭讀到的是什麼格式,而不是丟一個籠統的失敗訊息。

    這裡有兩個上限,而且兩個都是技術限制不是商業限制。解碼後的音訊必須以未壓縮的取樣待在記憶體裡,所以單檔上限在桌機是 300 MB、手機是 150 MB,總長度在桌機是 30 分鐘、手機是 15 分鐘。這些數字來自一個瀏覽器分頁實際裝得下多少 —— 立體聲音訊每分鐘約 10 MB,再加上輸入緩衝與輸出緩衝。我們選擇在那之前擋下來,而不是讓分頁在一半的時候死掉、把你的工作弄丟。

    你檔案的取樣率與聲道數會被保留。這件事比聽起來重要:瀏覽器解碼音訊時,一律解成「建立音訊環境時指定的那個取樣率」,所以照最直覺的方式做這個工具,會安靜地把一個 44.1 kHz 的檔案重新取樣成 48 kHz。這一頁會先從檔頭讀出取樣率,再用那個取樣率解碼,所以不會發生重新取樣。讀不到的時候,它會說明自己退回用了哪一個取樣率。

    什麼都不上傳,而且你可以自己查證

    其他線上音訊剪裁站都是把你的檔案送到伺服器、在那邊處理完再給你一個連結。這正是那些站要設檔案大小上限、每日額度和排隊的原因 —— 運算時間對他們是帳單,於是它變成必須配給的東西。這也是為什麼隱私在這裡是真問題而不是空話:一段會議、訪談或語音留言的錄音,往往是一個人手上最敏感的檔案。

    這裡的路徑上完全沒有伺服器。打開開發者工具、看著 Network 分頁剪一個檔案:你的音訊不會出現在任何一筆請求裡。這個網站送出的 Content-Security-Policy 把連線限制在我們自己的來源,而執行這條限制的是你的瀏覽器 —— 所以就算這一頁上的程式想把你的檔案送出去,它也做不到。

    第一次造訪之後,這一頁在完全沒有網路的情況下也能用。程式碼會被你的瀏覽器快取,所以你在飛機上也剪得動音訊。

    常見問題

    為什麼 WAV 比我的 MP3 大這麼多?

    因為它是未壓縮的。44.1 kHz 立體聲大約每分鐘 10.1 MB,而一般 MP3 大約每分鐘 1 MB。這一頁會在你開始之前先算出確切的輸出大小,所以體積永遠不會是意外。

    可以輸出 MP3 嗎?

    這一頁不行。把已經是有損的音訊編成 MP3 就是再壓一次,那是一個真實的代價,值得有一頁把它講明白,而不是藏在一個標示為「剪裁」的工具裡面。

    剪裁精確到影格嗎?

    是精確到取樣,比影格更細。剪裁會落在離你輸入時間最近的那一個整取樣上,在 44.1 kHz 下最多差 0.0114 毫秒,而這一頁會回報它實際用的取樣序號。

    剪裁會讓音質變差嗎?

    沒有任何東西被壓縮第二次,所以這個工具不會加上自己的損失。但它跟「無損」不是同一件事:如果來源是 MP3 或 AAC,第一次編碼就已經丟掉了細節,而解碼救不回來。

    我的音訊會被上傳嗎?

    不會。解碼和剪裁都在你的瀏覽器分頁裡完成。打開開發者工具、看著 Network 分頁跑一次 —— 你的檔案不在任何一筆請求裡,而網站政策本身也會擋掉。

    為什麼會有長度上限?

    因為解碼後的音訊以未壓縮取樣的形式待在記憶體裡 —— 立體聲每分鐘大約 10 MB。桌機超過大約 30 分鐘之後分頁就裝不下了,所以我們先擋下來,而不是跑到一半才失敗。