無需應用程式的音訊音高變換器是一種基於瀏覽器的工具,可將一個本機音訊檔案的音高以 -12 到 +12 之間任意整數個半音進行偏移,並匯出全新的 PCM16 WAV,完全不需要安裝任何軟體。整個工作流程——檔案讀取、解碼、重取樣與 WAV 編碼——都在當前的瀏覽器分頁內完成,因此不會有任何資料離開你的電腦,也沒有需要管理的設定、外掛或安裝程式。你載入一個瀏覽器已能解碼的檔案,在 -12 到 +12 的半音刻度上選一個值,頁面就會在交給你下載連結之前,先渲染出完整的結果。由於解碼與編碼都在同一個分頁中處理,支援的格式取決於你的瀏覽器能解碼哪些內容,而非由工具內部的固定清單決定。匯出檔一律是重新編碼的 PCM16 WAV,而非原始檔案的修改版本。這個區別很重要:原始的壓縮、標籤、封面圖片以及任何容器詮釋資料都會在重建過程中捨棄,而 PCM16 的量化也可能與瀏覽器實際渲染的浮點數樣本有所不同。

「無需應用程式」在這裡的真正含義
「無需應用程式」這個說法涵蓋了兩個相關的需求:避免下載並安裝的程式,以及避免將音訊上傳到遠端伺服器。基於瀏覽器的音高變換器可以同時滿足這兩點,但前提是頁面必須誠實地說明哪些內容留在本機。音訊音高變換器頁面透過標準的 File API 讀取一個檔案,使用 Web Audio API 進行解碼,透過 OfflineAudioContext 執行離線渲染,並將產生的音訊框編碼成可下載的 blob URL——一切都在當前分頁中完成。沒有配套的程式、瀏覽器擴充功能或行動應用程式需要安裝,也沒有註冊步驟。你可以關閉分頁,頁面不會留下任何背景服務。
如果你曾在桌面 DAW 或手機編輯器中處理過音高調整,那麼瀏覽器內的模式在以下三個實際面向會感覺不同。第一,你不會擁有以儲存專案形式保存的渲染音訊;每次渲染都會產生一個獨立的 WAV,要嘛保留,要嘛捨棄。第二,工具的行為取決於你目前瀏覽器的解碼器與重取樣器,因此相同的輸入在 Chrome、Firefox 或 Safari 中聽起來可能略有不同。第三,下面列出的所有限制都會在任何耗資源的渲染開始之前進行檢查,這意味著渲染失敗時會是一個快速的提示訊息,而非一個半成品的下載。
播放速率重取樣如何改變音高
在此實作中,音高與持續時間會同步變動,因為工具使用的是 Web Audio AudioBufferSourceNode 的 playbackRate 屬性,根據 MDN 的 playbackRate 參考資料,該屬性會以一個倍率重新縮放原始取樣率。其關係遵循十二平均律,其中一個八度包含十二個等分的半音,每個半音的頻率比為 2^(1/12),如麥基爾大學 MIDI 與頻率轉換課程教材所述。對於 n 個半音的偏移,播放速率為 2^(n/12)。當 n = 0 時,速率為 1,音訊原樣播放。當 n = +12 時,速率為 2,音訊以兩倍速度重新取樣:聽起來高一個八度,持續時間約為原始的一半。當 n = -12 時,速率為 0.5,音訊聽起來低一個八度,持續時間約為原始的兩倍。
這個取捨——音高與持續時間同步變動——是工具的核心行為,也是頁面明確聲稱不會保留節奏、語速、拍點位置或精確原始時長的原因。如果你需要在固定長度下改變音高,則需要相位聲碼器或類似的時間拉伸工作流程,而這正是本工具不會執行的。
無需應用程式偏移音訊音高:本機工作流程
- 在目前的桌面瀏覽器中開啟音訊音高變換器頁面。
- 選擇一個你的瀏覽器能夠解碼且大小不超過 50 MiB 的音訊檔案。常見的輸入包括 MP3、WAV、M4A、AAC、Ogg、WebM 與 FLAC,但實際的編解碼器支援仍取決於瀏覽器。
- 設定一個介於 -12 到 +12 之間的整數半音偏移值。負值會降低感知音高並拉長音訊;正值會提高音高並縮短音訊;0 則保持音高與持續時間不變。
- 觸發本機渲染。頁面會使用 Web Audio 解碼檔案,計算平均律下的播放速率,配置完整的預期輸出框數,並透過 OfflineAudioContext 以解碼後的取樣率渲染出完整結果。
- 查看頁面顯示的所述持續時間變化,然後下載產生的 PCM16 WAV 檔案。該檔案會以非交錯、小端序音訊格式,在 RIFF/WAVE 容器中重新編碼。
半音值及其對音高與持續時間的影響
工具將完整的 -12 到 +12 範圍以整數形式呈現,這足以涵蓋任一方向的一個八度。下表列出幾個實用的點,並說明每個點對音高、播放速率以及大致持續時間的影響。持續時間的數值為定性描述:說明變化的方向與大致幅度,源自平均律公式,而非來自個別檔案的測量。
| 半音偏移 | 對音高的影響 | 播放速率公式 | 大致持續時間 |
|---|---|---|---|
| -12 | 降低一個八度 | 2^(-12/12) | 約為原始的 2 倍 |
| -7 | 降低完全五度 | 2^(-7/12) | 明顯較長 |
| 0 | 原始音高 | 2^(0/12) | 不變 |
| +7 | 升高完全五度 | 2^(7/12) | 明顯較短 |
| +12 | 升高一個八度 | 2^(12/12) | 約為原始的一半 |
端點之間的任何整數值也都是有效的,因此像 +3、-5 或 +1 這類中間偏移值都能接受。頁面會在渲染完成後回報精確的新持續時間,這也是唯一能反映你上傳之特定檔案的數字。
在渲染開始前可能使其停止的限制
在頁面投入執行較慢的離線渲染之前,會先檢查多項限制。了解這些限制能避免在冗長的解碼步驟後遇到渲染失敗時產生困惑。
- 每個編碼輸入檔案的大小上限為 50 MiB。
- 解碼後的音訊上限為五分鐘、八個聲道,以及介於 8,000 到 192,000 Hz 之間的取樣率。
- 輸入解碼的預算為 3,000 萬聲道樣本,而音高偏移後的輸出則另有 3,000 萬聲道樣本的預算。
- 由於降低音高會拉長音訊,一個在解碼預算內的輸入,在進行大幅向下偏移時仍可能超出輸出預算。發生這種情況時,頁面會回報要求的偏移超出預算,且不會產生下載。
空檔案、不支援的類型、無效的解碼尺寸以及解碼失敗都會在第一時間被拒絕。每次新的輸入或半音變更都會使先前的結果失效,以避免舊的渲染覆蓋新的渲染,且下載的 Object URL 在被取代時會被撤銷。
瀏覽器能夠解碼的輸入格式
由於解碼工作委由瀏覽器處理,實際可用的格式清單就是「你的瀏覽器已經能播放的內容」。像 MP3、WAV、M4A、AAC、Ogg、WebM 與 FLAC 這類常見格式在目前的桌面瀏覽器中通常都能使用,但辨識到的副檔名並不保證每個特殊的編解碼器設定檔都能解碼。若頁面拒絕了某個檔案,最簡單的變通方法是換用其他瀏覽器,或將該檔案重新匯出為更常見的格式。解碼完成後,音訊會在瀏覽器選擇的取樣率下進行內部重取樣,供 OfflineAudioContext 用於渲染。
匯出 WAV 中保留與捨棄的內容
下載的檔案一律是重新編碼的 PCM16 WAV。在量化之前,浮點數樣本會被截斷到合法的 -1 到 +1 範圍內,即使在半音偏移為 0 時,這也可能與解碼來源產生細微差異。匯出檔不會繼承原始的編解碼器、壓縮品質、位元率、ID3 或 Vorbis 標籤、內嵌封面、章節、提示點、循環詮釋資料,或任何其他容器詮釋資料。如果你需要保留這些內容,請在另外的標籤處理步驟中將它們附加到新的 WAV 上。
匯出方面還有兩點需要注意。瀏覽器的重取樣品質是實作定義的,因此在一個瀏覽器中的 -12 偏移聽起來可能與另一個瀏覽器中的 -12 偏移不同。強烈的向上偏移也可能暴露出原本較不明顯的失真或編解碼器瑕疵。對於快速的創意實驗、練習曲目、音效以及粗略編輯來說,結果已相當實用;但若要進行透明的母帶處理工作,請將這個 WAV 視為起點,而非最終成品。
相關閱讀:你真的需要音訊速度變換器嗎?決策指南。
相關閱讀:音量變換器入門:首次使用指南。