語音與聽覺:從語音辨識到 Speech LLM(2026 整合版)
大型語言模型的語言學基礎 W09語音
第 9 週

語音與聽覺

Multimodal I: Speech Models, Prosody & Auditory Perception
模擬所用的數值與模型輸出皆為教學示意;引用的實驗數字另註出處。標有喇叭的圖可以按鍵播放合成的聲音。

前八週,模型讀到的都是文字。文字是語言的書寫形式,早已替我們把連續的聲音切成一個個字。本週回到語言最原初的形態:聲音。說話的聲波沒有空格、沒有標點,也沒有現成的「音」可以讀;同一個「媽」字,男聲女聲、快說慢說,波形都不一樣。語音模型要如何從這樣的訊號裡聽出語言呢?本週就來看它們怎麼做,以及它們是否真的經過語言學所說的「音素」這一層。當模型進一步能聽懂問題、開口回答,我們還要追問:那些沒有寫進逐字稿的語氣、停頓與言外之意,模型真的聽見了嗎?

本週問題

語音模型是先辨音、再解義,還是根本沒有音素這一層?
如果它能直接聽懂人說話,是否還需要先把聲音化成文字?

9.1總覽:從聲波到語言理解

早期的系統一站一站辨識聲音;後來的模型能直接產生文字。如今,Speech LLM 更想跨出一步:不只聽出「說了什麼」,還要理解「怎麼說」與「為何這麼說」。

音素(phoneme):一個語言中能區別意義的最小語音單位。華語的「八」與「趴」只差在聲母是否送氣,ㄅ與ㄆ因此是兩個音素;英語的 [p] 與 [pʰ] 卻不區別意義,只是同一音素的兩個變體。音素是語言學的抽象單位,而不是聲波裡看得到的實體。

圖 9.1音素在哪一站互動

點選三種架構中的任一站,看它的輸入、輸出、「音素」是否以明確的形式存在,以及這一站的圖解。圖解以同一句「媽媽罵馬」(mā ma mà mǎ)貫穿:四個字聲母相同、韻母相同,只靠聲調區分。

年代代表做法中間單位本講義
1980–2010 年代隱馬可夫模型+高斯混合(HMM-GMM),配合發音詞典與語言模型音素、三連音素(明確設計)圖 9.1
2010 年代中深度網路聲學模型;CTC 與注意力式的端到端模型字元或次詞(音素被省略)9.4
2020–2022自監督預訓練(wav2vec 2.0、HuBERT);大規模弱監督(Whisper);語音生成(AudioLM)連續向量、量化單位或文字詞元(依架構而異)9.3、9.5
2023–2024SpeechGPT、AudioPaLM、SALMONN 等整合語音與 LLM;Moshi、GPT-4o 推進即時對話語音向量/語音詞元+文字模型;平行音訊流9.7
2025Qwen3-Omni 等統一多模態的感知、推理與串流語音生成Thinker–Talker、語音 codec 等混合架構前沿
2026MMSU、HPSU、S2S-Arena:更直接評估語音理解、語用與副語言能力從 WER/CER 走向語意、韻律及互動評估前沿
先分清三個名稱

ASR(自動語音辨識)想知道的是「說了哪些字」;Speech LLM 則把語音帶進大型語言模型,使它能回答問題、理解指令,甚至用聲音回應。Spoken Language Model(SLM) 的範圍更廣:有些模型直接學習語音序列的規律,未必以文字 LLM 為核心。這些名稱不是彼此排斥的三個盒子,而是研究目標與設計方法的不同切面。像 Whisper 雖然能把語音轉成文字,仍不能把它等同於一個會即時交談的 Speech LLM。

從發展史來看,2020–2022 年的重要突破,是讓模型從大量語音學到可靠的表徵;2023 年以後,研究者開始追問:如何把這些表徵接上語言模型累積的知識與推理能力?而當語音開始直接輸入、直接輸出時,新的難題又出現了——模型能說得自然,是否也代表它聽得明白?

大型語言模型的語言學基礎 W09語音

9.2聲音的表示:聲源、濾波與梅爾刻度

說話像吹一支會變形的管子:聲帶決定音高,口腔的形狀決定音色。

聲源—濾波模型(source–filter model):Fant(1960)把發聲分成兩個獨立的部分。聲帶振動產生富含諧波的聲源,振動頻率就是基頻 F0,我們聽到的音高;聲道(咽、口、唇)像一個可變形的濾波器,把某些頻率放大,形成共振峰 F1、F2……決定我們聽到的是哪一個母音。粗略地說,F1 與舌位高低相關(舌位愈低,F1 愈高),F2 與舌位前後相關(舌位愈前,F2 愈高)。

圖 9.2同一個母音,不同的音高互動

選一個華語母音,調整基頻,按「播放」聽合成的聲音。左圖是母音在 F1–F2 平面上的位置,右圖是頻譜:豎線是諧波,曲線是聲道濾波器。共振峰數值為示意的成年男聲近似值。

拖動基頻時,諧波的豎線變密或變疏,但濾波器的曲線不動,聽起來仍是同一個母音;換母音時,曲線的峰移動,諧波的間距卻不變。這正是華語能同時用音高區別聲調、用共振峰區別母音的物理基礎:兩者在聲源—濾波模型中是兩個獨立的旋鈕。

