Volume Changer 編輯音訊的方式,就像無損縮放圖片能保留原始像素一樣:在瀏覽器中解碼整個檔案,將每個有限樣本乘以介於 0% 到 400% 之間的所選線性增益,然後匯出 16 位元 PCM WAV,整個過程絕不透過有損編解碼器重新編碼來源。百分比是直接的振幅乘數,而非分貝控制 —— 在 100% 時每個樣本維持其解碼後的值,在 200% 時每個樣本會翻倍(在削波前大約提升 6.02 dB),而在 0% 時輸出為靜音,但原始長度、取樣率與聲道數都會保留。乘法後跨越 ±1 滿刻度邊界的任何樣本都會被計數並削波,報表會顯示產生的峰值。由於解碼、增益、預覽和編碼全都在當前分頁中進行,檔案不會離開你的裝置,也不會有佇列或外部服務來處理它。

change image size without losing quality
在不損失品質的情況下變更音訊音量

變更音訊音量時「無品質損失」的意義

在不損失品質的情況下變更圖片大小時,運作原則是保留原始像素並避免重新壓縮。同樣的三個概念也適用於音訊音量編輯,它們構成你在任何聲稱能保持音訊「原貌」的工具中應該尋找的契約:

  • 不進行有損重新編碼。來源檔案只解碼一次,套用增益後,結果以非壓縮音訊寫入。原本的 MP3、AAC、Ogg 或 FLAC 壓縮設定不會被重複使用,因此你不會在一層有損之上再疊加另一層。
  • 保留解碼後的屬性。長度、取樣率與聲道數與解碼後的來源完全相同,這表示你儲存的 WAV 會以與輸入相同的速度與相同的喇叭配置播放。
  • 保留原始檔案。非破壞性的工作流程一定會保留來源檔案,以便日後可以重新編輯、復原或稽核。

大多數日常的音量抱怨(「檔案聽起來比原始版本小聲」)來自於工具在套用增益後又透過有損編碼器重新儲存。壓縮步驟本身並不會降低音量,但反覆的編碼-解碼循環可能會讓暫態變得模糊,並減少高頻的細節。避免這種來回處理,就像是縮放圖片時不再透過 JPEG 重新儲存一樣。

為什麼 Volume Changer 能從頭到尾保留音訊品質

Volume Changer 的設計正是圍繞著這項契約。整個管線在當前瀏覽器分頁中使用 Web Audio API 執行,具體來說是使用 decodeAudioData 將完整的編碼檔案轉換為浮點聲道樣本(請參閱 W3C Web Audio API 規範以了解底層方法)。解碼完成後,每個有限樣本都會乘以所選的線性增益,結果僅在必要時被削波至數位滿刻度,檔案會以 16 位元 PCM WAV 寫入。不會上傳、排入佇列,也不會被外部服務分析。

有三個細節讓這條管線在實務上能避免損失:

  1. 線性增益,而非分貝曲線。百分比是直接的振幅乘數。在 100% 時,每個有限樣本乘以 1,解碼後的振幅不變。在 200% 時,每個有限樣本乘以 2,在任何削波發生之前,振幅大約增加 6.02 dB。在 0% 時,輸出為靜音,但長度、取樣率與聲道數會被精確保留。
  2. 削波會被回報,而非隱藏。乘法後超過 +1 或低於 -1 的樣本會被削波至支援的滿刻度範圍。下載的檔案接著會回報有多少樣本跨越了該邊界,並顯示削波後的峰值。削波樣本數非零代表增益可能引入了可聽見的失真,你可以調低百分比並重新匯出。
  3. 輸出是 WAV,而非重新編碼的 MP3 或 AAC。WAV 可以在本機編碼,無需新增額外的編解碼器或編碼器相依,產生的檔案可用任何音訊編輯器檢查。匯出的容器是 RIFF,採用 little-endian 整數欄位,格式代碼 1 代表非壓縮 PCM,符合 Microsoft WAVEFORMATEX 結構所記載的格式。其代價是檔案大小:WAV 通常遠大於壓縮後的來源,但它消除了額外一層的有損來回處理。

不損失品質地變更音訊音量 —— 逐步說明

