聲音的數碼表示(Representing Sound Digitally)

歡迎來到數碼音訊的世界!你有沒有想過,為甚麼手機或電腦能夠播放你最喜愛的歌曲、錄下你的聲音,或者播放遊戲音效?乍聽之下這簡直像魔法一樣,因為現實世界中的聲音是一道道平滑且連續的空氣振動波,但電腦卻只能理解二進制數字——純粹的 10

在這一章中,你將會學到電腦如何利用二進制編碼來捕捉、量度及儲存聲音,以及如何計算聲音檔案的大小(容量)。如果一開始覺得有點複雜,千萬不要擔心;我們會一步一步拆解每個概念!


1. 模擬聲音 vs. 數碼聲音(Analogue vs. Digital Sound)

自然界中的聲音(模擬聲音 / Analogue Sound):
在現實世界中,聲音是以連續的聲壓波(acoustic pressure waves)在空氣中傳播。當你說話、彈奏結他琴弦或拍手時,空氣會以平滑且不間斷的曲線振動。這種連續的聲音訊號稱為模擬訊號(analogue signal)

電腦中的聲音(數碼聲音 / Digital Sound):
電腦是數碼機器,以代表二進制狀態的電子訊號來儲存數據:1(高電壓)和 0(低電壓)。由於電腦是離散狀態(discrete-state)的機器,它們無法直接儲存平滑而連續的聲波。相反,電腦必須將平滑的聲波轉換成一連串的數字。

生活化比喻: 試想像模擬聲波就像一條平滑的無障礙斜道,而數碼聲波就像用積木砌成的樓梯。近看時,樓梯由一個個獨立的梯級組成;但從遠處看,它同樣能帶你向上和向下走,效果就如斜道一樣!

轉換聲音:ADC 與 DAC
為了在模擬世界與數碼世界之間進行轉換,電腦會使用兩種關鍵的硬件轉換器:

1. ADC(模擬至數碼轉換器 / Analogue-to-Digital Converter): 當你對着咪高峰(麥克風)說話時,咪高峰會將你的聲音轉換為連續的電波。ADC 會以固定的時間間隔量度(或稱為「取樣」)這個連續電波,並將測量結果轉換成電腦能夠儲存的二進制數字10)。

2. DAC(數碼至模擬轉換器 / Digital-to-Analogue Converter): 當你按下播放鍵時,電腦會將儲存的二進制數字傳送到 DAC。DAC 會將這些數碼轉換回連續的電波,推動揚聲器(喇叭)或耳機的震膜前後振動,從而在空氣中產生真實的聲音振動。

重點歸納: 真實聲音是模擬的(連續的波形)。電腦只能理解數碼數據(離散的二進制數字)。ADC 將模擬聲音轉換為二進制數據,而 DAC 則將二進制數據轉換回聲波。


2. 取樣的運作原理:核心術語

將模擬聲音轉換為數碼數據的過程稱為聲音取樣(sound sampling)。讓我們來看看你必須掌握的核心術語:

A. 甚麼是樣本(Sample)?

樣本(Sample)是指在特定時間點對聲波振幅(amplitude)(即高度、響度或電壓)所進行的一次單一量度。

B. 取樣率(Sampling Rate / Sample Frequency)

取樣率(亦稱取樣頻率)是指每秒鐘所擷取的聲音樣本數目。

量度單位: 赫茲(\(\text{Hz}\))或千赫茲(\(\text{kHz}\))。
• \(1\text{ Hz} = 1\text{ 秒鐘取樣 } 1\text{ 次}\)
• \(1\text{ kHz} = 1\text{ 秒鐘取樣 } 1{,}000\text{ 次}\)
標準基準: 音訊 CD 的標準取樣率為 \(44{,}100\text{ Hz}\)(或 \(44.1\text{ kHz}\))。這代表每秒鐘會進行 \(44{,}100\) 次量度!

C. 樣本解像度 / 位元深度(Sample Resolution / Bit Depth)

樣本解像度(亦稱位元深度取樣大小 / sample size)是指用來儲存每個振幅測量值所使用的二進制位元(bits)數目。

能夠記錄的響度/振幅水平層級數目,可以用 2 的次方來計算:
\(\text{振幅層級數目} = 2^n\)
(其中 \(n\) 為位元深度/樣本解像度的位元數)。

• 若 \(n = 8\text{ 位元(bits)}\),則有 \(2^8 = 256\text{ 個可能的層級}\)。
• 若 \(n = 16\text{ 位元(bits)}\),則有 \(2^{16} = 65{,}536\text{ 個可能的層級}\)。
標準基準: CD 音質採用 16 位元(16-bit)的樣本解像度。

記憶小貼士:
取樣率(Rate)告訴你沿水平時間軸取樣的頻密程度(以 \(\text{Hz}\) 為單位)。
解像度(Resolution)告訴你沿垂直高度/振幅軸量度的精確程度(以 位元 / bits 為單位)。

重點歸納: 數碼聲音是透過定期對聲波進行取樣而產生的。取樣率是每秒的樣本數目(\(\text{Hz}\)),而樣本解像度則是分配給每個樣本的位元數目。


3. 音質 vs. 檔案大小:取捨權衡(Trade-Off)

每當以數碼方式錄製聲音時,都必須在音質與所需儲存容量之間取得平衡。

提高取樣率(Sampling Rate)

對音質的影響: 音質更佳!透過更頻密地量度,樣本之間的時間間隔更小。數碼聲音能更準確地還原原始模擬曲線,清晰捕捉更高的聲音頻率。
對檔案大小的影響: 檔案容量更大!因為每秒鐘的聲音都要儲存更多數據點,檔案自然需要更多儲存空間。

提高樣本解像度 / 位元深度(Sample Resolution / Bit Depth)

