Files
rust-scribe/README.md

2.6 KiB
Raw Blame History

rust-scribe

rust-scribe 是一個高效能的影片/音頻逐字稿轉寫工具,使用 Rust 語言編寫,並結合了 Whisper.cpp 的強大轉寫能力與 FFmpeg 的音頻處理功能,可自動生成帶有時間碼的逐字稿。

功能特性

  • 高效音頻提取:利用 FFmpeg 直接從影片或音頻檔案中提取並重採樣為 Whisper 所需的格式 (16kHz, Mono, f32)。
  • 精準轉寫:基於 OpenAI Whisper 模型,提供高精度的語音轉文字功能。
  • 時間碼支援:自動產生精確到毫秒的逐字稿時間戳。
  • 語言自動檢測:若未指定語言,可自動偵測輸入音頻的語言。
  • 優化進度顯示:在轉寫過程中提供即時的處理進度、耗時與預估剩餘時間。

前置需求

在編譯與執行前,請確保系統已安裝以下環境:

  1. Rust 環境:請安裝 Rustup
  2. FFmpeg:系統必須安裝 FFmpeg 開發庫。
    • macOS: brew install ffmpeg
    • Ubuntu/Debian: sudo apt install libavcodec-dev libavformat-dev libavutil-dev libswresample-dev
  3. Whisper 模型:請準備 Whisper 的 .bin 模型檔案 (例如 ggml-base.bin),並放置於 models/ 目錄中。

編譯與安裝

# 複製專案
git clone <repository-url>
cd rust-scribe

# 編譯 Release 版本 (建議)
cargo build --release

使用方式

執行程式時,需指定輸入檔案路徑及模型路徑:

./target/release/rust-scribe <input_file> --model models/<your-model.bin>

參數說明

  • <input_file>: 欲轉寫的影片或音頻檔案路徑 (位置參數)。
  • -m, --model <MODEL_PATH>: Whisper 模型檔案路徑 (必填)。
  • -l, --language <LANG>: 指定轉寫語言 (例如 zh, en)。若不指定,系統將自動偵測 (選填)。
  • -v, --verbose: 開啟詳細轉寫進度輸出 (選填)。

使用範例

# 指定使用 base 模型,自動檢測語言
cargo run --release -- video.mp4 --model models/ggml-base.bin

# 指定使用中文進行轉寫
cargo run --release -- lecture.mkv --model models/ggml-base.bin --language zh

專案結構

rust-scribe/
├── src/
│   └── main.rs           # 核心邏輯 (音頻處理、Whisper 轉寫、CLI 介面)
├── models/               # 存放 Whisper 模型檔案
├── Cargo.toml            # 專案依賴與配置
└── .cargo/
    └── config.toml       # Cargo 編譯配置

開發者規範

請參閱 AGENTS.md 了解詳細的代碼風格、編譯與測試指南。