以下是這個工具的運作程序:

  1. 選擇一個不超過 50 MiB 的支援音訊檔案,並等待檔案名稱出現在輸入區域中。副檔名並不能保證媒體可以被解碼 —— 格式支援取決於瀏覽器、作業系統與編解碼器版本。要讓操作順利進行,瀏覽器必須能解碼 MP3、WAV、M4A、AAC、Ogg、WebM 或 FLAC。
  2. 將線性輸出音量設定在 0% 到 400% 之間,然後選擇 Change volume。從接近 100% 開始是最安全的做法,因為它會讓每個有限樣本維持其解碼後的值,同時讓你驗證管線的其餘部分。
  3. 預覽 WAV,檢查回報的峰值與削波樣本數,並在聽完整個結果後再下載。下載的檔名以 -volume-adjusted.wav 結尾。如果解碼失敗,工具會停止並顯示錯誤,而不會產生空白或不完整的輸出,這能防止你交付一個損毀的檔案。

解讀百分比、峰值與削波樣本報表

百分比控制項是線性乘數,下表概述每個數值對有限樣本的影響。「削波邊界」是 16 位元 PCM 能表示的 ±1 數位滿刻度範圍。

百分比線性乘數對有限樣本的影響大約的分貝位移備註
0%0樣本寫為 0−∞ (靜音)保留長度、取樣率、聲道數
50%0.5樣本減半−6.02 dB半振幅
100%1樣本不變0 dB恆等運算
200%2樣本翻倍+6.02 dB兩倍線性振幅
400%4樣本變為四倍+12.04 dB四倍線性振幅

分貝欄使用標準的振幅域公式 20 × log10(乘數)。例如,線性振幅加倍就是 20 × log10(2) = 20 × 0.30103 ≈ 6.0206 dB。這是振幅域的測量,而非感知響度的測量;感知響度還會取決於頻率平衡、動態與聆聽環境。

套用增益後,工具會回報削波後的峰值振幅,以及跨越削波邊界的樣本數。削波樣本數大於零代表波形中有部分被切平;如果數量很大,調低百分比並重新匯出是標準的修正方式。

決定編輯能否完成的限制

即使有乾淨的本機管線,仍有四項硬性限制決定該操作能否在一般筆記型電腦或行動裝置上完成:

  • 檔案大小:輸入檔案上限 50 MiB。
  • 解碼後長度:上限五分鐘。
  • 聲道數:上限八個聲道。
  • 解碼後的總聲道樣本數:上限 3000 萬。

這些限制是為了限制記憶體配置與主執行緒的工作量。一個小的壓縮檔在解碼後仍可能大幅膨脹,因此即使選定的檔案遠低於 50 MiB,解碼後的限制仍然重要。如果工作超過這些限制中的任何一項,工具會停止,而不會產生不完整的結果。更換檔案或百分比會使先前的結果失效並撤銷其暫存物件 URL,而工作識別碼能防止舊的非同步解碼覆蓋較新的設定。

安全編輯的訣竅

幾個習慣能讓工作流程更可預測:

  • 從接近 100% 開始,並且只在預覽完整輸出後再稍微往上調。響度差異常常出現在音軌的開頭或結尾,因此要從頭到尾完整聆聽。
  • 檢查削波樣本數。如果它是非零值,而且音訊聽起來很刺耳,就把百分比降低四分之一並重新匯出。
  • 保留原始檔案。這個操作無法還原來源中已被削波的資訊,而反覆的 PCM 轉換會讓版本控制變得更困難。
  • 在下載的檔案取代任何正式音訊之前,請驗證長度與聲道數。匯出的 WAV 使用原始解碼後的取樣率與聲道數,在帶正負號的 16 位元音訊中,負滿刻度對應到 -32768,正滿刻度對應到 32767。
  • 請記得線性增益並非響度標準化。此工具不會計算 LUFS、true peak、replay gain 或任何特定平台的目標值。若要用於母帶處理或廣播交付,請使用經過測量的音訊工作流程並監控匯出的檔案。

用於解碼的 AudioContext 在處理完畢後會關閉,產生的下載連結仍是暫時性的 —— 當分頁關閉或被新操作取代時就會消失。此工具不會保留來源標記、專輯封面、章節、循環點、cue 標記、編碼器中繼資料或原始壓縮設定,因此匯出的檔案在 RIFF PCM 容器中只包含解碼後的波形。