梅爾頻譜(log-Mel spectrogram):把聲音切成短時窗,計算每個時窗的頻譜,再依人耳的感知把頻率軸壓縮成梅爾刻度,最後取對數。人耳對低頻的差異較敏感,對高頻較遲鈍;梅爾刻度模仿這一點:

m = 2595 · log10(1 + f/700)

圖 9.3梅爾濾波器組互動

調整濾波器的數量。每個三角形是一個濾波器,在梅爾刻度上等距,換回赫茲之後,低頻密、高頻疏。Whisper 用 80 個(large-v3 改為 128 個),時窗 25 毫秒、每 10 毫秒移動一次。

Python
import numpy as np

def hz_to_mel(f): return 2595 * np.log10(1 + f / 700)
def mel_to_hz(m): return 700 * (10 ** (m / 2595) - 1)

def log_mel(wave, sr=16000, n_fft=400, hop=160, n_mels=80):
    """25 毫秒時窗、10 毫秒步長、80 個梅爾濾波器:與 Whisper 的設定相同"""
    frames = np.lib.stride_tricks.sliding_window_view(wave, n_fft)[::hop] * np.hanning(n_fft)
    power = np.abs(np.fft.rfft(frames, axis=1)) ** 2          # (時窗數, 201)
    edges = mel_to_hz(np.linspace(0, hz_to_mel(sr / 2), n_mels + 2))
    bins = np.fft.rfftfreq(n_fft, 1 / sr)
    fb = np.zeros((n_mels, bins.size))
    for i in range(n_mels):                                  # 三角形濾波器
        l, c, r = edges[i:i + 3]
        fb[i] = np.clip(np.minimum((bins - l) / (c - l), (r - bins) / (r - c)), 0, None)
    return np.log10(np.maximum(power @ fb.T, 1e-10))      # (時窗數, 80)
語言學視角

梅爾頻譜已經是一種「理論」:它假設人耳怎麼聽,模型就該怎麼聽。它保留了共振峰與諧波,因此也保留了音高與聲調;但它丟掉了相位,也把時間切成 10 毫秒一格。華語送氣與不送氣的差別在於嗓音起始時間(voice onset time),大約是幾十毫秒的事,落在這個時間解析度之內。換言之,表示方式本身就決定了哪些語音對比有機會被模型學到。

大型語言模型的語言學基礎 W09語音

9.3Whisper:大量、雜亂而有用的標註

不追求每一筆標註都乾淨,而是蒐集得夠多。

弱監督語音辨識:Radford et al.(2022)從網路上蒐集約 68 萬小時附有文字稿的音訊。其中約 43.8 萬小時(65%)是英語音訊配英語文字稿,約 12.6 萬小時(18%)是其他語言的音訊配英語譯文,約 11.7 萬小時(17%)是 96 種其他語言的音訊配同語言的文字稿。文字稿品質參差,數量卻遠超過以往人工標註的語料。模型是標準的編碼器—解碼器 Transformer:編碼器讀 30 秒的梅爾頻譜,解碼器像語言模型一樣逐詞元寫出文字,文字用的是 GPT-2 的位元組層級分詞器,並為多語調整過。

圖 9.4Whisper 家族互動

點選一個模型尺寸,比較參數量、層數、記憶體與相對速度;下方是訓練資料的組成。規格依原論文表 1 與 openai/whisper 的說明文件;記憶體與速度為官方提供的約略值。

訓練資料的組成(約 68 萬小時)
時間版本主要改變
2022 年 9 月初版(tiny 至 large)開放權重;tiny 至 medium 另有只用英語訓練的 .en 版本
2022 年 12 月large-v2同樣架構,訓練更久並加強正則化
2023 年 11 月large-v3梅爾頻帶由 80 增為 128;OpenAI 報告多數語言的錯誤比 large-v2 減少 10% 至 20%
2024 年 9 月large-v3-turbo由 large-v3 剪枝而來,解碼器從 32 層減為 4 層,速度大增;未針對翻譯任務訓練

Whisper 最受重視的發現是「穩健性」。只在 LibriSpeech 有聲書上訓練的模型,在 LibriSpeech 本身可以表現極好,換到電話、會議、口音較重的語料就大幅退步;Whisper 從未在 LibriSpeech 上微調,在它的測試集上並非最佳,但與 LibriSpeech 表現相近的監督式模型相比,在其他資料集上的錯誤平均少了約 55%。論文另一張常被引用的圖顯示,各語言的錯誤率與該語言的訓練時數大致呈對數線性關係:資料愈少的語言,錯誤率愈高,中文也在表現相對較弱的一群。這與第 3 週談過的詞元化公平性,是同一類問題在語音上的版本。

Whisper 的一個巧思是把「要做什麼」也寫成詞元。解碼器的開頭是一串特殊詞元:先標明語言,再標明是轉寫還是翻譯,以及要不要時間戳記。語言辨識、轉寫、翻譯與對齊,因此都成了同一個模型「續寫」的不同開頭。

圖 9.5用詞元下指令互動

