音訊波形產生器將立體聲與多聲道檔案顯示為單一合併的峰值總覽,而不是分開的左右音軌或各聲道分列。時間同樣在畫布上由左至右推進,但影像中的每一條垂直線代表在該時間切片內、所有解碼聲道中最小與最大的有限樣本。一個區段可以從左聲道取得最低值、從右聲道取得最高值,反之亦然,這代表圖片保留了任何聲道的短暫峰值,卻不會捏造新的音訊訊號。原始音訊永遠不會被改寫,聲道永遠不會被平均成新的混音,SVG 中也不會以視覺方式保留任何聲道身分。若您的任務確實需要分開的左右音軌,您必須使用一款會將每個聲道各自呈現為一條音軌的音訊編輯器;本產生器只能產生合併的檢視。整個視覺化流程都在本機完成:Web Audio 在您目前的瀏覽器分頁中解碼檔案、工具計算包絡,然後 SVG 會被產生並下載,全程不將任何資料上傳到伺服器。

how are stereo and multichannel files shown when i generate audio waveform
在波形中如何顯示立體聲與多聲道檔案

在產生器中看到的立體聲與多聲道音訊

不論您的檔案包含多少聲道,產生器在畫布上的每一欄只會繪製一條垂直峰值線。對於立體聲檔案而言,左右聲道不會上下堆疊、不會左右並排,也不會以顏色區分成獨立的音軌。對於包含三、六或八個聲道的檔案,行為完全相同:每個聲道都會送入同一個區段的最小值與最大值,每一欄只會繪製一條合併的範圍線。因為這個範圍是取自所有解碼的聲道,所以產生的圖片代表的是在該段音訊中、任一聲道所產生的最大振幅擺盪。

因此,一段安靜的主唱人聲與大聲的立體聲鼓聲混在一起時,即使在主唱無聲的切片中,畫面看起來也會跟鼓聲敲擊一樣高——最響的聲道決定上緣,最安靜的聲道決定下緣。這種取捨就是為什麼本工具被描述為峰值包絡檢視、而不是各聲道視覺化的原因,也正是當您產生音訊波形時、立體聲與多聲道檔案究竟如何繪製的誠實答案。

合併檢視是如何計算出來的

合併檢視的產生方式,是將每一個解碼後的訊框分割成大小相等的索引範圍,稱為區段。區段數量是「所要求的影像寬度」、「1000」、「解碼後的訊框數」三者中最小的一個,這樣可以避免短音訊被補上捏造的測量值,也避免長音訊產生超出範圍的 SVG。針對每個區段,實作會找出在該範圍內有貢獻音訊的每個聲道之有限最小與最大樣本,然後防禦性地將任何超出範圍的值箝制在 -1 到 1 之間,讓損壞或偽裝的檔案無法產生失控的線條高度。

接著,最小值與最大值會以一條垂直的 SVG 線繪製出來,水平置中於該區段內。垂直座標是確定性的:垂直中心位於所要求高度的一半處,全幅的正向或負向樣本會延伸到該中心上下各 45% 的高度處。頂端與底端各保留 5% 的邊界空白,讓全幅音訊不會觸碰到影像邊緣,而欄位中心則在所要求的寬度上等距分佈。

為立體聲或多聲道音訊產生波形

  1. 在瀏覽器中開啟 音訊波形產生器,並選擇一個瀏覽器可原生解碼的單一檔案——MP3、WAV、M4A、AAC、Ogg、WebM 或 FLAC。請將壓縮大小維持在 50 MiB 以內、解碼後長度維持在 5 分鐘以內,因為超過限制的音訊會整個被拒絕。
  2. 將 SVG 寬度設定在 320 到 1600 像素之間、高度設定在 120 到 600 像素之間、背景色彩以六位數十六進位表示、波形色彩以六位數十六進位表示。這些尺寸與色彩會被原樣寫入 SVG。
  3. 點選產生按鈕,然後查看回報的訊框數與峰值欄位數。檢查預覽或開啟可展開的 SVG 文字檢查器,確認尺寸與線條數符合您的預期,然後使用下載按鈕下載精確的 SVG。