對音質的影響: 音質更佳!更多位元能提供更精確的振幅量度。這能減少量度誤差(即量化誤差 / quantisation errors)並防止失真,令微弱聲音與響亮聲音之間的動態範圍更清晰。
對檔案大小的影響: 檔案容量更大!因為每個單一樣本都需要更多二進制位元的數據,導致整體檔案變大。

取捨關係總結:
高音質 = 高取樣率 + 高樣本解像度 \(\implies\) 檔案容量大
低音質 = 低取樣率 + 低樣本解像度 \(\implies\) 檔案容量小

重點歸納: 提高取樣率或位元深度可以改善聲音質素和清晰度,但同時必定會增加檔案的總容量。


4. 計算聲音檔案大小

要計算未經壓縮的數碼聲音檔案大小,可以使用以下簡單直接的公式:

\(\text{檔案大小(以位元 / bits 為單位)} = \text{取樣率 (Hz)} \times \text{樣本解像度 (bits)} \times \text{時間長度 (秒)}\)

如果音訊包含多個聲道(例如立體聲):
\(\text{檔案大小(以位元 / bits 為單位)} = \text{取樣率 (Hz)} \times \text{位元深度 (bits)} \times \text{時間長度 (s)} \times \text{聲道數目}\)
單聲道(Mono sound)有 \(1\text{ 個聲道}\)。
立體聲(Stereo sound)有 \(2\text{ 個聲道}\)(左聲道與右聲道音軌)。

儲存單位轉換

電腦科學中經常需要將檔案大小由位元(bits)轉換為字節(Bytes)或千字節(\(\text{KB}\)):
位元(Bits)轉換為字節(Bytes): 除以 \(8\)(\(1\text{ Byte} = 8\text{ bits}\))。
字節(Bytes)轉換為千字節(\(\text{KB}\)): 除以 \(1{,}000\)(以初中 KS3 標準課程程度為準)。


範例解說:一步一步計

題目: 一段單聲道(\(1\text{ 個聲道}\))聲音片段錄製了 \(10\text{ 秒}\)。它的取樣率為 \(2{,}000\text{ Hz}\),樣本解像度為 \(8\text{ bits}\)。請計算檔案大小,分別以字節(Bytes)千字節(KB)表示。

第一步:列出已知數值:
• 取樣率 \(= 2{,}000\text{ Hz}\)
• 位元深度 \(= 8\text{ bits}\)
• 時間長度 \(= 10\text{ 秒}\)
• 聲道數目 \(= 1\)

第二步:計算以位元(bits)為單位的檔案大小:
\(\text{檔案大小 (bits)} = 2{,}000 \times 8 \times 10 \times 1\)
\(\text{檔案大小 (bits)} = 160{,}000\text{ bits}\)

第三步:將位元轉換為字節(除以 8):
\(\text{檔案大小 (Bytes)} = \frac{160{,}000}{8} = 20{,}000\text{ Bytes}\)

第四步:將字節轉換為千字節(除以 1,000):
\(\text{檔案大小 (KB)} = \frac{20{,}000}{1{,}000} = 20\text{ KB}\)

重點歸納: 謹記將 取樣率(\(\text{Hz}\))\(\times\) 解像度(\(\text{bits}\))\(\times\) 時間(\(\text{秒}\))以算出總位元數,然後除以 \(8\) 即可得出字節(Bytes)。


5. 常見陷阱與常犯錯誤

以下是同學在課堂和考試中最容易犯的錯誤——大家一定要加倍留意!

錯誤 1:混淆取樣率與樣本解像度。
記住:取樣率位於水平軸(時間,單位為 \(\text{Hz}\));樣本解像度位於垂直軸(高度/響度,單位為 bits)。

錯誤 2:忘記將分鐘換算為秒。
如果題目說明錄音長度為 \(2\text{ 分鐘}\),你必須先將其轉換為秒:
\(2\text{ 分鐘} \times 60 = 120\text{ 秒}\)。千萬不要直接乘 \(2\)!

錯誤 3:忘記將 \(\text{kHz}\) 換算為 \(\text{Hz}\)。
如果題目指出取樣率為 \(44.1\text{ kHz}\),代入公式前記得先乘以 \(1{,}000\) 換算成 \(44{,}100\text{ Hz}\)。

錯誤 4:計算立體聲時忘記乘上聲道倍數。
如果題目提及立體聲(stereo),切記要乘以 \(2\)。

錯誤 5:誤以為數碼音訊是一條平滑的曲線。
數碼儲存的聲音並非平滑的實體曲線;它只是一長串離散的二進制數字,以階梯狀近似值來呈現聲波。


6. 快速溫習欄

重點清單:
模擬聲音(Analogue Sound): 自然界中存在的連續波形。
數碼聲音(Digital Sound): 電腦儲存的離散二進制數字(10)。
ADC: 模擬至數碼轉換器(咪高峰 \(\implies\) 二進制數據)。
DAC: 數碼至模擬轉換器(二進制數據 \(\implies\) 揚聲器)。
樣本(Sample): 在單一瞬間對聲波振幅進行的量度。
取樣率(Sampling Rate): 每秒的樣本數目(單位為 \(\text{Hz}\) 或 \(\text{kHz}\))。
樣本解像度 / 位元深度(Sample Resolution / Bit Depth): 每個樣本的位元數目(決定 \(2^n\) 個振幅層級)。
計算公式: \(\text{檔案大小 (bits)} = \text{取樣率 (Hz)} \times \text{解像度 (bits)} \times \text{時間 (s)} \times \text{聲道數目}\)
單位轉換: 位元(Bits)轉字節(Bytes)\((\div 8)\);字節(Bytes)轉 \(\text{KB}\) \((\div 1{,}000)\)。