Files
rust-scribe/README.md

74 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 <repository-url>
cd rust-scribe
# 編譯 Release 版本 (建議)
cargo build --release
```
## 使用方式
執行程式時,需指定輸入檔案路徑及模型路徑:
```bash
./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`: 開啟詳細轉寫進度輸出 (選填)。
**使用範例**
```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` 了解詳細的代碼風格、編譯與測試指南。