反轉音訊出錯通常代表以下三種情況之一:檔案無法解碼、檔案超過文件明定的限制,或輸出結果與您從原始格式預期的行為不同。這些錯誤各自在瀏覽器內部有特定成因、您可見的特定訊息或症狀,以及在下載按鈕前就能避免的特定方式。預先了解失敗模式,能讓您免於重複執行同一個檔案、不必納悶標籤為何消失,也不必分享一段聽起來比預期更小聲或更響亮的反轉片段。本文會逐一檢視「反轉音訊」工具所記錄的每個失敗類別,解釋其位元層級的原因,並說明從一開始就避免問題的確切步驟。

what can go wrong when i use reverse audio
使用反轉音訊時可能出錯的情況

容器與編解碼器不相符造成的解碼錯誤

檔案選擇器接受工具畫面上列出的容器——MP3、WAV、M4A、AAC、Ogg 與 WebM——但在選擇器通過不等於瀏覽器能解碼。Web Audio 使用 MDN BaseAudioContext.decodeAudioData 參考文件中所述的同一個例行程式來解碼檔案,而該例程依賴容器內實際的編解碼器。一個熟悉的副檔名(例如 .m4a)可能內含一個瀏覽器能順利讀取、另一個瀏覽器卻拒絕的 AAC-LC 音軌;Ogg 檔在 Linux 上可能是 Vorbis,但在行動裝置上可能是不同的子格式。

當瀏覽器無法解碼檔案時,反轉音訊工具會回報解碼錯誤,而不是靜默地產生不完整的結果。該工具從不宣稱每個具備熟悉副檔名的檔案都一定能運作,也絕不會安裝額外的解碼器或呼叫遠端轉檔服務來掩飾問題。如果您看到解碼錯誤,最有用的第一步是在桌面播放器中開啟該檔案以確認它確實能播放,接著檢查目前瀏覽器是否支援該編解碼器。

第二類失敗發生在更早一步:原則上可以解碼,但檔案中沒有任何瀏覽器能解讀為音訊樣本的內容。將影片檔重新命名為 .mp3、下載損毀的檔案、或僅含容器的空殼檔案,會通過選擇器、卻在解碼時失敗,並觸發相同的錯誤訊息。上傳前先驗證來源檔案是唯一可靠的解方。

觸發特定拒絕訊息的明定限制

反轉音訊會在超過下列任一限制時,以特定訊息拒絕該檔案。限制是明確、合併、且在反轉作業開始前即強制執行,因此跨越任何一條界線的檔案會被整體拒絕,而非部分處理。

限制允許範圍涵蓋內容
壓縮檔案大小最大 50 MB選擇器所見的檔案大小
解碼後時長5 分鐘以內解碼後音訊緩衝區的長度
聲道數1 至 8緩衝區中的聲道數量
取樣率8,000 至 192,000 Hz每個聲道每秒的訊框數
聲道—樣本預算30,000,000 個樣本總訊框數乘以聲道數

聲道—樣本預算最容易被低估,因為一個小的壓縮來源解碼後可能變成大得多的樣本陣列。若要確認檔案是否符合限制:以秒為單位取得解碼後的時長,乘以取樣率得到訊框數,再乘以聲道數。例如,一個 48,000 Hz、剛好 5 分鐘長的立體聲檔會產生 48,000 訊框 × 300 秒 × 2 聲道 = 28,800,000 聲道樣本,低於 30,000,000 的上限。若把同一個檔案的取樣率提升到 96,000 Hz,預算就會加倍為 57,600,000,在時長檢查生效之前就已超出預算。您自己檔案的精確數值會在預覽畫面中、下載前顯示。

輸出格式、精度與檔案大小變化

反轉音訊永遠會寫入一個全新的 PCM16 WAV。下載的檔案並非您原始的 MP3、M4A、AAC、Ogg、WebM 或壓縮 WAV 倒著播放,介面也從未暗示會如此。輸出是根據瀏覽器記憶體中所持有的解碼後浮點緩衝區,一個樣本接一個樣本編碼而成。

這條管線會帶來三個實際影響,而每一個都是期望容易破滅之處:

  • 數值精度降至 16 位元。每個浮點樣本會先裁切到 -1 到 1 的範圍,再對應到有號 16 位元 PCM 並以 little-endian 寫入。負值滿刻度變為 -32768,正值滿刻度變為 32767。介於兩端之間的數值會四捨五入到最接近的整數,因此原本在 24 位元下完美保留的音訊,到了 16 位元可能會出現量化雜訊。反轉本身並不會引入這種損失;精度的改變是輸出格式本身的特性。
  • WAV 檔通常比壓縮輸入更大。48 kHz 立體聲的非壓縮 16 位元音訊約為每秒 192 KB。同一大小下的 5 分鐘音訊接近 56 MB,已超過 50 MB 的輸入上限,因此請勿以檔案大小來判斷輸出品質或時長——結果根本未經壓縮。
  • 容器中繼資料不會保留。專輯封面、ID3 或 Vorbis 標籤、章節標記、循環點、編碼器設定、原始位元率以及任何容器專屬欄位都不會被複製。輸出是一個全新的音訊檔,除了 WAV 標頭本身所含的內容之外,沒有任何嵌入的中繼資料。如果您需要保留標籤,請在下載後於音訊編輯器中重新附加。

