f9653eef586e74af02b106786f5dd0506af53ade
rust-scribe
rust-scribe 是一個高效能的影片/音頻逐字稿轉寫工具,使用 Rust 語言編寫,並結合了 Whisper.cpp 的強大轉寫能力與 FFmpeg 的音頻處理功能,可自動生成帶有時間碼的逐字稿。
功能特性
- 高效音頻提取:利用 FFmpeg 直接從影片或音頻檔案中提取並重採樣為 Whisper 所需的格式 (16kHz, Mono, f32)。
- 精準轉寫:基於 OpenAI Whisper 模型,提供高精度的語音轉文字功能。
- 時間碼支援:自動產生精確到毫秒的逐字稿時間戳。
- 語言自動檢測:若未指定語言,可自動偵測輸入音頻的語言。
- 優化進度顯示:在轉寫過程中提供即時的處理進度、耗時與預估剩餘時間。
前置需求
在編譯與執行前,請確保系統已安裝以下環境:
- Rust 環境:請安裝 Rustup。
- FFmpeg:系統必須安裝 FFmpeg 開發庫。
- macOS:
brew install ffmpeg - Ubuntu/Debian:
sudo apt install libavcodec-dev libavformat-dev libavutil-dev libswresample-dev
- macOS:
- 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 了解詳細的代碼風格、編譯與測試指南。
Description
Languages
Rust
100%