﻿# 理解 WAV 格式：從 PCM 編碼格式到檔案大小計算方法

最近正在設計一個「即時口譯」的應用，可以幫助我們客戶在舉辦現場活動或即時線上活動時，可以提供多語言的口譯服務。我們需要將語音輸入訊號轉換為文字，然後再轉換為其他語言的語音。在這個過程中，首先要先深入瞭解常見的 WAV 格式，瞭解之後才能做一些更深層的細部操作。這篇文章將深入探討 WAV 格式，從 PCM 編碼格式到檔案大小計算方法，讓我們更好地處理音頻資料。

![An abstract digital artwork representing WAV audio format and PCM encoding. The image features a blend of sound waveforms, binary code, and mathematic](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/e5b9f58d1d9df8e33485-9c90a00e-e372-434e-8a0e-f5fe66f71970.webp)

### 什麼是 WAV 格式？

`WAV` (Waveform Audio File Format，波形音頻檔案格式) 是一種常見的音頻檔案格式，通常用於儲存**未壓縮**的音頻數據，它廣泛應用於音樂製作、音效編輯和廣播等需要高品質音頻的場景。它是由微軟和 IBM 於 1991 年開發的音頻檔案格式，基於資源交換檔案格式 (`RIFF`) 的子集。

> `RIFF` (Resource Interchange File Format，資源交換檔案格式) 是一種用於多媒體資料的檔案格式，主要用於儲存音頻、影像和其他多媒體數據。RIFF 檔案由一系列稱為「區塊」 (chunks) 的資料結構組成，每個區塊包含一個**識別符號**和**資料**。RIFF 檔案的結構類似於 `IFF` (Interchange File Format)，但專為 Microsoft Windows 系統設計。

`WAV` 檔案的優點與缺點如下：

-   優點
    
    -   未壓縮，保持原始音質，適合專業錄音和編輯。
    -   廣泛兼容，幾乎所有音頻軟體和硬體都有支援。
    -   無數據損失，適合長期檔案保存。
-   缺點
    
    -   檔案大小大，儲存和傳輸成本高。
    -   不適合串流媒體或網上分享，特別是長時間錄音。

`WAV` 檔案的常見用途：

