74 lines
2.6 KiB
Markdown
74 lines
2.6 KiB
Markdown
# 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` 了解詳細的代碼風格、編譯與測試指南。
|