音訊變調器可以將音訊檔案的感知音樂音高以整數個半音為單位升高或降低,而基於瀏覽器的 音訊變調器 可套用從 -12 個半音(降低一個八度)到 +12 個半音(升高一個八度)的位移,並使用播放速率 2^(n/12)。整個位移過程完全在您目前的瀏覽器分頁內進行——不涉及任何檔案上傳、不需要註冊帳號,也不會有任何資料離開您的裝置。在您設定位移值後,工具會將檔案重新編碼為一個全新的未壓縮 PCM16 RIFF/WAVE 檔案供您直接下載。由於位移是透過播放速率重取樣而非時間伸縮演算法來實作,因此升高音高也會縮短音訊長度,降低音高則會拉長音訊長度。+12 半音的位移以 2 倍速度運作,產生的長度約為原始的一半;-12 半音的位移以 0.5 倍速度運作,產生的長度約為原始的兩倍。在您開始之前,這個取捨是您需要理解的核心重點,因為它決定了這類音高變換是否適合您的素材。

how do i get started when i need to use audio pitch changer
在瀏覽器中開始使用音訊變調器

音訊變調器實際上做了什麼

當您想要一個快速、自足的的方式,無需安裝完整的編輯器就能在固定範圍內轉置音樂、人聲片段或音效時,這類工具就是合適的選擇。完整的可達範圍涵蓋降低一個八度(-12)到升高一個八度(+12),其中 0 表示維持原始音高。僅支援整數半音——不開放分數音分值。十二平均律套用於每一次位移:每一步以相同的比率改變音高,十二步的跳躍恰好涵蓋一個八度。一個半音本身包含 100 個音分,因此 +12 步等同於十二個各 100 音分的等步,總計 1,200 音分——這與 W3C Web Audio 定義中 detuning 貢獻倍數因子 2^(detune/1200) 的說法一致(請參閱 W3C Web Audio:AudioBufferSourceNode)。音高位移會一致地套用於整個檔案;沒有區域控制、沒有調性/音階預設,只有一個整數值套用於所有內容。

如果您想要一套結構化的方法來判斷音高變換是否適合您手邊的工作,請參閱 我需要音訊變調器嗎?判斷方法說明。

開始之前您需要準備的事項

三件事能讓第一次執行順利進行:您的瀏覽器實際能解碼的檔案、對大小上限的認知,以及對「音訊長度會隨音高變動」的明確預期。

格式常見副檔名解碼備註
MP3.mp3瀏覽器普遍支援
WAV.wavPCM 格式時一律接受
M4A / AAC.m4a, .aac視瀏覽器支援的編解碼設定而定
Ogg.ogg大多數現代瀏覽器
WebM 音訊.webm視瀏覽器支援而定
FLAC.flac視瀏覽器支援而定

具體的編解碼設定仍取決於您目前的瀏覽器;可辨識的副檔名並不保證每一種特殊變體都能解碼。如果檔案無法載入,通常只要用任何標準音訊編輯器重新匯出為一般的 MP3 或 WAV 即可解決。單一檔案上限為 50 MiB,以編碼後的位元組計算——因此一般三分鐘的 MP3 或 WAV 都遠低於上限,但 60 分鐘的無損錄音則會超出。

在點選渲染之前,請先確認您的輸入符合解碼預算:解碼後長度最多五分鐘、最多八個聲道,取樣率介於 8,000 至 192,000 Hz 之間。解碼輸入上限為 3,000 萬個聲道樣本。音高變換後的輸出則另外以 3,000 萬個聲道樣本為預算——而降低音高會增加輸出量,因此即使輸入符合輸入預算,經過大幅負向位移後仍可能超出輸出預算。

三個步驟完成第一段片段的變調

整個工作流程簡化為:檔案、數值、下載。頁面上沒有內嵌的音訊元素,因為本站的媒體政策不允許以 blob 為後端的預覽;您可以透過在任何本地音訊播放器中開啟下載的 WAV 來聽到結果。

  1. 選擇一個不超過 50 MiB 且瀏覽器可解碼的音訊檔案。點選檔案選擇器並選擇單一的 MP3、WAV、FLAC、Ogg、WebM 或 M4A/AAC 檔案。頁面永遠只接受一個檔案,也永遠不會將多個片段批次合併為單一渲染。
  2. 設定一個 -12 到 +12 半音之間的整數音高位移。直接輸入數值,或使用控制項逐步調整。請記住公式:播放速率為 2^(半音數/12)。每個整數對應十二平均律中的一個比率,從 +12 的 2× 一路到 -12 的 0.5×。設定為 0 時,輸出會與原始音高(以及大約的原始長度)一致。
  3. 建立完整的本地渲染、檢視所顯示的長度變化,並下載 PCM16 WAV。在儲存前,請先閱讀工具回報的長度差異。每次變更輸入檔案或半音值都會使先前的渲染失效,因此請在每次編輯後重新渲染。將產生的 .wav 儲存到本地。