選擇語言、任務與是否加時間戳記,或加上前文提示、改成一段靜音,看解碼器的開頭詞元與輸出如何改變。音訊為一句臺灣華語:「明天下午三點在文學院開會。」輸出為示意。


詞錯誤率與字錯誤率:語音辨識的標準評估,是把輸出與參考答案對齊,計算替換 S、刪除 D、插入 I 的總數,除以參考答案的長度 N:WER =(S + D + I)/N。中文沒有空格,通常以字為單位,稱為字錯誤率(CER)。

圖 9.6錯在哪裡,取決於怎麼算互動

Whisper 轉寫中文時,常輸出簡體字或改變標點。修改辨識結果,或開關正規化,看字錯誤率如何改變。正規化使用一張小型的簡繁對照表,示範 OpenCC 這類工具的作用。

Python
def cer(ref, hyp):
    """以字為單位的編輯距離;回傳 (S, D, I, CER)"""
    n, m = len(ref), len(hyp)
    d = [[(0, 0, 0, 0)] * (m + 1) for _ in range(n + 1)]   # (成本, S, D, I)
    for i in range(1, n + 1): d[i][0] = (i, 0, i, 0)
    for j in range(1, m + 1): d[0][j] = (j, 0, 0, j)
    for i in range(1, n + 1):
        for j in range(1, m + 1):
            c, s, dl, ins = d[i-1][j-1]
            sub = (c + (ref[i-1] != hyp[j-1]), s + (ref[i-1] != hyp[j-1]), dl, ins)
            c, s, dl, ins = d[i-1][j]; dele = (c + 1, s, dl + 1, ins)
            c, s, dl, ins = d[i][j-1]; inse = (c + 1, s, dl, ins + 1)
            d[i][j] = min(sub, dele, inse)
    _, S, D, I = d[n][m]
    return S, D, I, (S + D + I) / max(n, 1)

# 正規化之後再算:
# from opencc import OpenCC; hyp = OpenCC("s2t").convert(hyp)

大規模弱監督也帶來新的問題。Koenecke et al.(2024)分析 Whisper 的轉寫,發現約 1% 的輸出含有音訊中完全沒有的整句話,多半出現在停頓或靜音較長的片段;其中約 38% 帶有暴力、不實關聯等有害內容。這正是第 6 週談過的幻覺:解碼器本質上是語言模型,聽不清楚時,它會依語料中常見的說法「補完」。中文使用者常回報的例子,是在靜音處冒出影音字幕常見的片尾套語,例如請觀眾訂閱、按讚之類的句子:訓練資料來自網路字幕,連字幕的慣用結尾也一併學了進去。另一種常見的失誤是重複迴圈:自迴歸解碼器一旦開始重複某個片語,就可能一直重複下去。

溫度後備(temperature fallback):Whisper 的官方轉寫程式先以溫度 0(貪婪或束搜尋)解碼一段 30 秒的音訊,再檢查兩個指標:文字的壓縮比(重複的文字很容易壓縮)與平均對數機率。若壓縮比高於 2.4 或平均對數機率低於 −1,就提高溫度重新解碼,依序嘗試 0.2、0.4……直到 1.0。若「無語音」的機率高於 0.6 且平均對數機率也偏低,則直接判定為靜音、跳過這一段。

圖 9.7重複的文字特別好壓縮互動

選一段解碼結果或自己修改文字,瀏覽器會即時以 zlib 壓縮、計算壓縮比;再調整平均對數機率與無語音機率(示意值),看官方程式會接受、重試還是跳過。

Python
import zlib, whisper

def compression_ratio(text):
    """與 Whisper 原始碼相同:UTF-8 位元組長度除以 zlib 壓縮後的長度"""
    b = text.encode("utf-8")
    return len(b) / len(zlib.compress(b))

model = whisper.load_model("turbo")                  # 只轉寫;翻譯請用 medium 或 large
result = model.transcribe(
    "lecture.mp3",
    language="zh",
    initial_prompt="以下是臺灣華語的課堂錄音,請用繁體中文。",   # 前文提示:影響用字與字體
    temperature=(0.0, 0.2, 0.4, 0.6, 0.8, 1.0),       # 溫度後備
    compression_ratio_threshold=2.4,
    logprob_threshold=-1.0,
    no_speech_threshold=0.6,
    condition_on_previous_text=False,                     # 避免錯誤沿著前文延續
)
for seg in result["segments"]:
    print(f"{seg['start']:6.1f}s  {seg['text']}")

開放權重也帶動了大量的衍生工具。faster-whisper 以 CTranslate2 重新實作推論,whisper.cpp 把模型移植到 C/C++,可以在筆電與手機上執行;Distil-Whisper(Gandhi et al., 2023)以知識蒸餾縮小模型、加快速度;WhisperX(Bain et al., 2023)結合語音活動偵測與強制對齊,提供詞層級的時間戳記。OpenAI 自己的 API 則另有 whisper-1 與 gpt-4o-transcribe 等轉寫服務。對研究與教學而言,Whisper 最大的貢獻或許不在某一項分數,而在於它讓每個人都能在自己的語料上實驗。

大型語言模型的語言學基礎 W09語音

9.4CTC:沒有對齊的對齊

