不,在 Audio Pitch Changer 中改變音高並不會保留原始速度與長度。此工具採用播放速率重取樣,這代表音高與長度會依照固定的數學比例同時改變:提高音高會讓音訊加速並縮短長度,而降低音高會讓音訊減速並拉長長度。偏移遵循十二平均律,因此 +12 半音的偏移會以 2 倍速度播放檔案,產生的長度約為原始長度的一半;而 -12 半音的偏移則以 0.5 倍速度播放,產生的長度約為原始長度的兩倍。Audio Pitch Changer 對此明確說明,且從未宣稱會保留速度、語音節奏、拍點位置或精確的原始長度。任何需要在保持原始長度的同時改變音高的人,應該改用相位聲碼器 (phase vocoder) 或其他時間伸縮演算法。由於兩者之間是乾淨的比例關係,你可以在實際渲染之前,預測任何整數半音偏移所對應的精確長度倍率。這段數學很簡短、瀏覽器內的工作流程也很直接,少數幾個硬性限制就決定了特定檔案是否能順利處理。

重取樣中音高與長度如何連動
當數位音訊來源以高於其原生速率的速度播放時,重取樣器會縮短波形每個週期的長度,以便在每秒內塞入更多週期。這些縮短後的週期對應到更高的頻率,而耳朵會將其感知為更高的音高。當來源以低於原生速率的速度播放時,每個週期會被拉長,每秒內容納的週期數減少,結果聽起來就會更低沉、更緩慢。這兩種效果並非獨立:播放速度變快必然代表音高更高且長度更短,播放速度變慢必然代表音高更低且長度更長。播放速率重取樣 (playback-rate resampling) 就是這種「音高加上長度」同時改變的行為名稱,由於它直接內建於 Web Audio 的播放模型中,因此是在瀏覽器中進行音訊移調最簡單的方式。Audio Pitch Changer 採用此方法,因此整個檔案可以在本地端完成渲染,無需上傳到任何地方。
播放速率重取樣之所以能保留音符之間的音樂音程,是因為相同的比例會以同一個倍率縮放檔案中的每個頻率。旋律聽起來仍然像旋律,只是播放得更快或更慢。其代價是時間軸也會跟著拉伸或縮短,而這正是本文關鍵字所探討的行為。
十二平均律音高偏移背後的數學
Audio Pitch Changer 中的音高偏移以 -12 到 +12 之間的整數半音進行量化,播放速率遵循十二平均律公式 playbackRate = 2^(semitones / 12)。麥基爾大學 (McGill University) 的課程教材獨立證實,一個八度包含十二個等分的半音,每個半音的頻率比為 2^(1/12),而一個半音包含一百個分 (cents)(參見 McGill — MIDI/Frequency Conversion)。MDN 的 Web Audio 參考資料將 playbackRate 描述為原始取樣速率的比例,數值低於一時會讓音訊變慢,高於一時會變快,非 1 的數值則會觸發重取樣(參見 MDN — AudioBufferSourceNode playbackRate)。
將數值代入公式即可得出十二平均律中通用的標準參考點:
| 半音偏移 (n) | 播放速率 (2^(n/12)) | 對長度的影響 |
|---|---|---|
| -12 | 0.5× | 約為原始長度的 ~2.00× |
| -6 | ~0.7071× | 約為原始長度的 ~1.41× |
| 0 | 1× | 長度不變 |
| +6 | ~1.4142× | 約為原始長度的 ~0.71× |
| +12 | 2× | 約為原始長度的 ~0.50× |
這五個數值是 12-TET 的標準參考點;同一個十二平均律公式決定了 -12 到 +12 之間所有中間的整數半音偏移。
如何使用 Audio Pitch Changer 改變音高
- 在目前的瀏覽器分頁中開啟 Audio Pitch Changer,並選擇一個瀏覽器可解碼的音訊檔案。常見的 MP3、WAV、M4A、AAC、Ogg、WebM 與 FLAC 輸入格式都可接受,但實際的編解碼器支援仍取決於瀏覽器,因此即使副檔名被辨識,也不保證每個不常見的編解碼器設定檔都能成功解碼。
- 確認檔案大小不超過 50 MiB。此工具會在任何重取樣工作開始前就拒絕過大的檔案。
- 設定一個介於 -12 到 +12 半音之間的整數音高偏移。畫面上的標籤會提醒你長度也會跟著改變,而這正是本文所描述的核心行為。
- 建立完整的本地渲染。瀏覽器會使用 Web Audio 解碼檔案,依據 2^(semitones/12) 計算播放速率,並透過 OfflineAudioContext 以解碼後的取樣速率渲染完整的輸出。
- 檢視顯示的長度變化。輸出幀數是依據輸入幀數除以播放速率後的 ceiling 計算,而此工具只有在瀏覽器回傳預期的聲道數、取樣速率與完整幀數時,才會接受該次渲染。
- 將結果下載為一個新編碼、未壓縮的 PCM16 RIFF/WAVE 檔案。原始的壓縮格式、標籤、封面與容器中繼資料都不會保留。
任何新的輸入檔案或新的半音設定都會在下一輪渲染開始前,使先前的結果失效;而進行中的解碼或離線渲染任務會被標記身份,避免較舊的完成事件覆蓋到較新的狀態。當工作失效時,解碼上下文會被關閉,離線音源會被停止或斷開連線,而下載用的 Object URL 在被取代或元件卸載時也會被撤銷。
可能導致音高偏移停止的限制
即使數學很簡單,Audio Pitch Changer 仍設有硬性預算,以保護瀏覽器免於執行過大的工作。輸入檔案上限為 50 MiB。解碼後的音訊以長度五分鐘、八個聲道、取樣速率 8,000 Hz 到 192,000 Hz 為上限。輸入解碼上限為 3,000 萬聲道樣本數。音高偏移後的輸出則另外設有 3,000 萬聲道樣本數的上限,且此上限會在任何耗能的工作開始前先計算好。
降低音高會增加輸出幀數,因為音訊會變慢,所以即使輸入通過了解碼後的限制,仍可能無法通過輸出限制。在這種情況下,訊息會告訴你要求的偏移已超出預算,並且不會截斷任何內容,亦即不會提供不完整的檔案供下載。空檔案、不支援的類型、無效的解碼後尺寸,以及解碼失敗都會在一開始就被拒絕。可下載的檔案會新編碼為 RIFF/WAVE 容器中的交錯 (interleaved)、little-endian PCM16 格式,浮點樣本會在轉換前先裁剪到合法的 -1 到 +1 區間內。瀏覽器重取樣的品質是由實作定義的,因此強烈向上的偏移可能會暴露出原本較不明顯的失真 (aliasing) 或編解碼器瑕疵。
當你需要改變音高但不變動長度時
在實際製作中確實有些情況需要音高改變但長度保持不變,例如將人聲錄音移調以符合歌手的音域而無需重新錄製,或是在固定的提示長度下將背景音樂配合影像。播放速率重取樣無法做到這一點,因此 Audio Pitch Changer 並不適合這些工作。相位聲碼器 (phase vocoder) 或其他時間伸縮演算法可以將這兩種效果分開,以重疊的短時窗分析訊號,再合成出音高改變但時間軸不變的結果。專用 DAW 的功能,例如 Audacity 中解鎖長度選項的「Change Pitch」效果,是一種常見的路徑;採用同類演算法的瀏覽器替代方案則是另一種。如果需要該方法的指南,如何在不影響速度的情況下於 Audacity 中改變音訊音高 詳細說明了一套確實能保持原始長度的 DAW 工作流程。
對其他人來說,重點很簡單。Audio Pitch Changer 是一種快速、本機、無需上傳的方式,能以整數半音為單位移調音訊,前提是你能接受可預測的「音高加長度」同步改變。由於長度倍率只是播放速率的倒數,你可以在實際渲染之前,依據公式 新長度 ≈ 原始長度 × 2^(-n/12) 為任何偏移 n 預先計算出新長度,而這個估計值將會與離線渲染回傳後工具所回報的數值一致。
如果你正在權衡各種選項,如何避開 Audio Pitch Changer 的常見錯誤 對此有更詳細的說明。