資料集自動建置系統
類別:AI Infrastructure · Automation技術棧:Python · PyQt · PostgreSQL · Enterprise NAS · PyTorch · Audio Processing
背景
在這個系統建置之前,團隊準備訓練資料的方式是這樣的:
- 音檔散落在各個人的電腦與隨身碟裡
- 沒有統一的權限控管,任何人都能刪改
- 每次要製作資料集,都要手動一個一個撈檔、轉格式、切割
- 非技術人員完全無法參與,所有事情都要工程師代勞
這套流程讓每次訓練資料的準備都要花掉大量時間,也讓 AI 模型的迭代速度嚴重受限。我從零設計並建置了這套資料集自動建置系統來解決這些問題。
架構設計
儲存層:企業級 NAS + PostgreSQL
企業級 NAS 負責存放音檔實體,提供:
- 集中化儲存,告別音檔散落
- 細粒度的使用者權限控管
- 穩定的區域網路存取速度
PostgreSQL 負責管理 Metadata:
- 每個音檔的 ID、路徑、長度、標籤、建立者、建立時間
- 支援複雜查詢(按標籤篩選、按時間範圍查詢等)
- 與 NAS 上的實體檔案形成對應關係
介面層:PyQt 圖形化介面
為了讓非技術人員也能操作,我用 PyQt 開發了圖形化介面(GUI):
- 登入後,系統自動向 PostgreSQL 查詢可用資料,並從 NAS 對應撈取音檔
- 操作者只需要選擇目標標籤、數量與輸出格式,不需要了解背後的儲存結構
- 所有操作都有詳細的 log 記錄,方便追蹤與除錯
處理層:全自動批次處理管線
這是系統最核心的價值。當使用者下達指令後,後端會啟動一條龍的自動化處理:
Step 1 — 音檔切割 根據靜音偵測或固定時長,將長音檔切割成適合訓練的片段。
Step 2 — 對齊與驗證 驗證切割後的音檔符合模型輸入規格(取樣率、聲道、位元深度),不符合的自動轉換。每個節點都有錯誤檢查,失敗的檔案會被標記而非靜默跳過。
Step 3 — 資料擴增(Augmentation) 為了提升資料集的多樣性,系統內建了音訊擴增功能:
- 混音(Mixing):將人聲與背景音混合,模擬真實環境
- 合成(Synthesis):對音高、語速、音量進行隨機變換
Step 4 — Metadata 自動生成 處理完成後,系統自動生成模型訓練所需的 Metadata 檔案,格式與模型預期的輸入完全對齊,不需要任何人工調整。
成果
- 非技術人員可以獨立操作,不再需要工程師代勞
- 資料集準備時間大幅縮短,加速了 AI 模型的迭代週期
- 資料品質一致,自動驗證機制排除了因人工操作導致的格式錯誤
- 集中化管理解決了原本的資料散落與安全性問題
反思
這個專案讓我學到:好的工具設計不是只讓工程師用起來方便,而是要讓整個團隊都能安全地使用。加入 GUI、錯誤檢查、自動驗證,表面上是「多做了一些工作」,實際上是把不可控的人工步驟變成可預期的自動化流程,長遠來看省下的時間遠比建置成本多。
