Kokoro 最近真係周圍都見到 — 佢衝上咗 Hacker News 熱榜、亦喺開源文字轉語音排行榜名列前茅,而創作者不停問:一個可以喺純 CPU 上跑嘅 8,200 萬參數模型,真係可以取代要付費嘅 voice API 嗎?所以我哋就裝咗佢、喺手提電腦上跑一次,並生成咗下面你可以播放嘅樣本。呢篇係一次實測拆解:Kokoro 係乜、實際聽起來有幾好、兩個最浪費時間嘅安裝陷阱,以及幾時用託管工具會更合理。來源:github.com/hexgrad/kokoro(Apache-2.0)。

Kokoro 係乜?邊個整嘅?

Kokoro 係一個開放權重嘅文字轉語音模型,由 hexgradKokoro-82M 發佈。賣點就寫喺個名度:8,200 萬參數 — 以 2026 嘅標準嚟講算係好細,小到可以喺手機上跑 — 但仍然可以輸出自然、有表情嘅旁白。佢源自 StyleTTS 2 系列,並以寬鬆嘅 Apache-2.0 授權釋出,所以真係可以免費用於商業用途。

截至 2026-07-11,主要 repo hexgrad/kokoro 大約有 7,900 個 GitHub stars。我哋用咗社群嘅 ONNX runtime 版本 thewh1teagle/kokoro-onnx(約 2,600 stars,MIT)去跑,呢個係最簡單喺 CPU 上運行、又唔使裝 PyTorch 嘅方法。

我哋打開實際權重檔案一睇,數到內置 54 種音色,涵蓋 9 個語言同口音組別 — 美式同英式英文、西班牙文、法文、印地文、意大利文、日文、巴西葡萄牙文,以及普通話中文。當中美式英文嘅音色明顯最成熟。

我哋真係跑咗(Apple M3 Pro,只用 CPU)

唔用 GPU、唔用雲端 — 只係一部配備 M3 Pro 同 18 GB RAM 嘅 MacBook Pro。以下係老老實實嘅實測過程。

安裝同權重

Python 套件幾秒就裝好:pip install kokoro-onnx soundfile。但呢度有第一個陷阱 — pip 套件只包咗程式碼,唔包模型。你要喺 kokoro-onnx 嘅 GitHub releases 頁面手動下載兩個檔案:kokoro-v1.0.onnx(310 MB)同 voices-v1.0.bin(27 MB)。quickstart 冇講清楚,所以第一次跑會因為缺檔而報錯,直到你拎返權重先得。

espeak-ng 路徑 bug(真係浪費我哋時間嗰個)

Kokoro 會用 espeak-ng 將文字轉成音素(phonemes)。第一次合成我哋就撞到:

Error processing file '/Users/runner/work/espeakng-loader/.../espeak-ng-data/phontab': No such file or directory

見到 /Users/runner/work/ 呢條路徑就知咩事:pip 嘅 espeakng-loader wheel 內置咗一個喺 CI 編譯嘅 libespeak-ng,入面硬編碼咗一條你部機根本唔存在嘅 data path。最崩潰嘅位係:就算你設咗 ESPEAK_DATA_PATH 環境變數都冇用,因為 kokoro-onnx 根本唔會讀佢 — 佢直接用咗 bundled loader 入面嘅路徑。

我哋成功嘅解法:安裝真正嘅系統版 espeak-ng,然後喺 Kokoro 嘅 EspeakConfig 入面明確指向佢:

brew install espeak-ng   # macOS; apt install espeak-ng on Linux

from kokoro_onnx import Kokoro, EspeakConfig
cfg = EspeakConfig(
    lib_path="/opt/homebrew/lib/libespeak-ng.dylib",
    data_path="/opt/homebrew/share/espeak-ng-data",
)
k = Kokoro("kokoro-v1.0.onnx", "voices-v1.0.bin", espeak_config=cfg)

搞掂之後,生成就順晒。如果你都試過同呢個 phontab: No such file 錯誤死鬥,呢個就係解法。

速度(實測,已預熱)

只用 CPU 嘅情況下,模型大約1.7 秒載入,合成速度亦明顯快過實時播放。一段 22 秒嘅旁白段落,用3.5 秒就渲染完 — real-time factor 約 0.16×,即係大約快過播放 6 倍。短句通常 1 至 2 秒就返嚟。以咁細嘅模型、喺手提電腦上跑到呢個吞吐量,真係可以用嚟做 production。以下係嗰段旁白渲染嘅實際波形圖:

我們在 M3 Pro CPU 上用 Kokoro 生成的 22 秒旁白段落波形圖

我哋生成嘅樣本(無剪輯)

下面每段 clip 都係我哋用上面講嘅 M3 Pro CPU 跑 Kokoro 直接生成 — 原始模型輸出,冇清理、冇後期。你自己播嚟聽,自己判斷質素。

