
最近語音 AI 圈子里有兩件值得放到一起琢磨的事Neuphonic 開源了 43MB 的語音決策模型 NeuDecide主打不經過 ASR直接把用戶語音變成工具調用另一個是法國 Mallow 團隊推出的兒童無屏語音游戲音箱靠 AI 實時聽孩子說話、接住每一句回答驅動游戲劇情往前走。前者面向開發(fā)者后者面向家庭用戶表面看一個是模型、一個是硬件但它們指向同一個趨勢語音交互正在從“先聽懂、再思考、再回答”的老三段往“聽見就行動”的方向塌縮。這兩件事適合誰讀如果你是做語音助手的、做 IoT 產品的、或者正在糾結“要不要把 ASR 從鏈路里拿掉”的這套拆解應該能幫你想清楚。如果你是做兒童內容或教育硬件的Mallow 的產品定義也會給你一個參考樣本無屏不是功能缺失而是一種主動選擇的交互約束。1. 為什么把這兩件事放在一起看1.1 傳統(tǒng)語音代理管線里ASR 不是免費的過去幾年我們聊語音代理默認的鏈路都長這樣麥克風采集音頻 → 喚醒詞 → ASR 轉寫成文本 → NLU 理解意圖 → 對話管理 → 決策 → TTS 說出來。這個架構成熟、工具多、調試直觀但它有幾個被大家默默接受的問題。第一是延遲疊加。ASR 本身要等一個完整句子的邊界一般要攢到 300 到 600 毫秒的音頻才敢出結果轉寫又需要幾百毫秒后面 NLU 再跑一次一輪對話的“思考時間”輕松超過一秒。用戶只感受到一個字慢。尤其在做工具調用時中間每多一跳延遲預算就要多一分。第二是錯誤級聯(lián)。ASR 一旦轉錯后面全錯。有些場景里用戶說“幫我定明天七點的鬧鐘”ASR 聽成“明天七點鐘”意圖層可能就懵了。這種錯誤不是靠 NLU 優(yōu)化能完全解決的因為信息已經在轉寫那一步丟了一部分。第三是韻律信息被抹掉。語音里除了詞還有停頓、語氣、重音、遲疑。文本化以后這些全沒了。用戶說“嗯……那好吧”和“好的”轉寫出來可能都是“好的”但意圖強度完全不一樣。ASR 后端模型做得再好原始音頻里的這些線索也拿不回來。所以當 NeuDecide 這類“語音決策模型”出現(xiàn)的時候我第一反應不是“又多了一個模型”而是“終于有人把 ASR 從決策路徑里請出去了”。1.2 從兒童無屏音箱反推產品需求無屏帶來了什么再看 Mallow 的這款無屏語音游戲音箱。很多人第一眼會問都做 AI 音箱了為什么不加個屏加了屏看起來信息量更大、玩法更多。但如果你真的在家庭場景里待過就會發(fā)現(xiàn)屏幕恰恰是最大的干擾源。兒童產品面對的競爭對象是平板、手機、電視上的視頻內容。屏幕意味著高刺激孩子看著屏幕注意力就被吸過去了。無屏設計把交互壓縮到“聽”和“說”兩個通道孩子必須在腦子里建立空間想象和推理而不是被動接收畫面。這其實是刻意在產品能力上做減法。但做減法不意味著技術也做減法。正因為沒有屏幕語音就成了唯一的交互通道。孩子說“我要紅色的龍”音箱就不能顯示“紅色龍”三個字而是直接推動游戲草叢里鉆出一條紅龍它希望你幫它找到三顆火石。所有的狀態(tài)、道具、劇情反饋都必須通過語音呈現(xiàn)這要求 AI 對每一句輸入的響應都足夠快、足夠準。實時聽孩子語音這件事不是為了炒作“AI 實時”而是這種產品形態(tài)的基本功。從另一個角度看這是在消費者硬件里驗證語音決策模型的價值低延遲、低算力、端側或近端側部署、口語化指令直接驅動邏輯。和 NeuDecide 面向的場景高度重合。1.3 兩條線交匯語音模型開始直接“行動”我會把這兩個項目放在一起主要是因為它們代表了語音 AI 的一種范式變化語音不再必須先變成文字再變成意圖最后變成行動。初級版本是直接學習“聲音 → JSON 動作”的映射高級版本是讓模型在音頻語義空間中做推理。這對開發(fā)者的影響很大。以前你要打磨 ASR 的領域專名、同音字、口音還要寫規(guī)則把文本映射到參數(shù)槽位。如果語音決策模型能把“音頻 → 結構化動作”這件事做穩(wěn)很多中間工程就可以省掉。Mallow 這類團隊從第一天起就不用管“ASR 是不是把兒話音丟了”只要把“孩子說了這句話之后應該觸發(fā)什么劇情節(jié)拍”做好就行。當然這也不是說 ASR 就該被淘汰。后面我會詳細分析端到端方案的局限但至少從趨勢上看語音交互的軟件棧正在變薄這是好事。2. NeuDecide 核心拆解43MB 的語音決策模型怎么工作2.1 模型定位從語音到意圖而不是從語音到文本NeuDecide 這個模型給我的第一印象是兩個詞小、快。43MB 的權重體積說明它設計之初就是奔著“低資源設備可跑”去的而不是那種只能在數(shù)據中心里燒卡的大模型。它做的事情可以理解為輸入一段語音直接輸出工具調用的結構化結果。比如“幫我把客廳燈關掉”模型輸出的不是“幫我把客廳燈關掉”這句文本而是一個意圖動作{action: turn_off_light, room: living_room}這樣的一件事。這種能力的關鍵在于訓練目標。傳統(tǒng)模型的訓練目標是預測下一個 token也就是字符或詞NeuDecide 這類語音決策模型的目標是預測決策結果。它可以學習“用戶語音的聲學特征 → 語義嵌入 → 工具動作”的映射。模型內部可能仍然有一個語義表示層但它不需要把詞序完整還原。換句話說它抓住的是“你要干什么”而不是“你嘴里說的每個字是什么”。這個思路聽起來簡單實踐上有門檻語音里包含說話人特征、背景噪聲、音調變化模型必須學會忽略與決策無關的信息只保留任務相關語義。要做到這一點需要在訓練數(shù)據里構造大量的“換說法、換口音、換環(huán)境但動作不變”的樣本讓模型自己學出穩(wěn)定的決策表示。2.2 43MB 背后的壓縮邏輯很多人看到 43MB 第一反應是“這能智能嗎”實際上模型體積小不代表能力弱關鍵是看它的任務邊界被壓縮到什么程度。一個通用語音助手可能需要認識幾十萬個詞但一個工具調用模型的詞表可能只要覆蓋幾千個核心詞和上百個動作名稱就夠了。從工程角度推測43MB 大概率是這樣組成的一個緊湊的語音編碼器負責把音頻變成語義向量一個小型決策頭負責把語義向量映射到工具參數(shù)空間。編碼器可以用類似蒸餾的方式從一個更大的語音理解模型中壓縮而來決策頭則根據具體工具集訓練。如果再做 int8 量化體積還會下降推理速度也能提升。這給開發(fā)者的啟發(fā)是別追求一個模型什么都能干先定義清楚“我要讓它決策什么”。比如一個音箱只需要十幾種動作那模型的有效詞表就是這十幾類參數(shù)規(guī)模完全不需要到 B 級。模型體積和場景廣度是直接掛鉤的。以下是典型的壓縮方向對比維度傳統(tǒng)語音助手模型輕量語音決策模型參數(shù)量級0.5B ~ 7B通常 50M ~ 300M輸入文本來自 ASR音頻特征或語義嵌入輸出自由文本結構化動作/參數(shù)部署目標云端 GPU邊緣設備/低功耗 SoC目標詞表開放受控/按領域裁剪延遲數(shù)百毫秒到秒級百毫秒級2.3 工具調用的輸入輸出設計端到端語音決策模型的輸出格式直接決定了它好不好用。NeuDecide 如果只是輸出一個“動作 ID”那其實是把復雜問題簡單化了。實際工具調用往往需要參數(shù)時間、地點、名稱、數(shù)量等。合理的輸出設計應該是一段結構化 JSON或者一組受限的 token 序列模型在解碼時被約束只能生成給定 schema 內的字段。比如鬧鐘工具schema 是{time, label}音樂工具schema 是{playlist, device}。模型聽到“放點爵士樂”就應該輸出動作play_music參數(shù)playlistjazz。參數(shù)槽位怎么填是關鍵。傳統(tǒng)的槽位填充是從文本中抽取實體而語音決策模型要直接從音頻特征中映射出槽位值。這對訓練數(shù)據的要求很高因為“五點半”和“五點四十”在聽感上只有細微差別模型必須對數(shù)字、時間這類精確信息格外敏感。我建議如果你要復現(xiàn)或微調類似模型一定要把數(shù)字、時間、人名、地名這類實體強化合成到訓練音頻里。輸出端的另一個問題是怎么處理“不確定”。模型給一個動作要附帶置信度比如confidence: 0.92。開發(fā)者拿到這個值應該設兩個閾值低于 0.6 直接不執(zhí)行轉向澄清話術在 0.6 到 0.85 之間執(zhí)行前先讓用戶確認一遍。這個策略能避免很多尷尬的誤操作。2.4 不經 ASR 的真實收益與代價先說收益。最直接的是延遲。端到端模型輸入是音頻特征不需要等待完整轉寫通??梢赃吢犨呁啤DP洼敵鼋Y構化的動作 token也省去了 NLU 這一步。整體下來一個“聽懂到行動”的延遲可以從傳統(tǒng)方案的 1.2 秒左右壓到 400 到 600 毫秒這是體感上“立即響應”和“慢半拍”的分界線。其次是可靠性。ASR 可能聽錯詞但這種模型直接學習“哪段音頻對應哪個動作”。在動作類別固定的場景里它能學會對同義詞、口音、背景噪聲的魯棒性而不是依賴某個轉寫結果剛好命中規(guī)則。舉例用戶說“把燈滅了”和“關燈”傳統(tǒng)鏈路可能依賴兩個不同意圖模板端到端模型只要訓練數(shù)據覆蓋了這兩種說法就能學到同一個動作。代價也明顯可解釋性差。ASR 出錯了你能看到轉寫文本定位是哪幾個詞錯了語音決策模型出錯你只能拿到一個意圖結果不知道它是哪段音頻特征讓你走偏的。調試時需要大量回放音頻和標注工程體驗不如老鏈路。還有領域泛化的問題。傳統(tǒng)鏈路在 ASR 后面加一個新意圖只要追加幾個文本模板就行端到端模型要加一個新動作通常得準備一批新音頻樣本重新微調。所以它不是萬能的更適合動作集合相對穩(wěn)定的場景。3. 從硬件角度看 Mallow 的無屏語音游戲音箱3.1 無屏交互的適用邊界Mallow 把音箱設計成無屏我認為不是偷懶而是保護交互重心。但無屏也不是所有內容都適合。適合無屏的場景有幾個共同點目標單一、需要持續(xù)口語對話、不太依賴視覺驗證。講故事、角色扮演、語言游戲、猜謎這些都可以在大腦里完成畫面構建適合無屏。反之如果孩子需要看選項、做選擇題、識別圖片那沒屏就非常難受。所以 Mallow 的產品邏輯應該是把游戲內容嚴格限定在“聽力理解 口語表達 邏輯推理”這三類上。孩子說“我選擇走左邊那條路”音箱就描述左邊的森林里有什么而不是彈出一張地圖。這種體驗用聲音驅動是順暢的。從開發(fā)者角度我的建議是如果你要做無屏語音產品先把“必須通過視覺才能理解的信息”列清楚。任何需要孩子盯住屏幕才能繼續(xù)的節(jié)點都是在和產品形態(tài)作對。要么改造內容讓它變成純口頭描述要么放棄這個功能。3.2 實時語音鏈路喚醒、聆聽、決策、回復這類實時語音設備的技術鏈路比手機 App 復雜不少。它要一直開著麥克風但又不能把所有聲音都傳給云端或模型否則功耗、隱私、帶寬都撐不住。一個典型的端側鏈路是這樣前端拾音與降噪麥克風陣列做波束成形鎖定孩子的位置壓制電視聲、空調聲、家里人說話聲。喚醒詞檢測專用低功耗喚醒模型常駐運行檢測“你好小 Mallow”之類的喚醒詞其他時候不啟動主鏈路。語音活動檢測 VAD喚醒后判斷孩子是否開始說話區(qū)分靜音、噪聲和有效語音段。流式語音識別或語義編碼把音頻流切成小塊邊采邊處理不等整句說完。Mallow 如果要做到“實時”就得同時依賴流式輸入和增量推理。游戲邏輯決策把識別出的語義或轉寫結果送入決策模塊觸發(fā)角色反應。語音合成播放用 TTS 生成角色臺詞或音效打斷和重新播放都要順滑。整個鏈路的核心要求是“低中斷”。孩子語音游戲跟成人用語音助手不一樣成人愿意等兒童一旦超過兩三秒沒有反饋注意力就開始漂。我見過一些兒童語音產品的測試數(shù)據響應超過 1.5 秒孩子就會重復說話或者直接放棄。所以 Mallow 這類設備的實時性不是參數(shù)上的炫技是維持孩子參與感的必需品。3.3 兒童語音識別的難點與調整兒童語音與成人語音的聲學差異很大。孩子發(fā)聲器官還沒長成音調偏高、音長不穩(wěn)、氣聲重很多詞發(fā)音并不標準這給聲學模型帶來天然挑戰(zhàn)。如果直接把成人 ASR 模型搬過來識別率會肉眼可見地下降尤其是低齡兒童。針對兒童語音常規(guī)做法是這幾類用兒童語音數(shù)據做聲學模型適配。但兒童語音語料稀缺且隱私敏感。提高系統(tǒng)對“半句話”的容忍度。孩子經常說一半就?;蛘甙选拔乙闭f成“我要要”決策模塊要做容錯而不是傻等。增加澄清機制。識別置信度低時游戲角色反問“你是說紅龍還是藍龍”用二選一縮小范圍這樣即使用戶發(fā)音模糊系統(tǒng)也能通過約束選項把任務完成。擴大允許說法集合。孩子會說“那個紅色的”也可能說“火龍”還可能說“我要那條紅色的龍”訓練數(shù)據一定要覆蓋不同的口語表達習慣。還要注意多說話人的問題。孩子可能和兄弟、父母同時在場設備需要分辨“誰在跟音箱說話”。前端聲源定位可以幫一部分忙但對語義層來說最好是能檢測到多人對話時暫時不觸發(fā)決策避免把父母之間的閑聊當成孩子的指令。3.4 產品體驗細節(jié)從語音設計反推內容工程很多人低估了無屏音箱的內容制作成本。屏幕產品可以用畫面交代劇情無屏設備所有信息都只能通過語音和音效來傳達。設計角色臺詞時要說人話不能像念說明書。舉例屏幕游戲里道具欄會顯示“火焰石×3”無屏音箱就必須讓角色說出來“你已經找到了兩顆火焰石再找一顆我就能帶你飛過火山口啦?!边@種口播狀態(tài)提示要頻繁但不能啰嗦。每一次對話都承擔兩個任務推進劇情 狀態(tài)反饋。這是兒童語音游戲內容工程的核心。另外音頻反饋必須多樣。同一個“回答正確”可以有好幾種表達方式“太棒了”“就是這樣”“紅龍點點頭”避免孩子聽多了麻木。情緒表達要夸張TTS 要用有一定表現(xiàn)力的音色最好能支持帶情感的 SSML 標記讓模型在句尾拖長音或提高音調。Mallow 如果真想做出“游戲感”這塊比模型結構更重要。4. 動手實踐把“語音決策”思路搬進自己的項目4.1 先明確場景適不適合端到端我在測試過幾類端到端語音模型之后的一個結論是別跟風替換先看你自己的場景。適合用語音決策模型的典型特點動作集合有限。比如開關設備、設定鬧鐘、選擇菜單、控制游戲角色。需要超低延遲。用戶說完馬上要有反饋。部署環(huán)境算力緊張。內存和 CPU 都有限。隱私敏感。不愿把原始音頻直接送云端或者不想保留中間文本日志。不太適合的場景包括需要開放域知識問答的需要逐字記事的比如聽寫、記錄電話號碼或者需要多種工具任意組合的。這些場景里 ASR LLM 的鏈路還是更有優(yōu)勢。4.2 一個最小可跑的本地決策流程這里我寫一個示意性的流程方便理解。具體接口以你落地的模型為準。假設模型加載方式類似這樣from speech_model import SpeechDecisionModel, ToolRegistry registry ToolRegistry() registry.register( nameset_alarm, description設定一個鬧鐘, params{time: HH:MM, label: 鬧鐘名稱(可選)} ) registry.register( nameplay_music, description播放指定風格的歌, params{playlist: 歌曲風格或歌單名稱} ) model SpeechDecisionModel.from_checkpoint(checkpoints/neu-decide-43m) # 從麥克風或音頻文件讀取一段語音 audio load_audio(user_request.wav, sample_rate16000) result model.decide(audioaudio, toolsregistry.schema()) print(result.action) # set_alarm print(result.params) # {time: 07:00, label: 明天起床} print(result.confidence) # 0.94關鍵點是registry.schema()把工具的 JSON Schema 傳給模型讓模型在受限動作空間里選擇。如果沒有這個約束模型輸出很容易跑飛。拿到結果之后的處理邏輯我也建議統(tǒng)一if result.confidence 0.6: reply 我沒太聽清你是想調鬧鐘還是放音樂 elif result.confidence 0.85: reply f你是想定 {result.params.get(time)} 的{result.params.get(label, 鬧鐘)}嗎 else: execute_tool(result.action, result.params) reply 已經幫你定好啦這個三段式處理幫我在實驗里省了大量跟誤觸發(fā)搏斗的時間。4.3 延遲預算怎么算語音交互的延遲感知是個系統(tǒng)性的預算問題。設計目標建議定在用戶說完話后 800 毫秒內給出反饋。這對很多產品已經比較舒適。接著把所有時間開銷拆開看環(huán)節(jié)典型耗時優(yōu)化思路麥克風采集與前端20 ~ 50ms低延遲音頻驅動環(huán)形緩沖端點檢測 VAD10 ~ 50ms用流式 VAD不等完整停頓語音編碼/特征提取30 ~ 80ms小步長、并行計算決策模型推理100 ~ 250msint8 量化、ONNX/TensorRT 優(yōu)化工具參數(shù)仲裁10 ~ 50ms規(guī)則校驗不放大模型回復話術拼接10 ~ 30ms預置模板TTS 首包合成150 ~ 300msstreaming TTS不等全句合成完加起來大概 500 到 800ms體感上是“這個人反應很快”。如果其中 ASR 環(huán)節(jié)占掉 400ms整體就會突破一秒只能靠提前打斷和搶話術來緩解體驗打折。所以我做語音決策模型實驗時慣性做法是先把音頻隊列和推理線程分開。采集線程只負責往隊列塞音頻塊推理線程消費隊列優(yōu)先拿最近一包數(shù)據。不要讓采集和推理在同一線程里互相等。4.4 接入工具時的魯棒性設計語音決策模型比文本模型更容易出現(xiàn)“幻覺動作”。用戶說了句“今天天氣怎么樣”你模型里沒這工具它可能會硬輸出一個不相干的 action。要抑制這種問題有幾個操作層面的手段。第一在 schema 里顯式加入一個拒絕類別。除了真實工具再加一個 action 叫no_action或clarify訓練時把領域外請求的樣本也放進去讓模型學會“我不該處理”。這比單純依賴閾值判斷更可靠。第二參數(shù)值要做類型校驗。模型輸出time: abc時不要直接往鬧鐘模塊傳。先用解析函數(shù)驗證格式不合規(guī)就進入澄清流程。第三對不可逆操作設置二次確認。比如“刪除錄音”“解鎖關卡”高置信度也建議確認。設備語音是很輕量的操作多問一句不會太煩人。第四保留文本影子鏈路用于日志。雖然主鏈路不依賴 ASR但在開發(fā)調試階段可以并行跑一個 ASR 把音頻轉寫成日志。這樣模型出錯時你至少知道音頻里的真實內容是什么。我在本地實驗時就是這樣定位問題的。5. 常見問題與避坑記錄5.1 實測中的排查速查表癥狀可能原因處理方向模型頻繁把無關語音識別成動作訓練數(shù)據缺少領域外樣本加入負樣本和“不回應”類別換個口音/方言就失效聲學多樣性不足擴充多口音訓練麥克風前端預處理數(shù)字、時間參數(shù)經常錯決策模型對精確數(shù)字敏感度不夠強化數(shù)字樣本后接輕量槽位校驗端側推理卡頓模型未量化或線程未優(yōu)化做 int8 量化調低采樣并行度響應太慢但推理不慢VAD 等完整句尾才出結果改成流式半句推理或縮短端側靜音判定兒童音箱誤喚醒喚醒模型被兒童音調觸發(fā)調高喚醒閾值加入說話人方向校驗連續(xù)對話后答非所問缺失角色記憶或狀態(tài)重置維護短時上下文 buffer定期清理輸出 JSON 偶爾語法不完整解碼約束失效用約束解碼不要說開放文本再解析5.2 幾條獨家實操心得第一錄音回放是永遠的神。我在做任何語音模型評測時會先錄五十條真實場景語音存成 wav然后批量跑一遍模型把結果和音頻一起列表對比。絕對不要在模型調試階段用麥克風實時測試因為環(huán)境變量太多你根本分不清是模型的問題還是采集的問題。第二兒童語音場景必須做“預設答案收斂”。孩子在無屏游戲里自由表達時輸入空間近乎無限但游戲推進只需要幾個選項。不要指望模型能理解所有表達而是讓游戲角色主動把范圍縮小“你想先去湖邊還是去山洞”把自由度收斂到兩個選項決策模型準確率會大幅上升。第三延遲和準確率要放在一起調。只看準確率不管速度很容易把模型越調越大只看速度不管準確率又會陷入反復澄清。我建議先定延遲上限再在預算里找準確率最大的那個模型尺寸。比如目標端側 150ms 推理那就把 43MB、100MB、300MB 的候選模型都壓測一遍挑一個能同時在延遲和準確率兩個指標達標的。第四TTS 的情感表達比想象中重要。語音決策模型再怎么強最終用戶感知的是音箱說出來的那句話。普通 TTS 念“你好厲害呀”和帶孩子聲音說“你好厲害呀”是完全兩種體驗。Mallow 這類產品一定需要可控制韻律的 TTS至少要能調整語速、音高、停頓。我見過太多項目在 NLU 上花大力氣最后栽在一句僵硬的語音反饋上。第五狀態(tài)管理是這類系統(tǒng)的隱藏復雜度。多輪對話不是每一次都從零開始音箱必須記住孩子已經走到哪個劇情節(jié)點、答對了幾道題、任務目標是什么。語音決策模型只負責“當下這句話怎么理解”游戲狀態(tài)機要單獨做。把狀態(tài)存內存里不行斷電重啟就丟。最好落盤或走云端賬戶否則孩子第二天重新開機游戲進度全沒了產品口碑會一夜崩塌。第六做真實設備測試時噪聲源要覆蓋完整。電視背景音、廚房水聲、另一個孩子玩玩具的聲音這些在實驗室里想不出來的場景都會在家庭測試里出現(xiàn)。前端降噪和 VAD 參數(shù)一定要留出余量否則演示當天模型被旁白背景音干擾決策結果東一句西一句基本無法看。最后分享一個我自己的習慣每次接入新語音決策模型先不要直接替換老鏈路而是讓它兩條路并行跑一段時間。同一個音頻流同時走舊的“ASRNLU”和新的“端到端決策”對比它們的動作輸出、置信度和響應時長。這樣能很快找出新模型的盲區(qū)也能給團隊一個平滑切換的余地。語音交互的變化來得比大多數(shù)人想象中快但方法論還是老一套多測、多錄、多復盤。