WavPack

WavPack是由David Bryant開發的一個自由、開放原始碼的無損音訊壓縮格式，其文件的後綴名為.wv。

## 特點

WavPack允許用戶壓縮、恢復8、16、24、32位整型以及32位浮點表示的WAV格式音訊文件，另外它還支持多聲道數據流以及非常高的採樣率。與其它無損壓縮機制一樣，這種演算法的壓縮比例也隨源數據的不同而改變。但對於普通的流行音樂，通常介於30%到70%之間；對於古典音樂以及其它音域較寬的音樂，通常能得到更高的比例。

另外WavPack引入了一種獨特的「混合」模式，它使用一個附加的文件從而也具有了有損壓縮的優點。與其它方法只生成一個文件不同，這種模式生成兩個文件，其中一個是相對較小、可以單獨使用的高質量有損壓縮文件，另外一個是與有損文件一起使用實現無損數據恢復的「修正」文件。對於一些使用者來說，這就意味著他們不必再考慮使用有損還是無損壓縮這樣一個問題。

### 概要

- 快速高效壓縮與解壓
- 開放原始碼，按照類似於BSD許可證的方式發布
- 多平台
- 出錯時的健壯性
- 支持流媒體
- 支持多聲道以及高解析度
- 混合／有損模式
- 硬體支持
- 支持標籤（ID3v1、APEv2標籤）
- 支持RIFF格式的大塊數據
- 兼容回放增益
- 良好的軟體支持
- 能夠生成Win32平台下的自解壓文件
- 支持32位浮點數據流
- 支持嵌入式節目單
- 包含用於完整性檢查的MD5散列函數
- 可以按照對稱或者不對稱模式進行編碼（降低編碼速度可以提高解碼速度）。

## 歷史

David Bryant在1998年年中開始了WavPack的開發並發布了1.0版，這第一個版本只有無損壓縮解壓音訊這項功能，但是當時它就已經躋身效率與速度比最好的編碼器之列了。

在1.0版之後，很快Bryant就發布了2.0版，這個版本的特點是使用了有損編碼，它直接對預測殘餘進行了量化以減少數據量，而沒有使用心理聲學masking模型。

1999年，他發布了3.0版，新穎的功能成為這個版本的特點，例如通過減小壓縮比實現的快速模式、壓縮無頭原始PCM音訊文件以及使用32位循環冗餘校驗的錯誤檢測功能。

WavPack的開發仍在繼續，在後面的3.x版本中添加的一個主要特點就是混合模式，在這種模式下編碼器生成一個有損文件以及一個糾正文件，這樣它們就可以經過解壓還原出原始的PCM數據流。

WavPack 4包括許多重要的改進，如快速搜索、多聲道支持、高解析度音頻支持等等，這些特性使它成為功能最全的時髦無損音訊壓縮器之一。4.31版本針對Linux/OSX的錯誤修正之後得到用於這些系統的4.32版，但是它沒有與質量相關的更改。WavPack 4.4版本包括的功能有針對單聲道或者接近單聲道的音訊數據的改進處理、以及重新設計的壓縮質量系統，這種改進可以以大幅增強的效率實現類似的壓縮。

## 支持

### 軟體

- 由Speek開發的自定義 Windows前端
- NullSoft Winamp（插件 w/ ReplayGain & Media Library支持）
- foobar2000 - Advanced Audio Player（官方插件，w/ ReplayGain & Cuesheets支持）
- Windows Media Player（帶有 CoreWavPack directshow濾波器）
- XMMS（帶有Kuniklo的 插件，原始碼）
- LAMIP （官方插件）- 用於Linux及相關系統的模塊化音訊播放器 - 主頁
- Adobe Audition (and CoolEdit) ( filter w/ 32-bit floats & extra info save support)
- mp3Tag Pro - 通用標籤編輯器
- dBpowerAMP - Music Converter / Audio Player / CD Writer（官方插件）
- Apollo Audio Player （插件 支持w/ ReplayGain）
- FonePaw Video Converter Ultimate - 支持多種格式的影片播放器
- MusikCube - 自由音訊播放器（w/ WavPack 插件）
- Ahead Nero Burning ROM（w/ 插件）
- MrQuestionMan - Audio Identifier
- TuneFab Audible Converter -自由的音訊播放器
- Burrrn - 直接從不同的格式燒制音訊CD
- Mp3tag - 通用標籤編輯器
- Exact Audio Copy - CD Ripper（w/ wavpack.exe 是外部壓縮程序）
- TuneFab Music Converter - 自由的多種格式音訊轉換器與播放器
- VideoSolo Blu-ray Player - 支持藍光影片的播放器
- VUPlayer - 自由的多種格式音訊播放器與轉換器
- TuneFab M4V Converter - 自由的影片播放器
- mp3Tag Pro - 通用標籤編輯器
- Xist (beta) - 支持WavPack的OS X播放器（原始碼）
- 帶有官方 插件 的 XMPlay， - 用於Windows的自由小播放器
- Cog - 支持WavPack的用於OS X的新播放器
- MPXPlay - 支持WavPack的基於DOS（MS-DOS、FreeDOS、DR-DOS）的播放器
- 1by1 與 Coolplayer，帶有Winamp WavPack 插件
- 不同平台的WavPack編譯版本
- The GodFather - 標籤與音樂管理器
- DumpMedia Music Converter -支持包括WAV在內的多種音訊格式的智能界面音訊轉換器
- Wavpack4Wavelab - 第一款商用／專業波形編輯的第三方文件輸入輸出插件 Steinberg Wavelab 5/6
- Easy CD-DA Extractor - 商業CD音軌抓取、編碼及轉換工具
- OggdropXPd - 直接從包括WavPack在內的各種無損格式轉換成有損開放原始碼Ogg Vorbis格式
- Quintessential Player帶有 插件
- KSP Sound Player中預設支持

