Skip to content

Team-Nothing/Medical_Record

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

醫療紀錄整合輔助系統 (Medical Record Integration Assistant System)

運用 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

AI 模型架構

語音辨識模型

  • 模型類型: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 硬體設備 (可選)

後端安裝步驟

  1. 克隆專案
git clone <repository-url>
cd Medical_Record/medical-record-api
  1. 安裝依賴套件
pip install -r requirements.txt
  1. 設定資料庫
# 建立 PostgreSQL 資料庫
createdb medical_record

# 匯入資料庫結構
psql -d medical_record -f utils/medical_record.sql
  1. 設定環境變數
# 複製並編輯配置檔案
cp configs/db-local.json configs/db-current.json
# 編輯資料庫連線設定
  1. 啟動應用程式
# 開發模式
uvicorn main:app --reload --host 0.0.0.0 --port 8001

# 或使用 Docker
docker-compose up -d

Android 應用程式安裝

  1. 開啟 Android Studio
cd medical-record-android
  1. 同步專案
  • 在 Android Studio 中開啟專案
  • 等待 Gradle 同步完成
  1. 設定 API 端點
  • 編輯 MedicalRecordAPI.kt 中的 SERVER_URL
  • 設定為您的後端服務位址
  1. 建置並執行
  • 連接 Android 設備或啟動模擬器
  • 點擊 Run 按鈕建置並執行應用程式

📡 API 文件

基礎 URL

http://localhost:8001

端點列表

1. 認證相關

POST /auth/register

  • 使用者註冊

POST /auth/login

  • 使用者登入

GET /auth/check-session

  • 檢查會話狀態

2. 語音轉錄

POST /transcript/bed-audio-upload

  • 上傳病床音訊檔案

POST /transcript/upload-feature

  • 上傳說話者特徵檔案

3. 設備管理

POST /device/register

  • 註冊設備

GET /device/list

  • 取得設備列表

4. 病床管理

POST /bed-device/link

  • 連結病床與設備

GET /bed-device/list

  • 取得病床設備列表

🧪 測試

API 測試

# 啟動服務後,訪問 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}"

🔧 配置設定

Whisper 配置

{
  "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 合規:符合美國醫療資訊保護法規
  • 資料保留:可設定自動清理機制

🤝 貢獻指南

  1. Fork 專案
  2. 建立功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交變更 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 開啟 Pull Request

開發規範

  • 遵循 PEP 8 Python 程式碼規範
  • 使用 Kotlin 官方程式碼風格
  • 撰寫單元測試
  • 更新相關文件

📄 授權條款

本專案採用 Apache License 2.0 授權條款 - 詳見 LICENSE 檔案

📞 聯絡資訊

如有任何問題或建議,請透過以下方式聯絡:

🔮 未來規劃

短期目標

  • 整合 BERT 醫療術語優化
  • 支援更多音訊格式
  • 優化說話者分離準確率
  • 新增即時語音轉錄功能

長期目標

  • 支援多語言辨識
  • 整合醫療影像分析
  • 建立醫療知識圖譜
  • 開發 Web 管理介面

注意事項:

  • 本系統僅供研究和教育用途
  • 醫療相關的語音辨識應諮詢專業醫療人員
  • 請確保遵守當地的隱私保護法規
  • 使用前請確認硬體設備相容性

About

No description, website, or topics provided.

Resources

License

Stars

2 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors