Android 上的音訊變調工具可以透過公式 playback rate = 2^(n/12),以 -12 半音(降低一個八度)到 +12 半音(升高一個八度)的整數值來平移檔案的音高,而基於瀏覽器的工具可以在手機本機直接套用該公式,無需安裝應用程式。在 Android 上,每個近期版本的 Chrome、Edge、Firefox 和 Samsung Internet 都內建能解碼常見音訊格式的 Web Audio 實作,所以在桌面瀏覽器執行的同一個 Audio Pitch Changer 也能在手機分頁中執行。音高比本身遵循十二平均律,McGill 大學的課程教材 也證實每個八度內包含十二個等分的半音,每個半音的頻率比為 2^(1/12),每個等於 100 cent。由於該工具將 Web Audio 來源的 playbackRate 設定為該精確比值,+12 半音平移會使播放速率加倍,-12 半音平移會使播放速率減半,而 0 則會讓檔案保持原本的音高。理解結果的關鍵在於其取捨:播放速率重採樣會在改變音高的同時也改變長度。
在手機上以原生應用程式執行的變調器與基於瀏覽器的變調器之間的差異,主要在於處理工作在哪裡進行。原生 Android 應用程式可以直接呼叫裝置的音訊引擎,但它也需要安裝權限、可能要求註冊,而且通常會將音訊傳送到遠端伺服器。基於瀏覽器的變調器則留在當前的 Chrome 分頁內,透過 File API 讀取檔案,透過 Web Audio 進行解碼,透過 OfflineAudioContext 渲染新的音訊,並回傳一個新編碼的 WAV 供下載。這些步驟都不會接觸伺服器,當檔案包含未發行的音樂、錄製的訪談或私人語音備忘錄時,這點很重要。