### 硬體

- 運行開放原始碼Rockbox固件的播放器，如iriver ihp100、ihp120、ihp140、H320、H340以及iPod Video/Color/Photo/Nano（Rockbox主頁）
- Roku PhotoBridge HD （w/ 插件）

### DVD+Audio

自從2005年起，WavePack就開始用於DVD+Audio上的音訊壓縮取代DVD-Audio上昂貴的Meridian Lossless Packing。

## 技術

為了保證高速運算，WavPack完全使用整數算術這樣一種簡單的預測，在「最快」模式下，預測值是前面兩個採樣的簡單數學外推。例如，如果前面兩個採樣是 -10與20，那麼預測值就是50。在預設模式下，使用一個簡單的自適應因子衡量前面採樣對於預測影響的權重。在我們的這個例子中預測值可能從20到50之間變化，也就是前面的採樣從沒有影響到影響最大這樣一個範圍變化。這個權重因子隨著音訊數據頻譜特性的變化而不斷更新，所以它是「自適應」的。

然後從待編碼的實際採樣中減去生成的預測值得到誤差，在單聲道模式下這個值直接送到編碼器去，但是立體聲信號通常在兩個聲道之間有一些能在後面使用的相關性，所以左右聲道分別計算出各自的誤差值。在「快速」運算模式下這兩個新生成的值直接送到編碼器而不管它是左聲道還是右聲道。在預設模式下，這個誤差值總是隨著平均、左或者右三者之一發送到編碼器。自適應算法根據聲道不斷變化的平衡性確定發送三者中最有效的一個。

David Bryant為WavPack開發了一個獨特的數據編碼器，他認為這個編碼器有兩個方面要比Rice編碼優秀。由於對於這種類型的數據來說Rice編碼代表了最優的位編碼（有時也稱作哈夫曼編碼）。WavPack編碼要比它稍稍遜色一點，大約差距是0.15位／採樣，也就是說16位數據大約差1%。WavPack編碼器的第一個優點是在編碼前數據無需緩存，它將每個採樣直接轉換成位碼。這從計算的角度來講效率更高，在一些延遲控制很關鍵的應用中表現更好。它的第二個優點是很容易適應有損編碼，這是因為除了隱含的一個最高位之外所有重要的數據位都直接進行發送。按照這種方法，就可以只傳送每個採樣中帶有符號的最高3位。實際上，可以只傳送符號位以及用平均3.65位／採樣表示的使用隱含最高位的採樣值。

這個編碼機制用於實現WavPack的「有損」模式。在「快速」模式下，非自適應去相關的輸出只是簡單地四捨五入到最近的特定位數的編碼值。在預設模式下，使用自適應的去相關，它可以將噪聲平均減小1 dB，並且當前以及下一個採樣在選擇兩個可用的編碼值時都參與衡量，這又將噪聲減小1 dB。

由於開發者認為整數運算受不同晶片的影響較小，而晶片的不同可能帶來無損壓縮特性的變化，如Pentium 浮點運算的缺陷就是一個明顯的例子，所以他決定在WavPack演算法的數據處理中不使用浮點運算。使用浮點運算的無損壓縮工具如果運行在有缺陷的Pentium晶片上可能就會生成不同的結果。即使我們不考慮這些已經存在的缺陷，浮點運算也很複雜，在不同的「正確」實現之間也可能有微小差別，對於這類應用可能會帶來麻煩。為了進一步加強WavPack壓縮數據的完整性，編碼器在生成的數據流後包括有一個32位的錯誤檢測碼。

WavPack的原始碼非常易於移植到其它平台，它已經可以在幾種不同的Unix系統上編譯，如Linux、Mac OS X、Solaris、FreeBSD、OpenBSD、康柏Tru64、HP-UX等等，另外它也可以在Microsoft Windows、DOS、Palm OS以及OpenVMS上編譯。它可以在許多平台上工作，如x86、ARM架構、PowerPC、AMD64、IA-64、SPARC、DEC Alpha、PA-RISC、MIPS以及Motorola 68k。

## 外部連結

- 官方網站
- Hydrogenaudio Forums上的WavPack論壇
- ReallyRareWares上的歷史版本
- Hydrogenaudio Wiki上的 幾種無損音訊編碼器比較

## 基本資料

- 開發者：David Bryant
- 軟體版本週期：5.8.1
- 作業系統：跨平台
- 類型：音訊格式、編解碼器
- 許可協議：BSD授權條款
- 網站： www.wavpack.com