如果您是帶著「得到一個保留相同標籤的反轉 MP3」這樣的預期進入這個工具,那會是單一最常見的意外。反轉音訊工具頁面在結果畫面上已明確說明此點,且選擇不同的來源檔或重試時會先清除先前的下載,避免在錯誤發生後把舊的成功結果誤認為新結果。

如何在留意問題的同時反轉音訊

以正確的順序執行作業,是捕捉工具所記錄之所有失敗模式最簡單的方式。每一步都有可在進入下一步前執行的檢查,而最昂貴的步驟——實際的解碼與反轉——只會執行一次,因為前置步驟的失敗會將其短路。

  1. 選擇一個不超過 50 MB 的支援音訊檔。從您的磁碟挑選來源;選擇器接受 MP3、WAV、M4A、AAC、Ogg 與 WebM。大於 50 MB 或具未知副檔名的檔案會在解碼前就被拒絕,因此請先確認來源大小。
  2. 在瀏覽器中預覽原始檔案。預覽使用一個臨時的本機物件 URL。如果原始檔在此處無法播放,請勿繼續——解碼將以同樣方式失敗。
  3. 選擇「反轉音訊」並等待本機作業完成。每個解碼後的聲道樣本都會在當前的瀏覽器分頁中原地反轉。較長的檔案需要較長時間;不會上傳任何內容,也不會在遠端伺服器上執行。
  4. 預覽反轉後的結果並確認顯示的時長與音訊屬性。將結果的時長與原始檔比對。反轉並不會改變時長、取樣率或聲道數,因此若有任何不符,就代表作業未乾淨地完成。
  5. 下載新的 PCM16 WAV,並在實際會使用它的播放器中開啟。瀏覽器預覽成功並不保證每台較舊的裝置都支援相同的 WAV 聲道配置或高取樣率。請在您的目標編輯器或硬體中開啟該檔案以做確認。

若其中任何一步失敗,後續的作業流程會乾淨地停止:先前的下載會被清除、臨時的物件 URL 會被釋放、Web Audio context 也會被關閉。過時的非同步作業不會蓋過較新的結果。

工具刻意不會改變的部分

會出現幾種失敗模式,是因為讀者期待工具做超出「反轉樣本」以外的事。實作並不會進行音量標準化、移除靜音、主動變更音高、拉伸時間或修復削波。反轉會保留解碼後的時長、取樣率與聲道數,但會將每個事件移至從結尾往前量測的對應位置。原本在 1 秒處的小鼓擊點會落到「時長減 1 秒」處;淡入會變成等長的淡出;殘響尾聲會與訊號其餘部分一起反轉。

多聲道音訊是以聲道為單位分別處理。立體聲來源保持立體聲:左聲道獨立反轉、右聲道獨立反轉,接著再以正確的 WAV 訊框順序交錯回來。實作中的反轉測試涵蓋奇數與偶數訊框數、多聲道,以及確認來源陣列在反轉過程中不會被更動,因此不對稱的立體聲片段不會丟失中央樣本,也不會左右聲道對調。

所有處理皆在當前瀏覽器分頁中於本機執行。您的檔案、檔名或結果都不會被上傳。如想深入了解此一說法,請參閱關於使用反轉音訊時是否會上傳音訊檔的指南,其中會逐一說明各項處理實際發生的位置。

下載後驗證反轉後的檔案

確認執行成功的最快方式,是聆聽結果的開頭與結尾。正確的反轉會讓原始檔中最後一個可聽到的事件,出現在反轉檔中最先可聽到的事件。確認工具在作業後所顯示的時長、聲道數、取樣率與檔案大小;若其中任何一項與原始檔看起來不符,請從原始來源重新執行,而不是對已經反轉過的檔案再做一次反轉。

在實際會用到的編輯器中開啟下載檔案。瀏覽器能播放雖然令人鼓舞,但並不保證每台較舊的裝置、每個遊戲引擎或每台硬體取樣器都能支援,特別是當來源取樣率落在 8,000 至 192,000 Hz 允許範圍的上限時。若您需要淡入淡出、剪輯、選擇編解碼器、保留中繼資料或母帶控制,請在反轉步驟之後、於專用的音訊編輯器中完成,而非在此之前。

最後,請在確認結果之前,將原始來源檔與反轉後的 WAV 放在一起保存。一旦確認檔案符合所有明定限制,第二次執行成本很低;但若誤用已反轉的來源做第三次處理,往往會引入防護測試所要避免的那種難以察覺的逐聲道損毀。

如需更深入的探討,請參閱使用音訊等化器時可能出錯的情況。