-   音樂製作和音效編輯，確保高品質音頻。
-   音頻檔案保存，如圖書館和研究機構 (如 [Macaulay Library](https://www.macaulaylibrary.org/resources/why-wav/))。
-   遊戲音效和廣播，需高保真度。
-   與音頻軟件兼容，如 DAW (數位音頻工作站)。

### 關於 PCM 編碼格式

`WAV` 檔案通常使用 `PCM` (Pulse Code Modulation) 編碼，這是一種將**音頻訊號**轉換為**數位資料**的方法。`PCM` 是 `WAV` 檔案中最常見的編碼方式，它保留了**音頻的原始品質**，適合高品質音頻的應用。

`PCM` (Pulse Code Modulation，脈衝編碼調變) 是一種數位訊號編碼技術，用於將類比訊號轉換為數位訊號。以下是 PCM 的基本工作原理：

1.  **取樣 (Sampling)**
    
    將連續的類比訊號在固定的時間間隔內進行取樣，得到一系列離散的數據點。
    
2.  **量化 (Quantization)**
    
    將取樣得到的數據點轉換為有限數量的離散值，通常是將訊號幅度分成若干級別。
    
3.  **編碼 (Encoding)**
    
    將量化後的離散值轉換為二進制數據，形成數位訊號。
    

`PCM` 廣泛應用於音頻數據的數位化，例如電話系統、CD 音頻和其他數位音頻應用中。PCM 的優點是能夠提供高品質的音頻訊號，但缺點是數據量較大，因為它是無壓縮的音頻格式。

#### WAV 與 PCM 的關係

`WAV` 是檔案格式，而 `PCM` 是音頻數據的編碼方式。

兩者關係可比喻為：

-   `PCM` 是 **純粹的音頻原料** (一連串數位訊號)。
-   `WAV` 是 **裝在盒子裡的原料**，盒子上標有說明書 (Metadata)，告訴播放器如何處理數據。

`WAV` 檔案通常包含 PCM 數據，但也可能使用其他編碼，如 ADPCM (適應性差分脈衝編碼調製) 或 MP3，雖然這較少見。

例如，16 位元、1 聲道、16kHz 的 WAV 檔案，其**資料分塊** (chunk) 就是 PCM 編碼的，適合語音錄音。

### 深入理解 WAV 格式

`WAV` 檔案的特點主要包括以下幾個方面：

-   **位元深度** (bit depth)
    
    這是指每個**音頻樣本**使用的位數，以常見的 `16-bit` 位元深度為例，`16-bit` 提供了約 `65,536` 個可能的**幅度值** (amplitude value)，影響動態範圍和音質。動態範圍約為 96 dB (分貝)，適合 CD 品質的音頻，平衡了細節和檔案大小。
    
    `96 dB` 是指聲音的**音量**或**強度**，單位是**分貝** (dB)。分貝是一種**對數單位**(Logarithmic Unit)，用於表示**聲音的強度**或**功率水平**。
    
    > 對數單位 (Logarithmic Unit) 是一種使用**對數尺度**來表示數值的單位。這種單位的特點是數值的變化是以**對數**的形式表示的，而**不是線性的**。對數單位常用於表示範圍很大的數值，例如聲音強度、地震強度和信號功率等。除了分貝，常見的對數單位還有貝爾 (Bel) 或 里氏震級 (Richter Scale)，其中 Richter Scale 用於表示地震強度的單位。里氏震級是以 10 為底的對數單位，每增加 1 級表示地震能量增加約 31.6 倍。
    
    96 dB 是一個相對較高的音量，通常相當於非常響亮的聲音，例如：
    
    -   一個繁忙的城市街道的噪音大約是 85 dB
        
    -   一個汽車喇叭的聲音大約是 100 dB
        
        在數位音頻中，96 dB 也可以用來描述動態範圍，即從最安靜到最響亮的聲音之間的差異。這通常與音頻的取樣位數有關，例如 16-bit 的 PCM 音頻的理論動態範圍約為 96 dB。
        
-   **聲道數** (channels)
    
    在單一檔案中儲存的音頻數量，`1` 為**單聲道** (mono)，`2` 為**立體聲** (stereo)。
    
    我們常聽到的**立體聲** (`stereo`) 音頻是由**左聲道**和**右聲道**組成的，那就代表有 2 個聲道，這樣可以營造出空間感和立體效果。
    
    在某些情況下，音頻可能只有**單聲道** (`mono`)，那就代表只有一個聲道，例如你在用一支麥克風收音的時候，理論上就只會有一個聲道。但是我們用錄音軟體錄製的時候，通常會幫你複製成兩個聲道。這是因為大部分人的喇叭都有立體聲 (兩個喇叭)，如果你在播放單聲道的音檔時，就有可能只有一個喇叭有聲音，一般人可能會覺得怪怪的，感覺喇叭好像壞了。
    
    我們買音響的時候，有人會刻意買 5.1 聲道的音響，那就代表你在看影片時可以同時播放 5 個聲道，其中 1 個是低音炮，另外 5 個是喇叭，這樣可以營造出更加立體的效果。不過，如果你觀看的影片來源並沒有這麼多的聲道，那麼播放時也不會真的發揮身歷其境的效果。相對的，聲道數越多，檔案大小也會越大，因為需要更大的頻寬來傳輸更多的聲道數據。
    
    我們在做聲音處理的時候，尤其是做「即時轉錄」音訊的場景，大部分時候只需要**單聲道**就足夠了，因為這樣可以節省一半的空間，也可以減少一半的計算量。
    
    當然，如果你的活動有多位講者，每位講者各有一個麥克風，每個麥克風要分別做不同的轉錄，那就可能會需要兩個或更多聲道，這些資訊都可以同時儲存在一個 WAV 檔案中。
    
-   **取樣率** (Sampling Rate)
    
    **取樣率**是指**每秒鐘**對**連續訊號**進行**取樣**的次數，單位是**赫茲** (`Hz`)。取樣率越高，數位化後的訊號越能精確地重現原始的類比信號，也意味著音訊的品質越好。
    
    > **赫茲** (Hertz) 是頻率的國際單位，表示每秒發生的週期性事件的次數。它是以德國物理學家[海因里希·赫茲](https://zh.wikipedia.org/zh-tw/%E6%B5%B7%E5%9B%A0%E9%87%8C%E5%B8%8C%C2%B7%E8%B5%AB%E5%85%B9) ([Heinrich Hertz](https://en.wikipedia.org/wiki/Heinrich_Hertz)) 的名字命名的。赫茲的應用範圍非常廣泛，包括音頻、電磁波、計算機時鐘速度等。
    
    若**取樣率**為每秒 `16,000` 次，我們會用 `16kHz` 表示，根據**奈奎斯特定理**(Nyquist Theorem)，該數位音頻最多只能捕捉最高 `8kHz` 的頻率，適合語音應用 (如電話錄音)，但對於音樂可能缺乏高頻細節。由於人耳可聽範圍約為 20kHz，因此若要滿足人類音樂的需求，取樣率可能需要 `48kHz` 以上，才能滿足大部分的人類。
    
    > **奈奎斯特定理** (Nyquist Theorem)，也稱為[奈奎斯特-香農取樣定理](https://zh.wikipedia.org/wiki/%E9%87%87%E6%A0%B7%E5%AE%9A%E7%90%86) ([Nyquist-Shannon Sampling Theorem](https://en.wikipedia.org/wiki/Nyquist%E2%80%93Shannon_sampling_theorem))，是數位訊號處理中的一個基本定理。它描述了如何從數位取樣中準確重建原始的類比信號。
    
    以我們這次的專案來說，16kHz 的取樣率已經足夠應付大部分的語音應用，因為人類語音的頻率範圍通常在 0Hz 到 4kHz 之間。
    

### 對於 WAV 檔案大小估算

要計算 WAV 檔案的大小，只要理解上述原理，就不難透過公式計算出可能的大小。

檔案大小的計算公式為：檔案大小 (位元組) = (取樣率 × 位元深度 × 聲道數 × 持續時間) / 8。

-   範例一：`16-bit`、`1 channel`、`16kHz` 的 WAV 檔案大小
    
    16-bit 表示每個樣本使用 16-bit 數據，1 channel 表示單聲道音頻，16kHz 表示每秒 16,000 次取樣。
    
    檔案大小可通過以下公式計算：
    
    檔案大小 (位元組) = **取樣率** \* **位深度** \* **聲道數** \* **持續時間** (秒)
    
    例如，10 秒的音頻檔案大小為：
    
    16,000 x 16 x 1 x 10 = 320,000 bytes = 320 KB
    
    如果要播放這 10 秒的音頻，每秒的傳輸速度就必須為 320 KB / 10 = 32 KB/s
    
    轉換為 bit 單位的話，就是 32K x 8 = 256 Kbps
    
-   範例二：`32-bit`、`2 channel`、`48kHz` 的 WAV 檔案大小
    
    檔案大小可通過以下公式計算：
    
    檔案大小 (位元組) = **取樣率** \* **位深度** \* **聲道數** \* **持續時間** (秒)
    
    例如，10 秒的音頻檔案大小為：
    
    48,000 x 32 x 2 x 10 = 30,720,000 bytes = 30,720 KB = 30.72 MB
    
    如果要播放這 10 秒的音頻，每秒的傳輸速度就必須為 30,720 KB / 10 = 3,072 KB/s
    
    轉換為 bit 單位的話，就是 3,072 K x 8 = 24,576 Kbps
    

學會計算 WAV 檔案大小，有助於評估**頻寬**與**儲存**需求，特別是與壓縮格式 (如 MP3) 相比，WAV 檔案通常較大。

#### 結論

WAV 檔案是高品質音頻的理想選擇，特別適合專業應用和長期保存。理解其結構、與 PCM 的關係，以及如何計算檔案大小，有助於更好地管理音頻資源。對於需要壓縮或網上分享的場景，可考慮 `MP3` 或 `FLAC` 等格式。

### 相關連結

-   [WAV - Wikipedia](https://en.wikipedia.org/wiki/WAV)
-   [WAV File Format Specification](https://docs.fileformat.com/audio/wav/)
-   [Understanding Audio File Formats](https://www.izotope.com/en/learn/whats-the-difference-between-file-formats.html)
-   [Why wave (.wav) files? - Macaulay Library](https://www.macaulaylibrary.org/resources/why-wav/)
-   [PCM - Wikipedia](https://en.wikipedia.org/wiki/Pulse-code_modulation)
