AI 怎麼「聽」一段聲音?
你對手機說「你好」,畫面顯示出「你好」。麥克風收到的明明是聲音,這兩個字是怎麼來的?
接續〈AI 怎麼「看」一張圖片?〉,先把過程分成四步:聲音 → 按時間記成數字 → 模型 (Model) 計算 → 解讀成文字。 和圖片一樣,數字只是材料;把數字轉成辨識結果,還需要學好的計算方式。
聲音怎麼記成數字?
說話會讓空氣產生振動。麥克風把這些變化轉成電的訊號 (Signal),錄音裝置再每隔一小段時間記下當時的數值。這個「定時記一筆」的動作叫取樣 (Sampling)。
所以,數位錄音不是一張寫著詞語的表,而是一串有先後順序的數字。把時間畫在橫軸、數值畫在縱軸,就得到波形 (Waveform)。
可以想成沿路定時拍照:每張照片記住一個時刻;排回時間順序,才能追蹤發生了什麼。聲音取樣記住的是訊號數值,不是詞語。沒有哪一筆數字直接代表「你」或「好」。
一秒記多少筆,叫取樣率 (Sample Rate)。例如 16,000 Hz 表示每秒記 16,000 筆;赫茲 (Hertz, Hz) 的意思是每秒的次數。這不是所有模型共同的規格:聲音資料和模型要求的取樣率需要相容。
先用簡單的短音調看取樣值,不急著拆開人聲的複雜變化。
先猜猜:同一音調變小聲時,是數字往 0 靠近,還是取樣時間改變?開啟活動切換「較小音量」,對照波形與表格,也可播放短音調。手機可切換設定、波形與數字、解讀面板。
波形變小,不等於模型已經聽懂
活動把振幅 (Amplitude) 減半,也就是讓訊號離 0 的幅度變小:最高值從 0.200 變 0.100,最低值從 −0.200 變 −0.100。取樣時刻不變,波形重複的快慢也不變。
正值、負值表示訊號在 0 的不同側,負值不是「負的音量」。數字也不是詞語的編號;不同音訊格式可以用不同範圍表示訊號。
這裡改變的是輸入資料。真實說話時,同一句「你好」可以大聲、輕聲,也可以由不同的人說;錄下來的數字不會完全相同。辨識系統需要從這些變化中找出和詞語有關的線索,不能只對照一串固定數字。
活動只生成固定短音調與取樣示意,沒有辨識模型,因此沒有「辨識正確率」可看。它讓你觀察資料的表示;聲音已經變成數字,和聲音已經辨認出內容,是兩個不同階段。
那麼「你好」是在哪一步出現的?
將錄下的聲音辨認成文字,叫語音辨識 (Speech Recognition),也常寫成自動語音辨識 (Automatic Speech Recognition, ASR)。追一次常見流程:
| 步驟 | 收到什麼? | 做什麼? |
|---|---|---|
| 整理輸入 | 按時間排列的聲音數字 | 按模型要求處理取樣率、聲道等格式,準備相容輸入,稱為前處理 (Preprocessing) |
| 模型計算 | 整理好的輸入 | 使用訓練 (Training) 學到的計算方式,利用一段時間內的聲音線索,產生辨識所需的輸出 |
| 解讀結果 | 模型的輸出 | 按該模型的規則整理成文字,再由服務顯示「你好」 |
模型不是把每筆取樣值直接換成一個字。它要利用一段聲音中的變化;不同模型整理與解讀輸出的方式可以不同。
有些模型接收波形數字;有些先把聲音轉成頻譜圖 (Spectrogram),呈現不同時刻含有哪些頻率 (Frequency) 成分。這是另一種表示聲音的方式,不是文字答案。前處理要配合模型,不能把其中一種方式當作全部語音 AI 的固定步驟。
補充:取樣率和音調頻率都可能用 Hz,但問的事不同。取樣率問「一秒記幾筆」,音調頻率問「振動一秒重複幾次」;提高取樣率不等於把原音調變高。
模型的辨識能力怎麼來?
常見做法是準備許多錄音和對應文字,例如不同的人說「你好」,都配上「你好」的標記。讓模型先辨識,比較它的輸出和標記,再調整內部的參數 (Parameter);反覆進行,就是訓練。
調整的不是「某筆聲音數字的意思」,而是模型如何利用聲音線索計算出結果。聲音與文字是訓練材料,參數保存調整後的計算數值。
之後辨識一段新錄音,是推論 (Inference):這次換輸入,使用已訓練的參數計算,不需要每說一句話就重新訓練。這只是常見的訓練例子;有些做法也會先用沒有文字標記的聲音學習,再接辨識任務。
能辨認乾淨的錄音,不代表背景吵雜、不同口音或多人同時說話時都能成功。這些差異要用新的錄音檢查;不能由這個短音調活動推估辨識能力。這和〈訓練時全答對,為什麼遇到新資料還是會錯?〉是同一個問題。
「聽聲音」不只一種任務
| 想得到的結果 | 任務例子 |
|---|---|
| 說了哪些字 | 語音辨識,輸出文字 |
| 是狗叫、門鈴,還是汽車聲 | 聲音分類 (Audio Classification),輸出類別 |
| 這一段和下一段是不是同一個人說的 | 說話者辨識 (Speaker Recognition),處理說話者身分 |
輸入都可以是聲音,輸出要求卻不同。會分辨門鈴的模型,不因此就能把語音寫成文字。
「你好」變成文字,只代表辨認出了說的內容。要回答這句話,還需要對話系統接著處理。 一種做法是把辨識文字交給語言模型 (Language Model);也有能直接處理聲音輸入的多模態 (Multimodal) 模型,不必先經過獨立的文字辨識服務。產品的組合方式可以不同,不能把「聽聲音」和「生成文字」當成同一套必然流程。
先記住這條主線:聲音的數字保留隨時間變化的材料,模型用學到的方式計算,系統再按任務解讀結果。 想了解聊天模型如何接續回答,可往下一章〈我傳一句話給 AI,它到底怎麼產生回答?〉。
參考:Hugging Face 聲音資料、取樣與頻譜圖、語音辨識流程與相容的取樣率、聲音分類的任務例子、直接接受聲音的多模態模型例子(2026-10-05 查核)。本章介紹常見流程,不指定所有模型的格式、架構或訓練配方;活動為固定音調的取樣示意。