本地跑 Microsoft 級語音 AI:vibevoice.cpp 入門

本地跑 Microsoft 級語音 AI:vibevoice.cpp 入門

📌 本文重點

  • 全本地 TTS + 長語音 ASR + 語者分離,無需雲端
  • 約 30 秒錄音即可 voice clone 自己聲線
  • C++ 實作、支援多後端,推論階段完全不用 Python
  • 很適合會議逐字稿、客服分析與離線語音助手

一句話先說清楚:vibevoice.cpp 是一套「全本地」的 TTS + 長語音 ASR + 語者分離工具,不用 Python、不上雲,就能在自己機器裡跑出接近 Microsoft VibeVoice 等級的語音 AI

原始專案與說明:https://github.com/mudler/vibevoice.cpp(C++ 移植自 Microsoft VibeVoice: https://github.com/microsoft/VibeVoice


核心功能:你能馬上用來做什麼

1. 24kHz 高品質 TTS + 30 秒聲音就能 voice clone

vibevoice.cpp 內建 TTS 引擎,支援 24kHz 輸出,適合旁白、影片解說、產品語音回應等場景。最大的亮點是:

  • 約 30 秒的語音樣本.wav / .mp3 都可,建議乾淨無 BGM)
  • 用專案提供的轉換腳本,把你的聲音轉成 gguf voice 檔
  • 之後輸入文字,就能用你的聲線合成語音

💡 關鍵: 約 30 秒乾淨錄音就能完成 voice clone,是進入個人化 TTS 的最低門檻之一

實作步驟(voice clone 概念流程):

  1. 準備一段約 30 秒的個人口播,儘量在安靜環境錄製。
  2. 取得原始 VibeVoice 的 .pt 聲音權重(或官方樣例聲音)。
  3. 使用 vibevoice.cpp repo 裡的 scripts/convert_voice_to_gguf.py 將聲音轉成 .gguf 語音檔。
  4. 在 TTS 命令中指定這個 voice 檔,就能生成你的聲線。

提示:沒有 Python 推論,但轉換 .pt.gguf 這一步需要一次性使用 Python。轉好後推論階段完全不用 Python。


2. 長語音 ASR + 語者分離,一次處理十幾分鐘錄音

vibevoice.cpp 背後是約 7 億參數的模型,實測可以處理長達十幾分鐘的錄音(作者在 Reddit 提到測到約 17 分鐘),並做到:

  • 自動逐字稿(ASR)
  • 自動切段(按時間區段)
  • 自動標註不同說話者(Diarization)

💡 關鍵: 7 億參數模型可穩定處理約 17 分鐘長錄音,適合會議與客服等實際業務場景

也就是:丟一整段會議錄音進去,輸出就會像這樣:

[00:00.0 - 00:12.3] Speaker 1: 大家好,今天會議主要討論 Q3 產品排程…
[00:12.3 - 00:25.7] Speaker 2: 我先更新一下研發這邊的進度…
...

快速實作想法:

  • 會議錄音 → 丟給 vibevoice.cpp → 拿回文字 + 誰在說話 → 直接貼進 Notion、Confluence 或公司內網系統。
  • 客服錄音 → 一批檔案跑 ASR + 語者分離 → 拿到客服與客戶對話文字,後續再用本地 LLM 做情緒分析或關鍵字統計。

3. 跨平台、本地推論、無 Python 推論依賴

vibevoice.cpp 用 C++ + ggml 實作,支援多種硬體後端:

  • CPU(x86 / ARM)
  • CUDA(NVIDIA GPU)
  • Metal(Apple Silicon / macOS)
  • Vulkan(支援 Vulkan 的 GPU 平台)

這幾件事對實際部署很關鍵:

  • 不需要在伺服器上裝一大堆 Python/conda,推論階段就是一個二進位 + gguf 模型檔。
  • 更容易嵌入既有系統:C ABI 讓你在 C/C++、Rust、Go、甚至 Node.js(透過 FFI)裡都能呼叫。
  • 適合沒有外網、或對資料保密要求高的內網環境。

💡 關鍵: 推論只靠一個二進位加模型檔,無 Python 依賴,讓部署與嵌入式整合簡化許多


適合誰用:4 個具體場景

1. 公司會議錄音 → 自動逐字稿 + 誰講了什麼

適合:產品經理、工程主管、專案管理。

操作路線:

  1. 用任意錄音工具錄下整場會議(建議單軌錄音即可)。
  2. 丟給 vibevoice.cpp,輸出成文字 + 語者標註。
  3. 再加工:
  4. 手動整理重點;或
  5. 丟進本地 LLM(如 ollama 上的 Llama 3)做摘要。

好處:不必把敏感會議內容丟上雲端,也不必自己搭一整套 ASR 服務。


2. 內網客服錄音分析

適合:客服主管、合規/法務、營運分析。

做法:

  1. 將客服中心錄音批次輸出成檔案(常見為 WAV/MP3)。
  2. vibevoice.cpp 跑 ASR + 語者分離,取得客服與客戶逐字對話。
  3. 輸出文字再交給內網數據分析或 NLP 模組做:
  4. 關鍵字搜尋(是否有爭議用語、是否說明退款規則等)
  5. 投訴分析(常見問題、情緒偏負面段落)。

3. 在自己產品裡內建語音輸入 / 語音輸出

適合:SaaS 產品、內部工具、遊戲或交互式應用開發者。

可行玩法:

  • 用 ASR 做語音輸入:
  • 使用者對麥克風說話 → 即時轉文字 → 傳給你原有的系統邏輯。
  • 用 TTS 做語音輸出:
  • 系統產生訊息 → 用 vibevoice.cpp 合成語音 → 播放給使用者聽。