af_sarah — 美式英文
am_michael — 美式英文
bf_emma — 英式英文
較長旁白(af_sarah,22 秒) — 就係上面用嚟做 benchmark 嗰段

由 VisionStory 透過 kokoro-onnx 使用 Kokoro-82M 生成,2026-07-11。留意一個好明顯嘅提示:呢段係乾淨嘅音軌 — 但佢只係聲音。冇面、冇口型、冇畫面入面嘅主持人。呢個缺口,就係下一節要講嘅重點。

坦白評測:優點同真實限制

真正令我哋驚喜嘅地方:

  • 每 byte 嘅質素好誇張。 以 8,200 萬參數嚟講,美式英文音色自然又有表情 — 夠接近付費 TTS,大部分人聽短片都未必會覺得有問題。
  • 真係可以喺 CPU 上跑,而且快。 手提電腦冇 GPU 都可以做到 6 倍實時,呢個係佢嘅招牌賣點,而且名副其實。
  • 真・免費,而且商用友好。 Apache-2.0,冇按字數收費。要大量旁白輸出嘅話,呢個成本結構好難輸。

佢嘅短板 — 而且都係真問題:

  • 冇聲音複製。 你只可以用 54 個固定預設音色。你唔可以複製自己把聲或者客戶把聲 — 如果呢個係你嘅需求,Kokoro 就幫唔到。
  • 英文質素依賴 espeak-ng,即係上面講嘅封裝 bug 之外,亦會偶爾讀錯人名、品牌名或者縮寫。
  • 長文要手動分段。 每次呼叫都有音素長度上限,所以長講稿要你自己切段,再將音訊拼返埋。
  • 非英文音色有啲撞彩 — 變化明顯大過主力嘅美式英文集合。
  • 輸出只係一個純 WAV。 冇逐字時間戳、冇 visemes — 開箱即用係冇嘢可以直接驅動口型同步。
  • 佢只係聲音。 冇面、冇影片。想要一個會講嘢嘅主持人,你一定要將 Kokoro 同另外一套 lip-sync 或 avatar 系統配合,仲要自己處理時間對位。

自建 Kokoro vs 託管工具:應該點揀?

Kokoro 同託管嘅 avatar 工具,其實係解決問題嘅兩個半邊。Kokoro 給你一個音色;而 VisionStory 呢類工具就畀你一個會講嘢嘅主持人 — 一次過輸出聲音、面孔同口型同步。以下係老實嘅取捨對比。

 Kokoro(自建)VisionStory(託管)
成本免費(用自己硬件)訂閱/點數
安裝pip + 330 MB 權重 + espeak-ng 修正唔需要 — 直接喺瀏覽器運行
你得到嘅嘢只有音軌(WAV)說話虛擬人影片(聲音 + 面孔 + 口型同步)
聲音複製冇 — 54 個預設有 — 複製你自己把聲
每段速度CPU 約 ~0.16× 實時(幾秒)幾秒,託管 — 唔使本機運算
商業用途可以(Apache-2.0)可以(視乎計劃)
維護你要自己處理 espeak、依賴、分段拼接唔需要
最適合你只需要免費音軌,亦識寫 code你要快速整好成品說話影片

揀 Kokoro,如果你只係需要免費旁白、你用 Python 無壓力,並且會自己另外處理面孔同口型同步(又或者你根本唔需要面)。揀託管工具,如果你需要個主持人一邊講一邊對口型、或者你需要複製某個指定人士嘅聲音 — Kokoro 兩樣都做唔到。

Kokoro 教咗我哋咩

跑完 Kokoro 最大嘅感想係:音色正在商品化。一個喺手提電腦上跑到嘅 82 MB 模型,而家已經可以免費生成足夠應付真實工作嘅旁白。如果你產品唯一賣點係「我哋做到文字轉語音」,呢條護城河已經冇咗。

真正困難、仲未完全解決嘅部份,係聲音之後嘅一切:點樣將一條音軌變成可信嘅說話面孔 — 精準口型同步、表情、頭部動作、同整體 timing 全部要對得上。呢個就正正係我哋做緊嘅層。即係話,我哋嘅結論唔係「唔好用 Kokoro」— 佢確實係一個好嘅音色引擎;而係「淨係有聲音,只係一半嘅影片」。如果你想要另外一半,VisionStory 可以一步將相片同講稿變成口型同步嘅 說話主持人,而如果你需要對到某個指定音色,亦可以 複製佢

常見問題

  • Kokoro TTS 可唔可以免費用作商業用途?

    可以。Kokoro 以 Apache-2.0 授權發佈,容許商業用途,而且唔會按字元收費。你只需要支付自己嘅運算成本,用普通 CPU 都得。

  • Kokoro 可唔可以喺 Mac 上跑,或者唔用 GPU 都得?

  • Kokoro 可唔可以複製我自己嘅音色?

  • Kokoro 可唔可以整到說話虛擬人影片?

  • 點樣修正 Kokoro 嘅 espeak-ng phontab No such file 錯誤?