播放速率重取樣會同時改變音高與長度,音高偏移 n 個半音時的播放速率為 2^(n/12),因此 +12 個半音會以 2 倍速度播放檔案(長度大約是原本的一半),而 −12 則會以 0.5 倍速度播放(長度大約是原本的兩倍)。Audio Pitch Changer(音訊變調器)產生「看起來不對」的結果,最常見的原因並非檔案損壞,而是檔案正常運作、只是長度依數學必然方向改變了。由於此工具是透過改變播放速率而非分析並重建訊號來偏移音高,因此每升高一個半音,音訊會同時縮短並加快;每降低一個半音,則會同時拉長並變慢。如果產生的 WAV 聽起來比原始檔案更短或更長,那就是選定偏移量下的預期行為,並非處理失敗的跡象。許多意外狀況來自設定 +12 卻期望得到母帶品質、長度相同的八度音,或是設定 −5 後納悶為何語音現在拖拍。一旦半音、速率與長度之間的關係釐清後,「不對」通常只是選擇不同偏移量或接受取捨的問題,而非重複執行相同設定並期望得到不同的檔案。

how do i fix a result that looks wrong after i use audio pitch changer
如何修正 Audio Pitch Changer 看起來不對的結果

為何輸出看起來失準:播放速率重取樣,而非時間延展

Audio Pitch Changer 是透過在瀏覽器的 Web Audio 圖中改變來源的 playbackRate 來套用音高偏移。根據 MDN 對於 AudioBufferSourceNode.playbackRate 的說明文件,數值低於 1 會使音訊變慢,數值高於 1 則會使其加快,而任何非 1 的速率都會觸發對已解碼音訊的重取樣。音高與速率正是透過這個重取樣步驟連結在一起:加快播放的同時也會提高感知音高,放慢播放也會降低感知音高。

此工具並未執行的是 phase-vocoder 或專用時間延展器所做的更困難任務:重建音訊以使音高改變而長度保持不變。產品合約對此點有明確說明,指出其實作採用播放速率重取樣,而非時間延展演算法,且此工具從不聲稱能保留速度、語音節奏、拍點位置或精確的原始長度。如果產生的結果因時間不再對齊伴奏軌道、影片或節拍器鈴聲而看起來不對,那是所選方法的極限,而非在同一個工具內可修正的設定錯誤。

一個有用的切入觀點:當你希望音高與速度一起改變時(例如想要花栗鼠風格的高亢快速效果,或沉重的緩慢低調效果),這個方法表現優異;但若你只希望其中一項改變,那就用錯工具了。混淆這兩種需求是「不對」結果最常見的單一成因,而重複執行相同設定並不會改變結果,因為其中的數學是固定的。

半音、速率與長度背後的數學

音高比例遵循十二平均律。McGill 大學關於 MIDI/頻率轉換的課程教材指出,一個八度包含十二個等分半音,每個半音的比例為 2^(1/12),一個半音等於 100 cent。W3C 的 Web Audio 規格在 AudioBufferSourceNode 播放演算法中定義了相同的關係,其中 detuning 值會貢獻 2^(detune/1200) 的因子。對於整數半音偏移,Audio Pitch Changer 使用較簡化的形式:播放速率 = 2^(n/12),其中 n 為你輸入的半音值。

實際上的影響整理於下表。每一列分別列出瀏覽器將使用的播放速率、套用至原始長度的大致倍數,以及以一般音樂術語表示的音高變化。

半音偏移 播放速率 大致長度倍率 音高變化
−12 0.5× 2.0× 更長 降低一個八度
−7 ≈0.667× ≈1.50× 更長 降低完全五度
0 1.0× 1.0×(不變) 原始音高
+5 ≈1.335× ≈0.75× 較短 升高完全四度
+12 2.0× 0.5× 較短 升高一個八度

一個簡短的實作範例,讓這個關係更具體。假設輸入檔案為 180 秒,套用 +7 個半音:播放速率為 2^(7/12),約等於 1.498;將 180 除以 1.498 得出輸出長度約為 120 秒,因此音訊約在兩分鐘內播完,且音高比原始檔案高出約一個完全五度。精確數字取決於瀏覽器回報的音訊影格數,這也是為什麼工具會顯示一個陳述的長度變化,而不是給出固定數字。

在你聽到聲音之前就中斷算繪的各種限制

有些「看起來不對」的結果根本不是數學的問題,而是因為將超出宣告的預算之一,所以工具在產生檔案之前就停止了。如果什麼都沒下載,或是頁面顯示關於預算或尺寸的訊息,在調整你的偏移量之前,請先檢視以下限制。

  • 已編碼輸入大小。單一檔案最多 50 MiB。較大的檔案會在解碼前被拒絕,以免瀏覽器浪費時間在一個無法完成的工作上。
  • 已解碼輸入預算。已解碼音訊限制為長度五分鐘、八聲道、取樣率介於 8,000 至 192,000 Hz,且總聲道樣本數為 3,000 萬。任何不符合這些檢查的輸入,都無法進入算繪步驟。
  • 已解碼輸出預算。音高偏移後的輸出另外限制為 3,000 萬個聲道樣本。由於降低音高會增加所需的輸出影格數,因此通過已解碼輸入限制的輸入,仍可能不符合輸出限制。在此情況下,訊息會指出所要求的偏移量超出預算,且未進行任何截斷。
  • 格式與解碼失敗。空檔案、不支援的 MIME 型別、無效的已解碼尺寸,以及解碼失敗,都會以明確訊息拒絕,而不會悄悄產生部分算繪。

