# Gemini AI 音訊分析筆記平台 (Audio Analyzer & Notes Platform)
這是一個基於 Python FastAPI 和 Google Gemini 1.5 Flash 模型的智慧音訊處理平台。它能將音訊內容(來自本地檔案或 YouTube)轉換為帶有說話者和時間戳記的逐字稿,將其作為會議筆記儲存,並允許使用者透過智慧聊天介面對筆記內容進行提問、分析,最終還可以將會議結論無縫地建立成 GitHub Issues。
## ✨ 核心功能
* **多來源音訊轉錄**:支援上傳本地音訊檔案(MP3, WAV 等)以及直接貼上 YouTube 影片網址進行分析。
* **智慧逐字稿生成**:利用 Gemini 1.5 Flash 模型,自動生成包含 `[MM:SS]` 時間戳記和 `[說話者 N]` 標籤的繁體中文逐字稿。
* **持久化會議筆記**:所有生成的逐字稿都會被賦予標題和建立時間,並儲存在一個本地的 SQLite 資料庫 (`meeting_notes.db`) 中,方便隨時查閱。
* **多筆記聊天分析**:在 `/llm` 頁面,使用者可以從左側邊欄勾選一份或多份會議筆記,然後在右側的聊天視窗中對這些筆記的內容進行提問或要求總結。
* **會議筆記管理**:使用者可以在 `/llm` 頁面查看(View)逐字稿的完整內容,或刪除(Delete)不再需要的會議筆記。
* **GitHub Issue 整合**:在 `/issue` 頁面,使用者可以填寫自己的 GitHub Token 和倉庫資訊,並從下拉選單中選擇一份會議筆記,其內容會被自動填入描述欄,方便快速建立 Issue。
## 🛠️ 技術堆疊
* **後端框架**: FastAPI
* **AI 模型**: Google Gemini 1.5 Flash
* **資料庫**: SQLite (透過 Python 內建的 `sqlite3` 模組)
* **前端**: HTML5, Tailwind CSS, Vanilla JavaScript
* **Python 函式庫**:
* `uvicorn`: ASGI 伺服器
* `python-dotenv`: 環境變數管理
* `google-generativeai`: Google AI Python SDK
* `yt-dlp`: YouTube 影片下載工具
* `PyGithub`: GitHub API Python 客戶端
* `Markdown`: 將 Markdown 文本轉換為 HTML
## 📂 專案結構
```
.
├── app/
│ ├── __init__.py
│ ├── database.py # 資料庫操作
│ ├── main.py # FastAPI 路由與 API 端點
│ ├── schemas.py # Pydantic 資料模型
│ └── services.py # 核心服務 (Gemini, GitHub, YouTube)
│
├── static/
│ ├── index.html # 首頁 (音訊上傳)
│ ├── llm.html # 聊天分析頁面
│ ├── issue.html # GitHub Issue 建立頁面
│ ├── script.js # index.html 的腳本
│ ├── llm.js # llm.html 的腳本
│ └── issue.js # issue.html 的腳本
│
├── .env # 環境變數檔案 (需自行建立)
├── meeting_notes.db # SQLite 資料庫檔案 (首次執行後自動產生)
├── requirements.txt # Python 依賴套件
└── README.md # 本文件
```
## 🚀 快速開始
### 1. 環境準備
* 確認您已安裝 Python 3.8+。
* 複製 (Clone) 本專案到您的本地電腦。
### 2. 安裝依賴
在您的終端機中,於專案根目錄下執行:
```bash
# 建議先建立並啟用一個虛擬環境
python -m venv .venv
source .venv/bin/activate # On Windows, use `.venv\Scripts\activate`
# 安裝所有必要的 Python 套件
pip install -r requirements.txt
```
### 3. 設定環境變數
在專案根目錄下建立一個名為 `.env` 的檔案,並填入您的 Google Gemini API 金鑰:
```
GEMINI_API_KEY="YOUR_GEMINI_API_KEY_HERE"
```
### 4. 啟動應用程式
在專案根目錄下執行:
```bash
uvicorn app.main:app --reload
```
`--reload` 參數會在您修改程式碼後自動重啟伺服器,非常適合開發。
### 5. 開始使用
打開您的瀏覽器,訪問 `http://localhost:8000` 即可開始使用。
## 📖 使用流程
1. **分析音訊 (首頁 `/`)**:
* 您可以選擇上傳本地音訊檔,或貼上 YouTube 網址。
* 如果是 YouTube 網址,系統會彈出視窗請您為這份會議筆記命名。
* 分析完成後,逐字稿會自動存入資料庫。
2. **聊天與管理 (`/llm`)**:
* 進入此頁面後,左側會顯示所有已儲存的會議筆記。
* 您可以勾選一或多份筆記,然後在右側聊天視窗中對它們提問。
* 點擊每筆紀錄旁的 `View` 可以查看完整逐字稿,點擊 `Delete` 則可以刪除該筆紀錄。
3. **建立 Issue (`/issue`)**:
* 在此頁面填入您的 GitHub 個人存取權杖 (PAT) 和倉庫名稱 (`owner/repo`)。
* 從下拉選單中選擇一份會議紀錄,其內容會自動填入描述區。
* 填寫標題後,即可建立 GitHub Issue。