# rust-scribe `rust-scribe` 是一個高效能的影片/音頻逐字稿轉寫工具,使用 Rust 語言編寫,並結合了 [Whisper.cpp](https://github.com/ggerganov/whisper.cpp) 的強大轉寫能力與 [FFmpeg](https://ffmpeg.org/) 的音頻處理功能,可自動生成帶有時間碼的逐字稿。 ## 功能特性 - **高效音頻提取**:利用 FFmpeg 直接從影片或音頻檔案中提取並重採樣為 Whisper 所需的格式 (16kHz, Mono, f32)。 - **精準轉寫**:基於 OpenAI Whisper 模型,提供高精度的語音轉文字功能。 - **時間碼支援**:自動產生精確到毫秒的逐字稿時間戳。 - **語言自動檢測**:若未指定語言,可自動偵測輸入音頻的語言。 - **優化進度顯示**:在轉寫過程中提供即時的處理進度、耗時與預估剩餘時間。 ## 前置需求 在編譯與執行前,請確保系統已安裝以下環境: 1. **Rust 環境**:請安裝 [Rustup](https://rustup.rs/)。 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/` 目錄中。 ## 編譯與安裝 ```bash # 複製專案 git clone cd rust-scribe # 編譯 Release 版本 (建議) cargo build --release ``` ## 使用方式 執行程式時,需指定輸入檔案路徑及模型路徑: ```bash ./target/release/rust-scribe --model models/ ``` ### 參數說明 - ``: 欲轉寫的影片或音頻檔案路徑 (位置參數)。 - `-m, --model `: Whisper 模型檔案路徑 (必填)。 - `-l, --language `: 指定轉寫語言 (例如 `zh`, `en`)。若不指定,系統將自動偵測 (選填)。 - `-v, --verbose`: 開啟詳細轉寫進度輸出 (選填)。 **使用範例**: ```bash # 指定使用 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` 了解詳細的代碼風格、編譯與測試指南。