超出輸出預算的情境最常讓使用者意外,因為輸入在紙面上看起來沒問題。一個四分鐘的立體聲檔案,取樣率 44.1 kHz,就已逼近 3,000 萬聲道樣本的上限;若再將音高降低幾個半音,就會讓所需的輸出影格數超出此一門檻。解決方法是裁剪輸入檔案(音訊裁剪器可以產生較短的 PCM16 WAV,讓偏移處理得以運作),或是選擇較小的絕對偏移量。通常改用較大的正半音值重新執行會成功,因為正向偏移會減少輸出影格數。

如何正確重新執行音高偏移

若第一次算繪因上述任何原因而不正確,恢復的做法就是以修正後的預期重新乾淨地執行一次。瀏覽器、檔案與本機處理皆相同,因此無須重新上傳。

  1. 開啟工具並選擇原始音訊檔案。請使用單一可由瀏覽器解碼且不超過 50 MiB 的檔案。MP3、WAV、M4A、AAC、Ogg、WebM 與 FLAC 均列為支援格式,但實際解碼仍取決於目前的瀏覽器,因此不常見的編碼設定檔仍可能在選取後遭到拒絕。
  2. 判斷「不對」的結果是長度問題還是音高問題。若音高已符合預期但長度不符,代表算繪正確,你需要的是另一個能固定長度的工具。若音高錯誤且長度變化可以接受,則調整半音值並重新算繪。
  3. 設定介於 −12 與 +12 之間的整數半音偏移。在點選算繪之前,可參考上表預測播放速率與長度倍率。請記住,播放速率嚴格為 2^(n/12);此數學並不會因特殊情況而改變。
  4. 確認輸入仍符合每項已解碼限制。五分鐘、八聲道、取樣率 8 kHz 至 192 kHz,以及 3,000 萬個聲道樣本。若想避免輸出超出預算,過長的檔案可先以音訊裁剪器裁剪。
  5. 建立完整的本機算繪。瀏覽器透過 OfflineAudioContext,以解碼後的取樣率進行算繪,並在產生下載前確認聲道數、取樣率與完整影格數。過程中沒有悄悄的尾部裁切、隱藏的長度上限,或退而求其次輸出不完整檔案的機制。
  6. 檢視所顯示的長度變化。工具會顯示預測的長度變化,讓你能驗證數學。若數字與 2^(n/12) 預測的結果不符,請停下來並重新算繪,而非下載一個意外的結果。
  7. 下載 PCM16 WAV 並於信任的本機播放器中播放。基於政策,頁面不會提供以 blob 為基礎的預覽,因此下載是唯一的檢查途徑。匯出的檔案為 RIFF/WAVE 容器中的非交錯、小端序 PCM16 非壓縮格式,且不含原始編碼、標籤、封面、章節或提示點。

若第二次算繪看起來仍不對,問題幾乎可以肯定是以下三種之一:偏移方向錯誤的音高調整(負值並不會升高任何音高)、播放速率重取樣無法達成的長度預期,或是輸入已超過尺寸或樣本預算。這三項都屬於設定問題,而非工具瑕疵,因此以修正後的輸入再執行一次,通常足以得到你想要的檔案。

當工具無法自行修正結果時

有一類「錯誤」是無法透過調整音訊變調工具內部的任何設定來解決的,辨認出這點可以省下大量重新轉檔的時間。如果製作需求是在固定時長的情況下進行變調——例如把人聲重新調到不同音階但不讓歌曲變慢、將對白重新變調以配合影片剪接、移調鼓組循環但不更動節拍格點——那麼以設計上來說,播放速率法本來就是錯誤的做法。產品契約中已明確指出:此工具從未聲稱能保留速度、語音節奏、節拍位置或精確的原始時長,而需要變調同時維持固定長度的設定,應該改用專用的相位聲碼器或其他時間延展工作流程。

大幅度的向上變調也會暴露出無法靠任何工具設定消除的品質限制。瀏覽器的重取樣品質是由實作定義的,而浮點數樣本在轉成 PCM16 之前會被裁剪到合法的 −1 到 +1 範圍內,因此量化結果可能與來源不同。原本編碼器的壓縮失真在原始音高時聽不出來,但經過 +12 的移調後,可能因為疊影而變得明顯。這些並非輸出中的錯誤,而是要求重取樣器對已經壓縮過的素材進行極端處理時所付出的代價。同樣地,契約將匯出描述為適用於快速創意實驗、練習曲目、音效以及粗略剪輯,而不是一個透明的母帶處理流程。

對於想要更深入檢查清單的讀者來說,音訊變調工具:實用技巧與常見錯誤指南更深入地涵蓋了相同的預算限制與相同的誤解。在那之後,正確的補救方式通常不外乎三種:選擇不同的半音、修剪輸入以配合輸出預算,或是改用能在音高變動時維持時長一致的工作流程。前兩者仍在瀏覽器內完成,除了重新轉檔之外不需任何成本;第三種則是有意識地更換工具,而不是修正同一個工具。

相關閱讀:免安裝應用程式的音量調整工具:在瀏覽器中調整音訊。