工具回報的峰值欄位數等於 SVG 中實際繪製的垂直線數量。如果您的檔案長度短於所要求的寬度(以訊框計算),繪製的欄位數會較少;如果檔案遠長於該寬度,欄位數會被限制在 1000,以維持 SVG 的有限大小。瀏覽器並非全部支援每種編解碼器,所以遇到不支援、損壞、空的或偽裝的檔案時,會回傳錯誤而非產生部分圖片。選擇替換檔案、變更選項、重新產生、或離開頁面,都會撤銷已失效的物件 URL,避免舊的影像看起來像是代表新的輸入。

適用於立體聲與多聲道檔案的輸入限制

本站音訊工具所採用的相同解碼資料限制,也適用於立體聲與多聲道輸入,而且這些限制的重要性往往超出乍看之下的理解。一個小的壓縮檔案在解碼後可能展開成大得多的浮點聲道陣列,特別是當檔案包含多個聲道時;超過限制的音訊會整個被拒絕,而不是靜默地截斷成前幾秒。本工具接受 1 到 8 個聲道、任何介於 8,000 到 192,000 Hz 之間的取樣率,前提是總聲道樣本數保持在 3000 萬以下。所接受的輸入範圍彙整如下。

限制條件接受範圍
壓縮檔案大小最高 50 MiB
解碼後長度最高 5 分鐘
聲道數1 到 8
取樣率8,000 到 192,000 Hz
總聲道樣本數最高 30,000,000
SVG 寬度320 到 1,600 像素
SVG 高度120 到 600 像素
峰值欄位數min(width, 1000, decoded frames)

解碼透過 Web Audio API 進行,所產生的浮點陣列在任何區段計算執行之前都會受到上述限制的約束(請參閱 AudioBuffer 規範)。如果檔案解碼成功,但聲道數、取樣率、長度或總聲道樣本數超出範圍,整個波形產生程序會被拒絕,而不會被靜默地截斷。

誠實地閱讀合併峰值總覽

合併總覽是一種峰值包絡,而不是經過校準的響度量測器,也不是頻譜圖。時間如預期由左至右推進,但每一條線的垂直範圍代表的是該樣本區段的振幅範圍,而不是頻率內容。兩段錄音可能呈現相似的峰值,聽起來卻截然不同,因為感受上的響度取決於長度、頻率平衡、動態範圍與播放條件。

這個影像並不會顯示截剪歷史、聲道間的相位、人聲與音樂的差異、節拍、音符、暫態或母帶合規性,因此不應被用來診斷聽力、設備或混音問題。在這些限制之內,圖片忠實呈現了每個區段中任一聲道所產生的最大振幅擺盪——這正是大多數讀者期待從一個快速的視覺參考中得到的結果。

當您需要分開的聲道音軌時

合併總覽是本產生器刻意的選擇,而它並非觀看多聲道音訊的唯一方式。如果您的任務仰賴以視覺方式區隔立體聲錄音的左右音軌,或是要逐聲道檢查環繞混音,您需要一款會將每個聲道各自呈現為一條音軌的音訊編輯器——例如桌面端的數位音訊工作站。

在瀏覽器分頁中,要得到多聲道圖片最簡單的做法,是先使用多軌編輯器將檔案拆成單聲道檔案,然後用同一個產生器為每個檔案分別產生一個 SVG。每個產生的 SVG 仍然是其單一聲道的合併總覽,但將它們並排顯示,就能在不改變底層方法的前提下,恢復逐音軌的檢視方式。下載的是文字式 SVG,而不是 PNG、JPEG、影片或音訊,因此同一個 SVG 可以在任何支援 SVG 的程式中開啟,以便編輯或在任何顯示尺寸下縮放。

如果您正在權衡各種選項,產生音訊波形時避免犯錯 一文對此有詳細說明。