聲音有一百格,文字只有五個字:哪一格對哪一個字,沒有人標過。

連結時序分類(connectionist temporal classification,CTC):Graves et al.(2006)讓模型在每個時間格各輸出一個符號,另外加入一個「空白」符號。輸出序列經過兩條規則折疊成答案:先合併相鄰的重複符號,再刪去空白。訓練時,對所有能折疊成正確答案的路徑加總機率,模型因此不需要事先知道每個字從哪一格開始。

圖 9.8折疊規則與空白互動

十二個時間格,每格點一下就換下一個符號(∅ 是空白)。看看哪些路徑會折疊成「謝謝」;如果兩個「謝」之間沒有空白,會發生什麼事?

Python
from itertools import groupby

BLANK = "∅"

def ctc_collapse(frames):
    """先合併相鄰的重複,再刪去空白"""
    merged = [k for k, _ in groupby(frames)]
    return "".join(s for s in merged if s != BLANK)

ctc_collapse("謝謝謝∅∅謝謝∅∅∅∅∅")      # '謝謝'
ctc_collapse("謝謝謝謝謝謝∅∅∅∅∅∅")      # '謝':沒有空白隔開,兩個字被併成一個
大型語言模型的語言學基礎 W09語音

9.5自監督:音素會自己浮現嗎

不給文字稿,只給大量聲音,模型能學到什麼?

wav2vec 2.0:Baevski et al.(2020)以卷積網路把原始波形每 20 毫秒編成一個向量,遮住其中一些片段,再要求 Transformer 根據上下文,從約一百個干擾項中認出被遮住位置真正的量化表示。這是 BERT 遮罩語言模型的語音版,只是「詞彙」不是事先給定的,而是由模型以乘積量化自己學出來:兩組碼本、每組 320 個碼向量。預訓練之後,只用 10 分鐘的標註語音微調,在 LibriSpeech 的 clean/other 測試集上就達到 4.8/8.2 的詞錯誤率。

圖 9.9每一層知道什麼互動

探測研究在每一層的表示上訓練簡單的分類器,看它能多準確地讀出聲學特徵、音素與詞的身分。切換「預訓練」與「以 CTC 微調後」,比較曲線的形狀。曲線為示意,形狀依 Pasad et al.(2021)的報告。

Pasad et al.(2021)發現,預訓練的 wav2vec 2.0 中,音素資訊在中間層最多,到了最上面幾層反而下降,表示又變得接近輸入的聲學特徵,像一個自編碼器;以 CTC 微調之後,上層才轉而專注於與文字相關的資訊。換言之,模型裡沒有一層被設計成「音素層」,但音素的區別確實在某些層浮現出來,而且是漸層的、分布的,不是一個個離散的符號。

語言學視角

這個結果讓音素的地位變得有趣。結構主義與生成音韻學把音素當作心理上真實的離散單位;範例理論(exemplar theory;Pierrehumbert, 2001)則主張,人記住的是大量帶有細節的具體語音實例,類別是從實例的分布中浮現的。自監督模型的行為比較接近後者:它從未被告知華語有幾個音素,卻在中間層把 ㄅ 與 ㄆ 分得開;它的離散碼本有六百多個碼向量,遠多於任何語言的音素數,可能對應比音素更細的語音片段,也混入了說話者與錄音環境的特徵。至於嬰兒,Kuhl(2004)的研究顯示,他們在一歲左右,對母語中不區別的語音對比,敏感度便開始下降:分布的學習,也是人類建立音素的途徑之一。

大型語言模型的語言學基礎 W09語音

9.6聲調與韻律:轉成文字時丟掉的東西

「媽、麻、馬、罵」只差在音高的走勢;「你來了。」與「你來了?」只差在句尾。

聲調與語調:在華語這樣的聲調語言中,音高的走勢區別字義,是音素層次的對比;在句子層次,音高、長度與強度的變化又構成語調與焦點,傳達疑問、強調與情緒,合稱韻律(prosody)。趙元任的五度標記法把華語四聲記為 55、35、214、51。

圖 9.10四個聲調與三聲變調互動

點選一個聲調,看它的基頻走勢並播放合成的「ma」。再切到「你好」,比較逐字唸與實際讀法:兩個三聲相連時,前一個變成近似二聲。音高數值為示意的男聲範圍。

梅爾頻譜保留了諧波,也就保留了音高,所以端到端模型能學會辨別聲調。但當模型的輸出是文字時,句子層次的韻律多半就此消失:轉寫稿上看不出說話者是在問、在諷刺,還是在生氣。對華語來說,標點只能救回一小部分;對以韻律區別資訊結構的語言,損失更大。這也是 Speech LLM 不願只靠逐字稿的原因:當語音先被化成文字,語氣與時間上的細節往往已經流失。不過,聽得到聲音,不代表就能聽懂言外之意。要理解反諷、焦點或禮貌,模型還得把聲音與說話情境聯繫起來。

大型語言模型的語言學基礎 W09語音

9.7語音語言模型:把聲音也變成詞元

既然語言模型擅長處理離散的詞元,那就把聲音也切成詞元。

