Skip to content

資料集自動建置系統

類別: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、錯誤檢查、自動驗證,表面上是「多做了一些工作」,實際上是把不可控的人工步驟變成可預期的自動化流程,長遠來看省下的時間遠比建置成本多。