142 lines
5.8 KiB
Markdown
142 lines
5.8 KiB
Markdown
# AI Meeting Assistant
|
||
|
||
AI Meeting Assistant 是一個功能強大的 Web 應用程式,旨在簡化和自動化會議後續處理流程。它提供了一系列工具,包括從影片中提取音訊、將音訊轉錄為文字、對逐字稿進行多語言翻譯,以及生成專業的會議結論。
|
||
|
||
|
||
## ✨ 功能特色
|
||
|
||
- **影片轉音訊**: 從常見的影片格式(MP4, MOV, AVI)中快速提取 `.wav` 音訊檔案。
|
||
- **AI 音訊轉文字**: 使用 OpenAI Whisper 模型將音訊轉錄為帶有精確時間戳的逐字稿。
|
||
- **AI 人聲分離**: 內建 Demucs 模型,可在轉錄前分離人聲,有效處理背景嘈雜的音訊。
|
||
- **多語言支援**: 支援中文、英文、日文、韓文等多種語言的自動偵測與轉錄。
|
||
- **AI 逐段翻譯**: 整合 Dify AI 平台,提供高品質的逐字稿全文對照翻譯。
|
||
- **AI 會議結論**:
|
||
- **初版摘要**: 自動生成會議的重點、待辦事項和結論。
|
||
- **迭代修改**: 可根據您的指示,對已生成的結論進行多次修改和完善。
|
||
- **現代化介面**: 採用 Bootstrap 5 構建,提供清晰、專業且響應式的使用者體驗。
|
||
- **Docker 化部署**: 提供 Docker 和 Docker Compose 設定,實現一鍵啟動所有服務(Web, Celery, Redis),並支援 CPU 和 GPU 環境。
|
||
|
||
## 🛠️ 環境要求
|
||
|
||
在本地端執行此專案之前,請確保您已安裝以下軟體:
|
||
|
||
- **Python**: 3.9 或更高版本。
|
||
- **Redis**: 用於 Celery 的訊息代理和後端。
|
||
- **FFmpeg**: 一個處理多媒體內容的開源工具集。請確保 `ffmpeg` 指令可在您的終端機中直接執行。
|
||
- **Windows**: 可從 [官網](https://ffmpeg.org/download.html) 下載,並將其 `bin` 目錄加入系統的 `PATH` 環境變數。
|
||
- **macOS (使用 Homebrew)**: `brew install ffmpeg`
|
||
- **Linux (Debian/Ubuntu)**: `sudo apt update && sudo apt install ffmpeg`
|
||
|
||
## 🚀 本地端啟動指南
|
||
|
||
1. **克隆專案**
|
||
```bash
|
||
git clone <your-repository-url>
|
||
cd AI_meeting_assistant
|
||
```
|
||
|
||
2. **建立並啟用虛擬環境**
|
||
```bash
|
||
python -m venv venv
|
||
# Windows
|
||
venv\Scripts\activate
|
||
# macOS / Linux
|
||
source venv/bin/activate
|
||
```
|
||
|
||
3. **安裝 Python 依賴套件**
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
*注意:`requirements.txt` 預設安裝 GPU 版本的 PyTorch。如果您的電腦沒有 NVIDIA GPU,請在安裝前將 `requirements.txt` 中的 `torch` 和 `torchaudio` 相關行替換為 CPU 版本:*
|
||
```
|
||
# torch --extra-index-url https://download.pytorch.org/whl/cu118
|
||
# torchaudio --extra-index-url https://download.pytorch.org/whl/cu118
|
||
torch
|
||
torchaudio
|
||
```
|
||
|
||
4. **設定環境變數**
|
||
- 將 `.env.example` 檔案複製為 `.env`。
|
||
- 在 `.env` 檔案中填入您的 Dify API 金鑰。
|
||
```
|
||
DIFY_API_KEY="your_dify_api_key_here"
|
||
```
|
||
|
||
5. **啟動服務**
|
||
您需要開啟 **三個獨立的終端機**,並在每個終端機中啟用虛擬環境 (`venv`):
|
||
|
||
- **終端機 1: 啟動 Redis**
|
||
如果尚未執行,請啟動您的 Redis 伺服器。
|
||
```bash
|
||
redis-server
|
||
```
|
||
|
||
- **終端機 2: 啟動 Celery Worker**
|
||
此背景處理器將執行所有耗時的 AI 任務。
|
||
```bash
|
||
celery -A tasks.celery worker --loglevel=info --pool=solo
|
||
```
|
||
*在 Windows 上,可能需要使用 `gevent` 或 `eventlet` 作為執行池:`celery -A tasks.celery worker --loglevel=info -P gevent`*
|
||
|
||
- **終端機 3: 啟動 Flask Web 應用**
|
||
```bash
|
||
flask run
|
||
```
|
||
應用程式將在 `.env` 檔案中指定的 Port(預設為 `12000`)上執行。
|
||
|
||
6. **訪問應用**
|
||
在瀏覽器中開啟 `http://127.0.0.1:12000`。
|
||
|
||
## 🐳 Docker 部署指南
|
||
|
||
使用 Docker 是部署此應用的推薦方式,因為它能自動處理所有服務和依賴。
|
||
|
||
1. **安裝 Docker 和 Docker Compose**
|
||
請確保您的系統已安裝 [Docker](https://www.docker.com/products/docker-desktop/)。
|
||
|
||
2. **設定環境變數**
|
||
- **重要**: Docker 使用的是容器網路,因此需要將 Redis 的主機名稱指向 Docker Compose 中定義的服務名稱。請確認 `.env` 檔案中的 `CELERY_BROKER_URL` 和 `CELERY_RESULT_BACKEND` 指向 `redis`:
|
||
```
|
||
CELERY_BROKER_URL="redis://redis:6379/0"
|
||
CELERY_RESULT_BACKEND="redis://redis:6379/0"
|
||
```
|
||
|
||
3. **建構並啟動容器**
|
||
在專案根目錄下執行以下指令:
|
||
```bash
|
||
docker-compose up --build
|
||
```
|
||
- **GPU 支援**: 如果您的系統支援 NVIDIA GPU 且已安裝 `nvidia-docker-toolkit`,Docker Compose 將會自動使用 `Dockerfile` 中為 GPU 優化的設定來建構映像。
|
||
- **CPU 使用者**: 如果您沒有 GPU,Docker 會自動退回使用 CPU 版本的 PyTorch,無需任何修改。
|
||
|
||
4. **訪問應用**
|
||
在瀏覽器中開啟 `http://localhost:12000`。
|
||
|
||
5. **停止服務**
|
||
若要停止所有容器,請在終端機中按下 `Ctrl + C`,然後執行:
|
||
```bash
|
||
docker-compose down
|
||
```
|
||
|
||
## 📂 專案結構
|
||
|
||
```
|
||
.
|
||
├── app.py # Flask 主應用程式
|
||
├── tasks.py # Celery 背景任務 (AI/ML 處理)
|
||
├── requirements.txt # Python 依賴套件
|
||
├── Dockerfile # 用於建構應用程式映像
|
||
├── docker-compose.yml # 一鍵啟動所有服務
|
||
├── .env.example # 環境變數範本
|
||
├── .gitignore # Git 忽略清單
|
||
├── README.md # 專案說明文件
|
||
├── templates/
|
||
│ └── index.html # 前端網頁
|
||
├── static/
|
||
│ ├── css/style.css # 自訂樣式
|
||
│ └── js/script.js # 前端互動邏輯
|
||
├── uploads/ # (自動生成) 儲存上傳的檔案
|
||
└── demucs_separated/ # (自動生成) 儲存人聲分離結果
|
||
```
|