套用公式的範例:對一段 10 秒的片段進行 +12 半音的位移,播放速率為 2^(12/12) = 2^1 = 2.0,因此渲染後的輸出以兩倍速度播放,最終長度約為 10 ÷ 2.0 = 5 秒。對同一段片段進行 -12 半音的位移,速率為 2^(-12/12) = 2^-1 = 0.5,產生約 10 ÷ 0.5 = 20 秒的長度。這套關係純粹是乘法關係,也就是標準的十二平均律行為,其中一個八度包含十二個等分的半音,而每個半音等於 100 音分(每八度 1,200 音分)。

渲染會拒絕處理的限制

驗證會在耗資源的離線渲染開始前進行,因此被拒絕的檔案永遠不會產生半成品的 WAV。超過 50 MiB 的輸入會在檔案讀取階段被拒絕。空檔案與不支援的 MIME 類型會在解碼階段失敗。解碼後的音訊若超出五分鐘、八個聲道或 8,000–192,000 Hz 的範圍,會以明確的訊息提示失敗且不會產生任何輸出。解碼輸入若超出 3,000 萬聲道樣本預算,會在渲染開始前被拒絕。

對首次使用者來說最令人意外的限制是輸出端的預算。降低音高會將所需的輸出幀數約略乘以 2^(−n/12),因此對已經很長的檔案套用非常負向的半音值,可能使計算出的輸出超過 3,000 萬個聲道樣本。在這種情況下,錯誤訊息會指出所要求的位移超出預算,並確認沒有任何內容被截斷。工具永遠不會部分寫入被裁切的 WAV,也永遠不會以替代方案取代——渲染失敗時就是不會產生下載檔案。如果瀏覽器無法配置完整的離線緩衝區,工作會回報錯誤且不會產出任何檔案。

MDN 關於 AudioBufferSourceNode.playbackRate 的參考資料將 playbackRate 描述為原始取樣率的比例,低於 1 的值會使音訊變慢,高於 1 的值會使音訊變快——這正是本工具套用於整個離線緩衝區的重取樣行為。只有在瀏覽器回傳預期的聲道數、取樣率以及完整的幀數時,結果才會被接受。

下載檔案的內容

下載的檔案是一個全新的 .wav,編碼為標準 RIFF/WAVE 容器中未壓縮、交錯、小端序的 PCM16。浮點樣本會在轉換為 16 位元整數 PCM 之前先裁剪到合法的 -1 到 +1 範圍。輸出不會繼承來源的編解碼、位元率、ID3/Vorbis 標籤、內嵌封面、章節標記、cue 點、循環詮釋資料或容器詮釋資料。PCM16 量化也與浮點來源不同,因此下載的位元組不會與假想中解碼緩衝區的無損重新編碼逐位元相同。瀏覽器的重取樣品質屬於實作定義,非常大幅的升高位移可能會暴露出原本被遮蔽的混疊或編解碼瑕疵。

這個結果適用於創作實驗、練習伴奏、音效以及粗略編輯——並非透明且符合母帶等級的音高處理。由於整個渲染都在同一個瀏覽器分頁內於本地執行,您可以在頁面載入後的任何時間點中斷網路連線,工具仍能對每個受支援的檔案正常運作。輸出會取代任何先前的預覽佔位符:當新的渲染取代舊的 URL 時,下載用的 Object URL 會被撤銷,因此成功的下載永遠不會指向過期的音訊資料。

第一次使用時容易毀掉結果的常見錯誤

最常見的預期落差來自於不同類型的工具。能維持語音節奏、拍點位置與精確長度的工具,通常會使用相位聲碼器或其他時間伸縮工作流程——而本實作並非如此。如果您的專案需要在不改變長度的前提下變換音高,正確的做法是改用該專用工作流程;播放速率重取樣無法滿足此需求。如需了解播放速率重取樣在其他選項中的定位,請參閱 音訊變調器:實用技巧與常見錯誤。

第二個常見錯誤是假設任何帶有可辨識副檔名的檔名都能解碼。磁碟上看起來普通的容器,可能依賴您特定瀏覽器不支援的編解碼設定;可靠的修正方法是先將來源重新匯出為一般的 PCM WAV 或固定位元率 MP3。第三個錯誤是預期匯出的檔案會帶有原始來源的標題、演出者或章節資料——下載的 WAV 中的每個位元組都是新合成的,來源的詮釋資料不會保留下來。最後,把這個頁面當作播放器來用會讓您碰壁:依設計這裡沒有內嵌以 blob 為後端的預覽,因此流程就是「匯入檔案、選擇位移、下載,再到任何可信賴的本地播放器中開啟 WAV 來驗證結果」。