中圖分類號:G434文獻標識碼:A論文編號:1674-2117(2025)09-0083-03
問題的提出:網頁前端訓練模型如何本地推理
浦育平臺(OpenInnolab)的“AI體驗”欄目提供了一些AI模型訓練實驗,用戶通過網頁就能采集數據,形成數據集,然后訓練模型、測試模型。因為其訓練模型的算力來自瀏覽器前端,所以實現了環境的零配置,做到了算力的零提供。這就降低了AI模型訓練實驗的實施難度,使一個班級的學生同時在課堂上訓練模型得以實現。
2024年年初,XEdu團隊在網頁前端訓練模型的基礎上增加了模型轉換功能,可以導出為通用的ONNX模型,并可以用XEduHub進行推理,從而實現了在網頁上用無代碼方式訓練模型,然后用低代碼部署在本地計算機或者各種開源硬件上。這樣一來,網頁前端訓練的模型不再是“體驗”,而是能部署應用,是一個能解決問題的工具,實現了“學用結合”。
可行性分析:聲音分類模型能否導出為ONNX格式
在網頁前端訓練的聲音分類模型能不能導出為ONNX格式?答案是肯定的。這些在網頁上訓練模型的功能,大都基于TensorFlow.JS(簡稱為TFJS)開發。借助“tf2onnx”的庫,TFJS的模型都能轉換為ONNX,支持OnnxRuntime框架推理。筆者曾經在《在行空板上部署Web前端訓練的AI模型》一文(發表于《中國信息技術教育》雜志2023年第11期)中做過詳細介紹。只可惜轉換后的模型雖然能推理卻無法真正使用,因為推理數據的前處理工作依然是難題。
筆者用一個流程圖來講解模型訓練和推理過程(如下頁圖1)。大部分模型的訓練數據都要先經過“前處理”,模型輸出的推理結果,也要進行“后處理”。數據處理的方式很多,以大家熟悉的“圖像分類”為例,要根據具體的算法(網絡結構),將原始圖像轉換為規定的格式,如“LeNet”需要轉換為
的灰度圖,“MobileNet”需要轉換為
的RGB圖。在模型訓練完成后,推理數據也要使用同樣的方式處理,否則無法正常推理。
在網頁前端訓練聲音分類模型,實際上先要將聲音數據轉換為類似圖像的數據。其使用短時傅里葉變換(short-timeFouriertransform,STFT)之類的技術,將一維的聲音信號變為二維的時頻譜圖。時頻譜圖的橫坐標為時間,縱坐標為頻率,顏色深度為對應時間和對應頻率的大小,變換前后的信號如圖2所示。《在行空板上部署Web前端訓練的AI模型》一文對具體原理做過介紹,感興趣的讀者可以參考。


在了解模型訓練過程之后,就可以進一步討論數據前處理的問題了。聲音模型是利用前端代碼將聲音轉換為“時頻譜圖”后再訓練的,但是這些“時頻譜圖”的具體格式、轉換的方法,都需要分析源代碼才能了解。只有了解了具體的做法,才能找到合適的Python庫,用Python代碼實現同樣的數據前處理工作,再將處理好的數據送到模型中推理。機器學習的應用原則就是訓練模型的數據和推理數據要保持一致。
問題的解決:使用librosa庫實現數據前處理
筆者在AI平臺開發團隊的支持下,分析了TFJS的代碼,確認了一些重要的信息,如提取的幀數為43,特征維度是232等。音頻轉“時頻譜圖”前處理工作,借助Librosa庫來實現,最終在本地用Python代碼完成了聲音分類模型的推理。參考代碼如圖3所示。
現在,就可以簡單介紹在網頁端訓練聲音分類模型并在本地推理的具體過程了。
① 打開中鳴AI平臺,在“AI體驗”欄選擇“聲音分類”(地址:https://ai.zmrobo.com/).如圖4所示,在網頁端左邊增加類別,然后錄制聲音、提取特征。因為操作很簡單,具體訓練過程不再描述。需要注意的是,類別中需要有“背景噪音”。
② 下載“ONNX”模型,使用上面提供的代碼進行推理。
問題的延續:如何用XEduHub推理模型
完成本地推理僅僅是第一步。
XEdu的設計理念是模型的訓練工作和推理分離,所有的模型推理都由XEduHub來實現。這樣做可以讓模型推理的代碼一致,降低學習和應用的難度。所以,我們可以借助XEduHub提供的repo功能,自己寫一個第三方的推理代碼,接入XEdu的生態。
筆者設計的代碼如圖5所示,其中“xiezuoru/tfjs_speech\"為推理代碼下載信息,“model.onnx”為聲音分類模型名稱,“test.wav”為要推理的聲音文件。運行這段代碼,推理的核心代碼(如圖6)會從網上自動下載到本地。
總結:用開源的方式共建AI學習工具生態
中小學能不能學習AI,取決于學習工具的使用門檻是否足夠低。十年前,一批創客教師和企業合作,設計了掌控板、行空板、Mind+和SIoT等一系列低門檻的軟硬件,使義務教育的“過程與控制”“物聯網”得以落地。現在,人工智能教育同樣需要多方合作,《教育部辦公廳關于加強中小學人工智能教育的通知》也在強調統籌高校、教科研機構、高科技企業、中小學校等各方力量,統籌推進中小學和大學人工智能教育一體化發展。