語音詞元:把語音轉成離散符號的方法大致有兩種。語意詞元由自監督模型的表示分群而得,例如對 HuBERT 的中間層做 k-means,保留語音內容而丟掉多數說話者特徵;GSLM(Lakhotia et al., 2021)只用這類單位就訓練出不經文字的語言模型。聲學詞元則來自神經音訊編解碼器(SoundStream、EnCodec),以殘差向量量化保存足以還原聲音的細節。AudioLM(Borsos et al., 2023)先產生語意詞元、再產生聲學詞元,兼顧內容的連貫與聲音的真實。

三條不同的路:語音如何進入 LLM?

試想我們對語音助理說一句「你真厲害」。它可以先把聲音寫成這四個字,再交給文字模型;也可以把整段聲音轉成向量,讓模型連同語調一起處理;或者把聲音編成一串離散詞元,像預測文字一樣預測下一小段聲音。三種方式都能讓機器「聽」與「說」,但它們保留下來的資訊並不相同。

因此,談 Speech LLM 時,與其只問模型有沒有語音功能,不如追問:聲音在哪一步被轉成文字?又有哪些資訊可能在那一步消失?以下三條路線是理解架構的起點;實際系統也可能將它們混合使用。

路線主要資訊流程優點主要限制
文字中介
cascaded
Speech → ASR → 文字 LLM → TTS容易沿用成熟的文字推理與安全機制轉寫可能流失韻律、反諷、重疊與非語音聲音
連續表徵
latent / embedding
Speech encoder → adapter/projector → LLM可以輸入文字以外的聲學線索模態對齊、長序列效率及音訊知識的運用是難題
離散語音單位
token / codec
Speech → semantic / acoustic tokens → LM → 音訊生成便於序列建模、語音生成與多串流互動詞元密度高;語言內容與聲學細節不易兼顧
補充圖 A同一段語音,三種 Speech LLM 路徑互動

切換三條路線,看看語音在何處成為文字、向量或離散詞元。圖中的處理順序是概念示意,不代表某款產品的實際內部架構。

x(t) → h1, …, hT(連續向量) / x(t) → s1, …, sn(離散詞元)

離散語音詞元常有兩種分工:semantic tokens 側重語音中的語言內容,acoustic codec tokens 則留下音色、韻律,以及重建聲音所需的細節。這種分工很有用,卻不是截然的二分;一個語音詞元也未必恰好對應一個音素。下面介紹的殘差向量量化,便是用多層詞元逐步補足聲學細節的方法。

圖 9.11殘差向量量化互動

二維示意。點一下圖中任一處放置目標向量,或調整使用的碼本層數:第一層碼本先找最近的碼向量,剩下的誤差交給第二層,依此類推。每多一層,就多一個詞元,誤差也更小。

全雙工對話:傳統語音助理是串接式的:語音辨識、語言模型、語音合成三站依序完成,對方說完才開始處理。Moshi(Défossez et al., 2024)把使用者與模型兩條音訊流同時建模,並讓模型在說話時同步產生對應的文字(「內在獨白」),理論延遲約 160 毫秒、實測約 200 毫秒;它可以在對方說話時插入附和,也能被打斷。OpenAI 在 2024 年發表 GPT-4o 時,報告語音回應的平均延遲約 320 毫秒。

圖 9.12輪到誰說話互動

調整串接式系統各站的處理時間,與全雙工模型、人類對話的話輪間隔比較。各站時間為示意;人類的數值依 Stivers et al.(2009)的跨語言研究。

語言學視角

會話分析發現,人類的話輪交替快得驚人。Stivers et al.(2009)比較十種語言,兩個話輪之間最常見的間隔落在 0 到 200 毫秒之間;而從想到一個詞到說出口,至少需要約 600 毫秒(Levinson, 2016)。兩者的落差意味著,聽者在對方還沒說完時,就已經在預測話輪何時結束、並準備自己的回應。串接式系統等對方說完才開始處理,結構上就慢了一拍;全雙工模型則開始具備「邊聽邊預測」的條件。附和語(「嗯」「對」)、重疊與打斷,這些文字轉寫裡幾乎看不見的現象,正是對話之所以是對話的地方。

大型語言模型的語言學基礎 W09研究前沿 · 2026

延伸 A Speech LLM:從轉寫到理解、推理與對話

讓 AI 開口說話,已經不是最難的部分;真正的問題是,它究竟聽懂了多少。

過去,語音研究常以「辨識得對不對」為中心:一句話說完,系統交出一份逐字稿。今天的 Speech LLM 不再只滿足於轉寫。它要能聽懂問題、延續對話,在適當時機回應,還希望保留文字記不下來的語氣與情緒。從這個角度回看近幾年的技術史,我們可以看見幾次值得注意的轉折。

年份代表工作概念上的轉折
2022AudioLM不靠逐字轉寫,利用語意與聲學詞元建模語音生成
2023SpeechGPT、AudioPaLM;SALMONN 的 2023 預印本語音能力與文字 LLM 的知識開始系統性整合;架構仍各有差異
2024GPT-4o、Moshi從問答回合轉向低延遲、可被打斷的即時 speech-to-speech
2025Qwen3-Omni以 Thinker–Talker 架構聯合處理多模態感知、推理與串流語音
2026MMSU、HPSU、S2S-Arena從轉寫正確率擴展到細緻語音理解、副語言表達及話語推論的評估
Speech-native,不等於沒有文字