因為有 C ABI,你可以:

  • 在 C/C++ 專案直接連結
  • 在 Rust/Go 透過 FFI 呼叫
  • 在 Node.js 透過 node-ffi 或自寫 native addon 包一層

4. 做一個完全離線的語音助手

適合:喜歡 DIY 的工程師、Maker、隱私敏感場景。

粗略架構:

  1. 麥克風輸入 → vibevoice.cpp ASR → 文字指令
  2. 文字指令 → 本地 LLM(例如 LocalAI / Ollama)→ 回覆文字
  3. 回覆文字 → vibevoice.cpp TTS(可用自建 voice clone)→ 喇叭播出

整條鏈路都在本機或內網,沒有任何雲端依賴。


怎麼開始:最短路徑從 0 到能跑

官方 repo:https://github.com/mudler/vibevoice.cpp

1. 下載二進位檔(最快上手)

  1. 打開 GitHub Releases:https://github.com/mudler/vibevoice.cpp/releases
  2. 依自己的平台下載對應壓縮檔,例如:
  3. vibevoice-darwin-arm64.zip(Apple Silicon)
  4. vibevoice-linux-x86_64.zip
  5. vibevoice-windows-x86_64.zip
  6. 解壓縮後,裡面會有:
  7. 主程式二進位,例如 vibevoice
  8. 範例模型 / 語音配置(依版本而定)

在 Linux/macOS,給執行權限:

chmod +x vibevoice

2. 用 CMake 自行編譯(需要客製或特定後端時)

環境需求:

  • CMake
  • C++17 編譯器(gcc / clang / MSVC
  • 選用:CUDA / Vulkan / Metal SDK

基本編譯步驟(以 Linux/macOS 為例):

git clone https://github.com/mudler/vibevoice.cpp.git
cd vibevoice.cpp
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release

完成後,build/ 底下會出現可執行檔(名稱以實際 repo 為準)。


3. 第一次跑 ASR:把一段錄音轉成逐字稿

假設你已經有:

  • 主程式 vibevoice
  • 已下載好的 ASR 模型 model.gguf(官網會提供下載連結)
  • 一段錄音 meeting.wav

執行(命令格式可能會隨版本略有不同,請以 --help 為主,這裡示範典型用法):

./vibevoice \
  --mode asr \
  --model model.gguf \
  --input meeting.wav \
  --output transcript.txt \
  --diarization

跑完後,你會拿到一個 transcript.txt,裡面包含時間戳與說話者標記。


4. 第一次跑 TTS:從文字合成語音

準備:

  • TTS 模型 tts-model.gguf
  • 一個 voice 檔(可用官方 sample voice,例如 voice-en.gguf

命令範例:

./vibevoice \
  --mode tts \
  --model tts-model.gguf \
  --voice voice-en.gguf \
  --text "你好,這是 vibevoice.cpp 的測試。" \
  --output out.wav

成功後你會得到一個 out.wav,用任意播放器就能聽見合成結果。


5. 準備 30 秒聲音做 voice clone(概念流程)

  1. 錄一段約 30 秒的清晰朗讀(內容隨意,重點是發音自然、環境安靜)。
  2. 取得對應的 voice 訓練權重,依官方 README 指示執行:

bash
python scripts/convert_voice_to_gguf.py \
--input your_voice.pt \
--output your_voice.gguf

  1. 之後在 TTS 命令中改成:

bash
--voice your_voice.gguf

即可以你的聲音合成語音。


6. 怎麼嵌到自己的專案:用 C ABI 呼叫

vibevoice.cpp 提供 C 語言 ABI,因此只要能呼叫 C 函式的語言,都能整合。

簡化示意(實際函式名稱請以官方 include/ 中的 header 為準):

#include "vibevoice.h"

int main() {
    vv_context *ctx = vv_init("model.gguf");

    vv_asr_params params = {0};
    params.diarization = 1;

    vv_result result = vv_run_asr(ctx, "meeting.wav", &params);

    // 在這裡處理 result.text / result.segments

    vv_free_result(&result);
    vv_free(ctx);
    return 0;
}

在其他語言(例如 Rust、Go)你可以:

  • 透過 extern "C" 聲明這些函式
  • 用 FFI 封裝成 idiomatic 的 API

這樣你的應用程式就能直接呼叫 vibevoice.cpp,無需啟動額外的 HTTP 服務或 Python 進程。


小結:什麼時候該試試 vibevoice.cpp?

如果你符合以下任一條,很值得花一個下午跑起來:

  • 想在本地處理會議、客服錄音,不想把資料丟到雲端
  • 想做一個離線語音助手或內網語音介面
  • 需要在產品裡嵌入 TTS / ASR,但又不想綁特定雲服務
  • 想要一套 CPU/GPU 都能跑、無 Python 推論依賴的語音引擎

從 Releases 下載二進位、跑一次 ASR 和 TTS,大概半小時內就能完成。之後你就有一顆可嵌入任何系統的本地「語音核心」。

🚀 你現在可以做的事

  • 打開 GitHub Releases,下載適合自己平台的 vibevoice.cpp 二進位並跑一次 ASR 測試
  • 錄一段約 30 秒的個人聲音,照 README 用 convert_voice_to_gguf.py 做一次 voice clone
  • 在你現有的工具(例如內部專案或腳本)中,嘗試用命令列或 C ABI 把 vibevoice.cpp 串成一個簡單語音流程

留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *