運用 Whisper 語音辨識與邊緣運算技術,結合 BERT 文本分析,優化醫療術語辨識,降低護理紀錄填寫負擔、提升醫療效率的智慧化醫療管理系統。
- 智慧語音辨識:使用 OpenAI Whisper 進行高精度中文語音轉文字
- 說話者分離:透過 Pyannote.audio 實現多人對話的說話者識別
- 醫療術語優化:針對醫療環境的專業術語進行辨識優化
- 即時邊緣運算:支援本地化處理,保護醫療隱私
- 多設備整合:Android 應用程式與 ESP32 硬體設備的無縫整合
- 藍牙定位追蹤:透過藍牙信號強度進行人員定位與追蹤
- 多模態 AI 處理:結合語音辨識、說話者分離、文本分析
- 即時處理能力:低延遲的語音轉文字與分析
- 邊緣運算支援:支援本地化部署,確保資料安全
- 容器化架構:提供 Docker 支援,便於部署和擴展
- RESTful API:完整的 API 介面供前端應用程式使用
- Web 框架:FastAPI 0.112.1
- 語音辨識:OpenAI Whisper (large model)
- 說話者分離:Pyannote.audio
- 深度學習:PyTorch
- 音訊處理:TorchAudio, Pydub
- 資料庫:PostgreSQL + SQLAlchemy
- 容器化:Docker
- 認證授權:JWT Token
- 開發框架:Android Jetpack Compose
- 網路請求:Retrofit + OkHttp
- 藍牙通訊:Android Bluetooth API
- 音訊錄製:Android AudioRecord API
- USB 通訊:Android USB Host API
- 模型類型:OpenAI Whisper Large
- 語言支援:繁體中文 (zh)
- 輸入格式:音訊檔案 (WAV, MP3, etc.)
- 輸出格式:結構化文字與時間戳記
- 模型類型:Pyannote.audio Speaker Embedding
- 嵌入模型:speechbrain/spkrec-ecapa-voxceleb
- 聚類演算法:Agglomerative Clustering
- 最大說話者數:6人
Medical_Record/
├── medical-record-api/ # 後端 API 服務
│ ├── main.py # FastAPI 主程式
│ ├── requirements.txt # Python 依賴套件
│ ├── Dockerfile # Docker 容器設定
│ ├── docker-compose.yml # Docker Compose 配置
│ ├── routers/ # API 路由模組
│ │ ├── auth.py # 認證相關 API
│ │ ├── transcript.py # 語音轉錄 API
│ │ ├── bed_device.py # 病床設備管理 API
│ │ ├── device.py # 設備管理 API
│ │ └── ward.py # 病房管理 API
│ ├── tasks/ # 背景任務
│ │ └── whisper_transcript.py # Whisper 轉錄處理
│ ├── utils/ # 工具模組
│ │ ├── feature_embed.py # 說話者特徵嵌入
│ │ ├── sql_connector.py # 資料庫連接器
│ │ ├── token_manager.py # Token 管理
│ │ └── medical_record.sql # 資料庫結構
│ └── configs/ # 配置檔案
│ └── whisper-transcript.json # Whisper 配置
├── medical-record-android/ # Android 應用程式
│ ├── app/
│ │ ├── src/main/java/team/co2/medical_records/
│ │ │ ├── MainActivity.kt # 主活動
│ │ │ ├── service/ # 服務模組
│ │ │ │ ├── audio/ # 音訊服務
│ │ │ │ │ └── AudioRecordingService.kt
│ │ │ │ ├── bluetooth/ # 藍牙通訊
│ │ │ │ │ ├── Esp32Communicator.kt
│ │ │ │ │ └── Data.kt
│ │ │ │ ├── medical_record_api/ # API 服務
│ │ │ │ │ ├── MedicalRecordAPI.kt
│ │ │ │ │ ├── ApiService.kt
│ │ │ │ │ └── Data.kt
│ │ │ │ └── device/ # 設備資訊
│ │ │ │ └── DeviceInformation.kt
│ │ │ └── ui/ # 使用者介面
│ │ │ ├── screen/ # 畫面模組
│ │ │ ├── layout/ # 佈局元件
│ │ │ └── theme/ # 主題設定
│ │ └── build.gradle.kts # 建置配置
│ └── build.gradle.kts
└── LICENSE # Apache 2.0 授權
- Python 3.11+
- CUDA 支援 (可選,用於 GPU 加速)
- Android Studio (用於 Android 開發)
- PostgreSQL 資料庫
- ESP32 硬體設備 (可選)
- 克隆專案
git clone <repository-url>
cd Medical_Record/medical-record-api- 安裝依賴套件
pip install -r requirements.txt- 設定資料庫
# 建立 PostgreSQL 資料庫
createdb medical_record
# 匯入資料庫結構
psql -d medical_record -f utils/medical_record.sql- 設定環境變數
# 複製並編輯配置檔案
cp configs/db-local.json configs/db-current.json
# 編輯資料庫連線設定- 啟動應用程式
# 開發模式
uvicorn main:app --reload --host 0.0.0.0 --port 8001
# 或使用 Docker
docker-compose up -d- 開啟 Android Studio
cd medical-record-android- 同步專案
- 在 Android Studio 中開啟專案
- 等待 Gradle 同步完成
- 設定 API 端點
- 編輯
MedicalRecordAPI.kt中的SERVER_URL - 設定為您的後端服務位址
- 建置並執行
- 連接 Android 設備或啟動模擬器
- 點擊 Run 按鈕建置並執行應用程式
http://localhost:8001
POST /auth/register
- 使用者註冊
POST /auth/login
- 使用者登入
GET /auth/check-session
- 檢查會話狀態
POST /transcript/bed-audio-upload
- 上傳病床音訊檔案
POST /transcript/upload-feature
- 上傳說話者特徵檔案
POST /device/register
- 註冊設備
GET /device/list
- 取得設備列表
POST /bed-device/link
- 連結病床與設備
GET /bed-device/list
- 取得病床設備列表
# 啟動服務後,訪問 Swagger UI
http://localhost:8001/docs
# 或使用 curl 測試
curl -X GET "http://localhost:8001/" \
-H "accept: application/json"# 測試音訊檔案上傳
curl -X POST "http://localhost:8001/transcript/bed-audio-upload" \
-H "accept: application/json" \
-H "Content-Type: multipart/form-data" \
-F "file=@test_audio.wav" \
-F "data={\"file_md5\":\"...\",\"start_at\":\"...\",\"previous_audio_uid\":null}"{
"language": "zh",
"max_speakers": 6,
"model_size": "large"
}- 錄製時長:30秒分段
- 取樣率:16000 Hz
- 聲道:單聲道 (Mono)
- 格式:PCM 16-bit
- 掃描間隔:1秒
- 信號強度閾值:-65 dBm
- 最大設備數:10個
- 準確率:>95% (中文醫療術語)
- 處理時間:<5秒 (30秒音訊)
- 支援格式:WAV, MP3, M4A
- 準確率:>90%
- 最大說話者:6人
- 處理時間:<10秒
- 並發處理:支援多設備同時連線
- 記憶體使用:<2GB RAM
- 儲存空間:音訊檔案自動清理
- 端到端加密:所有通訊使用 HTTPS
- Token 認證:JWT 會話管理
- 資料匿名化:敏感資訊自動遮蔽
- 本地處理:支援邊緣運算部署
- GDPR 合規:符合歐盟資料保護法規
- HIPAA 合規:符合美國醫療資訊保護法規
- 資料保留:可設定自動清理機制
- Fork 專案
- 建立功能分支 (
git checkout -b feature/AmazingFeature) - 提交變更 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 開啟 Pull Request
- 遵循 PEP 8 Python 程式碼規範
- 使用 Kotlin 官方程式碼風格
- 撰寫單元測試
- 更新相關文件
本專案採用 Apache License 2.0 授權條款 - 詳見 LICENSE 檔案
如有任何問題或建議,請透過以下方式聯絡:
- 建立 Issue
- 發送 Email 至:jdps99119@gmail.com
- 專案維護者:Nothing Chang
- 整合 BERT 醫療術語優化
- 支援更多音訊格式
- 優化說話者分離準確率
- 新增即時語音轉錄功能
- 支援多語言辨識
- 整合醫療影像分析
- 建立醫療知識圖譜
- 開發 Web 管理介面
注意事項:
- 本系統僅供研究和教育用途
- 醫療相關的語音辨識應諮詢專業醫療人員
- 請確保遵守當地的隱私保護法規
- 使用前請確認硬體設備相容性