有些模型能直接讀入語音、直接合成回答,我們稱它具有 speech-native 的處理能力。但「從語音到語音」說的是輸入與輸出的形式,不能據此斷言模型完全不依賴文字。Moshi 甚至讓文字與語音詞元同步生成,稱為 inner monologue。如果想知道模型是否真正運用了語音本身的線索,仍得設計實驗:讓逐字稿保持一樣,只改變說話的方式,看看它的解讀會不會跟著改變。

當前的研究難題:從字面到言外之意

第一個難題是 speech-native reasoning。同一句「你真厲害」,可以是稱讚,也可能是挖苦。倘若模型只是把語音轉成四個字,再依據文字推測意思,便可能錯過真正重要的線索。因此,研究者愈來愈重視韻律(prosody)與語用(pragmatics):語調、重音、停頓與說話情境如何共同決定一句話的解讀?模型能辨認情緒標籤固然有用,但能否理解反諷、猶豫與話語焦點,才是更深入的考驗。

從輪流發言,到真正的即時互動

第二個難題來自對話本身。人們談話時,並不是等對方完全講完,才開始準備下一句。我們會說「嗯」「對」,會插話、會被打斷,也會從語氣預測對方何時要結束話輪。Full-duplex dialogue 正在讓語音模型學習一邊聽、一邊說。不過,回應速度只是其中一項指標;接話是否得體、打斷後能否恢復原本的話題,同樣重要。

模型聽到的是「人類的語音」,還是某幾種語言?

第三個難題關乎多語言與低資源語音。英語訓練得很好的模型,不一定能正確掌握華語聲調,更不必然理解臺灣華語的說話習慣,以及臺語、客語或南島語的音韻對立。這也牽涉更基本的表徵問題:模型的 speech tokens 究竟對應音素、音節,還是只是重建聲音所需的短時聲學片段?我們可以透過 probing 與因果介入分析,但必須區分「模型內部可讀出某項資訊」與「模型確實用它作判斷」兩件事。

最後,評估與治理也必須跟上。字錯誤率(CER)和詞錯誤率(WER)適合評估轉寫,卻不足以檢驗模型是否理解語氣、能否自然接話。語音還包含說話者身分等敏感資訊;聲音複製、深偽、隱私與跨語言公平性,都不能在追求自然度時被忽略。

新的評測開始回應這些問題。例如,2026 年的 MMSU 涵蓋 47 項任務與 5,000 組語音問答;HPSU 以超過 20,000 筆英語與華語樣本測試隱含意圖等口語理解能力;S2S-Arena 則從語音本身檢驗語意與副語言指令的表達。它們讓我們更接近「聽懂人說話」的評估,但測量的能力不同,不能只看一個總分便判斷模型的語言能力。

ELI5 · 簡單解釋

聽見「你真厲害」不代表聽懂了

轉寫器只須寫下「你真厲害」四個字;聽話的人卻還要判斷,這究竟是讚美,還是一句酸溜溜的反話?答案往往藏在語氣與前後情境之中,而不在文字本身。

一句話:Sounding human is not the same as understanding human speech.

大型語言模型的語言學基礎 W09語言學實驗

延伸 B Prosody as Meaning:從語音研究意義如何形成

同樣一句話,換個語氣便可能換了意思。模型究竟能不能聽出這種差別?

這是一個把 Speech LLM 帶回語意學與語用學的好切入點。試想有人剛解出一道難題,旁人說「你真厲害」;但若對方剛把事情搞砸,同一句話也可能帶著嘲諷。字詞沒有改變,語調、重音、語速與彼此都知道的情境,卻讓話語意義走向不同方向。

下圖用幾條簡化的音高輪廓,提醒我們注意這種差異。它是教學示意,不是實測資料;更不能只憑基頻(F0)就判斷一句話是否在反諷。

補充圖 B同一句話,不同話語意義互動

切換三種說話情境,看看相同文字可以搭配怎樣不同的音高輪廓。這不是固定的聲學規則;真實實驗仍須蒐集錄音與人類判斷。

一個可實作的三條件實驗

條件輸入要排除或檢驗什麼
A. Text-only只有相同的文字轉寫作為詞彙與句法資訊的基線
B. Speech-neutral中性語調的錄音區分「語音模態」與「特殊韻律」
C. Speech-pragmatic保留同一文字,加入經驗證的重音/語調/停頓差異檢驗語音特有訊息是否影響意圖推論

這個實驗的關鍵,是讓文字保持不變,只讓與語音有關的線索改變。我們可以先錄製中性語調與帶有明確語用意圖的版本,再設定相應的情境,例如真誠稱讚,或說話雙方都知道事情出了差錯。說話者、錄音品質與提示方式都應盡量配平,並先請人類聽者確認刺激是否真的傳達了預期的意圖。

接著比較文字 LLM 與 Speech LLM 的答案,看看模型是否因為聽到不同語氣而改變判斷。除了整體正確率,也應觀察不同說話者、口音與錄音條件是否影響結果。若進一步研究模型內部,可使用 probing、消融或 activation patching;但必須記得:能從某層讀出韻律資訊,不等於已證明模型靠它完成推理。