Android 上的音訊變調器實際上做了什麼
瀏覽器工具的核心是從手機接收一個音訊檔案,套用整數半音平移,並產生一個音高上下移動後的新 WAV 檔案。該平移以單一整數控制項呈現,範圍從 -12 到 +12,涵蓋大多數休閒和創作用途實際需要的一個八度下移到一個八度上移的完整範圍。在整個解碼、重採樣和寫入新 WAV 的過程中,音訊內容都停留在當前的瀏覽器分頁內,所以手機不需要搭配應用程式,也不需要初始網頁載入以外的網路連線。
Android 上的 Mobile Chrome 及其他現代瀏覽器能解碼與桌面 Chrome 相同的一組輸入類型,也就是 MP3、WAV、M4A、AAC、Ogg、WebM 和 FLAC。實際的編解碼器支援仍取決於目前的瀏覽器版本以及建立檔案時使用的特定編碼器設定檔,因此可辨識的副檔名並不保證每個不常見的編解碼器設定檔都能解碼。在這種情況下,頁面會回傳明確的錯誤,而不是產生損壞的下載檔案,並且絕不會退而採用部分渲染。
為什麼在 Android 上使用瀏覽器工具
在 Play 商店中搜尋變調器的 Android 使用者通常會找到兩種解決方案:在麥克風上加入即時效果的變聲應用程式,以及對已載入曲目進行音高平移的音樂編輯器。兩者都能運作,但它們帶有瀏覽器工具可以避免的阻力。變聲應用程式通常是即時執行,無法在同一工作階段中套用於預先錄製的檔案。音樂編輯器通常會打包大型音訊引擎、在首次啟動時要求儲存權限,並將批次匯出等功能設在訂閱制之後。基於瀏覽器的音訊變調器透過使用現代網路已在執行的相同 Web Audio 管線,繞過了這些限制。
Android 上的 Mobile Chrome 已在好幾個主要版本中支援 Web Audio 和 OfflineAudioContext 渲染路徑,因此頁面可以解碼 50 MiB 的檔案(受限於額外的解碼音訊限制,最多五分鐘、八個聲道、8,000 至 192,000 Hz 的取樣率,以及 3000 萬個聲道樣本),然後透過瀏覽器的音訊執行緒渲染變調後的版本,並將結果寫入可下載的檔案,而無需任何原生程式碼。下載檔案預設會儲存到 Android 的 Downloads 資料夾,新的 WAV 會與原始 MP3 並排放置,準備好可在任何本機播放器中開啟或移入專案中。該流程停留在作業系統的正常沙箱內,這意味著除了瀏覽器已要求的儲存權限外,不需要額外的權限。
如何在 Android 上逐步變更音訊音高
整個流程在單一手機瀏覽器分頁中執行。每一步與在桌面上執行的動作相同,但 Android 上的檔案選擇器也會顯示雲端來源,例如 Google Drive、OneDrive 和 Downloads。
- 在 Android 手機上開啟 Chrome、Edge、Firefox 或 Samsung Internet 的目前版本,然後導覽至 Audio Pitch Changer 頁面。
- 點選檔案選擇器,從手機的本機儲存空間或連線的雲端來源中選擇一個音訊檔案。可接受的副檔名為 MP3、WAV、M4A、AAC、Ogg、WebM 和 FLAC,且檔案大小必須為 50 MiB 或更小。
- 等待頁面解碼檔案。
- 設定介於 -12 到 +12 之間的整數半音平移。使用 -12 將素材精確降低一個八度,+12 將其升高一個八度,0 則保持原始音高。允許任何中間的整數。
- 點選渲染按鈕。瀏覽器以解碼後的取樣率執行 OfflineAudioContext,將來源的 playbackRate 設定為 2^(n/12),並將重採樣後的結果寫入新的緩衝區。
- 讀取顯示的新長度。由於播放速率重採樣會使長度與速率成反比變化,+12 平移會產生約為輸入長度一半的結果,-12 平移則會產生約為輸入長度兩倍的結果。
- 點選下載按鈕以儲存新的未壓縮 PCM16 WAV。該檔案會取代先前的下載連結,並保留在手機上。
如果頁面回報預算錯誤而非產生檔案,表示輸入已解碼,但所要求的平移會使輸出超過 3000 萬個聲道樣本。此限制會在任何渲染工作開始前進行檢查,並且不會為了配合而截斷任何內容。修正方法通常是選擇較短的片段、從較小的解碼檔案開始,或選擇產生較少輸出影格的平移方向。升調會縮短長度,因此始終比降調更容易符合限制,而降調則會延長長度。
數學原理:半音如何轉換為播放速率
平均律將每個八度劃分為十二個等距的半音。以半音表示的平移與 Web Audio 引擎應使用的播放速率之間的關係是指數函數 2^(n/12)。W3C Web Audio 規範透過 AudioBufferSourceNode 上的 detuning 參數描述相同的關係,由於 detune 以 cent 而非半音為單位,因此貢獻了一個 2^(detune/1200) 的因子,而 1200 cent 等於一個八度。MDN 將 playbackRate 文件化為原始取樣率的乘數,並確認低於 1 的值會使音訊變慢,而高於 1 的值則會使其加快,兩種情況都會觸發對基礎樣本的重採樣。
將八度端點代入公式可得到最清晰的參考點:
- n = +12:播放速率 = 2^(12/12) = 2^1 = 2x。檔案以兩倍速度播放,並在約原始長度一半的時間內播完。
- n = 0:播放速率 = 2^(0/12) = 2^0 = 1x。檔案播放時與解碼後完全相同。
- n = -12:播放速率 = 2^(-12/12) = 2^(-1) = 0.5x。檔案以一半速度播放,持續約原始長度兩倍的時間。
單一半音的平移在平均律的等距步進中位於 1 的兩側。+1 平移使用約 1.0595 的速率,-1 平移使用約 0.9439 的倒數。輸入上方的完全五度為 +7 半音(速率約 1.4983),下方的完全五度為 -7 半音(速率約 0.6674)。完整的半音值階梯對應一條乾淨的指數曲線,如下表所示。
| 半音平移 (n) | 播放速率 2^(n/12) | 大致的長度變化 |
|---|---|---|
| +12 | 2.0000 | 約為輸入長度的一半 |
| +7 | 1.4983 | 約為輸入長度的三分之二 |
| +1 | 1.0595 | 約為輸入長度的 94.4% |
| 0 | 1.0000 | 原始長度 |
| -1 | 0.9439 | 約為輸入長度的 105.9% |
| -7 | 0.6674 | 約為輸入長度的 150% |
| -12 | 0.5000 | 約為輸入長度的兩倍 |
這些比率直接來自樂理中定義的平均律公式;任何遵循十二平均律的變調器都會得出相同的數字。同一個半音到速率階梯的更深入逐步說明,可參考 Audio Pitch Changer Explained: Semitones and the Octave 指南。
產生的 WAV 將會和不會保留的內容
瀏覽器變調器的輸出是新編碼的未壓縮 PCM16 RIFF/WAVE 檔案。聲道配置遵循解碼後的來源,因此立體聲輸入會產生立體聲 WAV,單聲道輸入則會產生單聲道 WAV。取樣率是瀏覽器用於 OfflineAudioContext 渲染的速率,通常是輸入的原生速率。渲染中的浮點樣本會在量化為 16 位元帶正負號整數之前,先裁剪到合法的 -1 到 +1 範圍,然後以小端序交錯排列。
WAV 不會承載屬於來源容器的任何內容。原始的編解碼器、壓縮品質、位元率、ID3 標籤、嵌入的封面、章節標記、cue 點以及循環中繼資料,都會保留在手機上的原始檔案中。新檔案僅包含原始音訊樣本,這使得該結果適合用於音效設計、練習曲和快速編輯實驗,但不適合用於透明的母帶處理。與解碼後的浮點來源相比,PCM16 量化本身可能會引入少量的捨入雜訊,而且瀏覽器的重採樣器是實作定義的,因此兩個不同的 Android 瀏覽器在相同的半音設定下,可能會產生略有不同的中間波形。
強烈的升調平移是最可能暴露來源品質限制的情況。+12 平移會使播放速率加倍,並要求其重採樣器在 44.1 kHz 來源速率下,為每個原始單聲道內容生成約每秒 88,200 個樣本。在原始音高下聽不到的混疊或編解碼器瑕疵,可能在加倍後的速率下變得可聽,因此從乾淨的無損來源開始,是保持輸出乾淨的最安全方式。
何時播放速率重取樣是錯誤的選擇
覽器的音調變更器採用播放速率重取樣,這是在 Web Audio 中改變音調最簡單且最容易預測的方式。當專案需要花栗鼠式效果、用於謄寫的慢速伴奏音軌,或任何將「更短更快」(或「更長更慢」)視為目的之一的創意音調變換時,這也是唯一正確的選擇。然而,當需求要求在保持播放時長不變的情況下改變音調時,它就是錯誤的選擇;這是將音樂剪輯緊湊到影片長度、或在不改變斷句語氣的情況下重新調整人聲音調時的硬性要求。
若需要保留速度,工作流程就必須使用相位聲碼器、時間伸縮演算法,或能將這兩個維度分開處理的專用音訊編輯器。這些工具走的是完全不同的程式碼路,並不在瀏覽器音調變更器所提供的功能範圍內。任何需要時長保持固定的人,都應該從一開始就選擇不同的工具,並將瀏覽器的音調變更器視為僅適用於音調與時長可以一起變動情況的快速工具。