連回本週的核心理論

這便把本週的內容串成一條線索:從音素是否自發浮現(9.5),到語音詞元究竟記住了什麼(9.7),最後走向意義如何在聲音與互動中形成。若從構式語法(Construction Grammar)來看,還可以追問:模型是否能直接從說話方式與使用情境中,學會一種帶有韻律的形式—意義配對(form–meaning pairing)?

大型語言模型的語言學基礎 W09語音

9.8語音複製:一個聲音,誰在說話

幾分鐘的錄音,就能讓模型用你的聲音說出你從未說過的話。

語音複製(voice cloning):給定某人的一段語音,合成出聽起來像同一個人、內容卻任意指定的語音。它把一段語音拆成兩部分:「說了什麼」與「誰在說」,再把前者換掉、保留後者。本週的問題在這裡換了一個角度:如果音色可以和音素分開搬運,模型內部就必須有某種把兩者分開的表示。

路線做法代表需要的錄音
說話者嵌入以說話者辨識模型把聲音壓成一個向量,作為語音合成的條件SV2TTS(Jia et al., 2018)數秒
編解碼器語言模型把參考語音的聲學詞元當成提示,讓語言模型「續寫」同一個聲音VALL-E(Wang et al., 2023)約 3 秒
即時複製不另外訓練模型,由大型預訓練模型依參考音訊推估聲音特徵ElevenLabs IVC建議 1–2 分鐘
專業複製以大量本人錄音微調一個專屬模型ElevenLabs PVC建議 30–180 分鐘

VALL-E 是 9.7 節「聲學詞元」最直接的應用:它用 EnCodec 把語音轉成多層的離散碼,第一層由自迴歸模型逐格產生,其餘各層由非自迴歸模型一次補齊。訓練資料約六萬小時的英語語音;推論時只要一段約 3 秒的參考錄音,合成結果不只保留音色,連參考錄音裡的情緒與錄音環境(例如回音)也會一併延續。這正說明聲學詞元保存的不只是「誰」,還有「在什麼情況下說」。

圖 9.13要多少錄音才夠像互動

點選一種做法,看它需要的錄音長度(對數尺度)、訓練了什麼,以及取得本人同意的機制。錄音長度依原論文與 ElevenLabs 官方文件。

圖 9.14「像你」由哪些層次組成互動

一個人的聲音身分不只一層。點選任一層,看它的聲學或語言線索、複製模型通常保留得住多少,以及對應的語言學概念。「保留程度」為一般性的描述,因模型與錄音而異。

圖 9.15課堂示範:謝舒凱的聲音示範

以下語音皆由 ElevenLabs 合成(模型 eleven_v4),文字由講者指定,聲音經講者本人同意與授權。同一段文字合成兩次,結果並不完全相同。

「大家好,我是謝舒凱。你現在聽到的這段話,我從來沒有說過:它是語音模型用我的聲音合成的。And this sentence, in English, comes from the same voice.」

聽的時候可以留意:華語部分的聲調、輕聲與兒化;英語部分是否帶著華語的口音;兩次合成在停頓與語調上的差異。

同意、標示與偵測:聲音一旦能被複製,就能被冒用。業界與法規的回應大致有三層。第一是同意:ElevenLabs 的專業複製要求本人朗讀驗證句,而且即使取得同意,也只能複製自己的聲音。第二是標示:歐盟《人工智慧法》第 50 條要求,深偽的影音內容必須揭露其為人工生成,相關義務自 2026 年 8 月起適用;美國聯邦通訊委員會在 2024 年認定,以 AI 合成聲音撥打的自動語音電話受既有電話消費者保護法規範。第三是偵測:AudioSeal(San Roman et al., 2024)在合成語音中嵌入人耳聽不出、卻可逐段定位的浮水印;ASVspoof 系列評測則專門比賽偵測偽造語音的能力。

語言學視角

社會語言學提醒我們,聲音不只是生理特徵,也是社會身分的標記(indexicality;Eckert, 2008):口音、語速、語氣詞,都在告訴聽者「我是誰、來自哪裡、和你是什麼關係」。語音複製最容易拿到的是最底層的音色,最難拿到的是最上層的個人語言習慣(idiolect):一個人習慣怎麼開場、用哪些口頭禪、在哪裡停頓。也因此,騙徒的劇本往往刻意簡短而緊急(「我出事了,快匯款」),讓聽者沒有時間察覺上層的不對勁。辨識一段可疑的語音,除了聽「像不像」,更該問「他會這樣說話嗎」。

大型語言模型的語言學基礎 W09語音

9.9聽見嘴唇:McGurk 效應

我們以為自己用耳朵聽話,其實眼睛也在聽。

McGurk 與 MacDonald(1976)把一段說「ba」的錄音,配上一個嘴型在說「ga」的影片。多數受試者既不報告 ba,也不報告 ga,而是聽到「da」:一個介於兩者之間、兩種線索都不完全吻合的音。反過來,聲音 ga 配嘴型 ba,則常被聽成「bga」之類的組合。知道了真相、閉上眼睛再聽,聲音就變回 ba;張開眼睛,又變成 da。

圖 9.16聲音與嘴型的組合互動

選擇聲音與嘴型,看典型的知覺結果。橫軸上的發音部位由前到後:雙唇、齒齦、軟顎。結果依原研究與後續文獻的典型報告,個人與語言之間有差異。

聲音
嘴型

McGurk 效應的強度並非普世一致。Sekiyama 與 Tohkura 等人的系列研究報告,日語與漢語母語者的 McGurk 效應,平均而言弱於英語母語者,可能與文化上較少注視說話者的臉、以及語言本身的音韻特性有關。對模型而言,這提出一個值得實驗的問題:以影音資料訓練的模型(例如 AV-HuBERT;Shi et al., 2022),是否也會「聽見」不存在的 da?這把我們帶往下週:視覺,以及不同模態如何對齊。

大型語言模型的語言學基礎 W09語音

回顧:音素這一層在哪裡

本週從聲波出發,追問模型是否需要音素,最後走到 Speech LLM:即使不必先辨出每個音素,模型是否真的能理解聲音中的意義?

立場主張本週的證據難處
明確存在先辨音、再查詞、再解義傳統管線的音素與發音詞典(圖 9.1)端到端模型不需要音素,表現反而更好
浮現而漸層沒有被設計成一層,但區別在中間層浮現wav2vec 2.0 的探測曲線(圖 9.9);碼本與音素的對應浮現的單位比音素細,且與說話者、語境糾纏
不需要從聲音直接到意義,音素只是語言學家的描述工具Whisper 與語音語言模型直接輸出詞元(圖 9.5、9.9)無法解釋模型為何仍對聲調、送氣等最小對比敏感
本週主題工程上的問題對應的語言學或認知概念
聲音的表示模型「聽」到的是什麼聲源—濾波模型(Fant);共振峰與母音
Whisper如何評估、如何避免幻覺字與詞的界線;正字法的規範化
CTC聲音與文字如何對齊音段與時長
自監督不給標註能學到什麼音素的心理真實性;範例理論;知覺窄化
聲調與韻律轉成文字時丟了什麼聲調、語調與資訊結構
語音語言模型如何直接理解、推理與即時對話語音語意、話輪交替與預測(會話分析)
Speech LLM 前沿如何評估文字之外的聽覺理解韻律、語用、低資源語言與跨模態表徵
McGurk 效應聽覺只靠聲音嗎多感官整合;跨語言差異
語音複製「誰在說」能否與「說了什麼」分開說話者身分的層次;個人語言與社會標記(Eckert)

課堂討論

  1. 圖 9.2 中,基頻與共振峰是兩個獨立的旋鈕。耳語(沒有基頻)時,華語的聲調還聽得出來嗎?這對聲調的聲學定義有什麼啟示?
  2. 圖 9.6 中,同一份辨識結果,正規化前後的字錯誤率可以差很多。評估臺灣華語的語音辨識時,哪些差異應該算錯,哪些不應該?
  3. wav2vec 2.0 的碼本有六百多個碼向量,遠多於華語的音素。這是模型「學錯了」,還是音素本來就不是聲音的自然切分?
  4. 串接式系統先把聲音轉成文字。請列出三種在轉寫中消失、卻會改變話語意思的韻律訊息。
  5. 如何設計一個實驗,檢驗影音模型是否也有 McGurk 效應?如果有,那是「錯誤」,還是「像人」?
  6. 聽圖 9.15 的示範:英語部分聽起來帶著華語口音嗎?如果帶著,那是「音色」的一部分,還是「音素」的一部分?這對本週的問題有什麼啟示?
  7. 若有人用你的聲音打電話給家人,你會建議家人用什麼方法辨別?請從圖 9.14 的哪一層著手?
  8. Speech-native 模型可以同時輸出語音與文字,這能否證明模型是「直接以語音推理」?請提出能區分兩種假設的實驗。
  9. 以臺灣華語的「你真厲害」為例,設計控制文字、說話者、韻律與語境的最小對比組,並說明為何 CER 不能當成這個實驗的主要指標。

閱讀

講義另引:Bain et al. (2023) WhisperX;Eckert (2008) Variation and the indexical field;Jia et al. (2018) SV2TTS;San Roman et al. (2024) AudioSeal;Wang, C., et al. (2023) VALL-E;歐盟《人工智慧法》第 50 條;Borsos et al. (2023) AudioLM;Chao, Y. R.(趙元任)五度標記法;Défossez et al. (2022) EnCodec;Défossez et al. (2024) Moshi;Fant (1960) Acoustic Theory of Speech Production;Gandhi et al. (2023) Distil-Whisper;Graves et al. (2006) CTC;Hsu et al. (2021) HuBERT;Koenecke et al. (2024) Careless Whisper;Kuhl (2004);Lakhotia et al. (2021) GSLM;Levinson (2016) Turn-taking in human communication;Pasad et al. (2021);Pierrehumbert (2001) Exemplar dynamics;Sekiyama & Tohkura (1991);Shi et al. (2022) AV-HuBERT;Stivers et al. (2009);Zeghidour et al. (2021) SoundStream。