Hugging Face 推理端點的語音辨識與說話者分割管線
模組化管線架構
此管線被設計為模組化系統,根據特定使用情境可啟用或停用各元件。核心元件包括:
- ASR 模組: 使用 Whisper 模型進行高品質語音轉文字轉錄。
- 說話者分割模組: 採用 Pyannote speaker-diarization-3.1 模型,這是一個最先進的開源實作,用於辨識並依說話者分割轉錄內容。
- 推測解碼: 透過使用較小的輔助模型(例如蒸餾版 Whisper 模型)來建議生成內容,然後由較大的主模型驗證,以加速推理。
技術需求與限制
為了最佳化效能,實作使用 PyTorch 2.2,該版本內建支援透過 SDPA 的 Flash Attention 2。
推測解碼帶來以下技術限制:
- 架構相同: 輔助模型的解碼器部分必須與主模型使用相同的架構。
- 批次大小: 推測解碼需要批次大小為 1。若生產環境需要更大的批次,標準推理可能比輔助生成更快。
效能基準測試
在 NVIDIA A10 GPU 上,以 openai/whisper-large-v3 為主模型、distil-whisper/distil-large-v3 為輔助模型進行的基準測試顯示,推測解碼對於短音訊片段非常有效,但對長音訊則較不具效率:
- 短音訊 (8 秒): 輔助生成平均 326.96 ms,較未使用輔助的 784.35 ms 快很多。
- 長音訊 (60 秒): 未使用輔助的生成平均 3.48 s,而使用輔助的生成平均 4.15 s。
此效能差異產生的原因是長音訊會自動被切分成多個批次,而這與推測解碼只能使用批次大小 1 的限制相衝突。
部署與設定
部署透過自訂處理器管理,該處理器包含三個主要檔案:handler.py(初始化與推理)、diarization_utils.py(前後處理)以及 config.py(設定)。
設定參數
模型設定透過 ModelSettings 與 InferenceConfig 類別管理。使用者可在建立端點時,透過環境變數或 API 呼叫調整參數。主要參數包括:
- 任務: 可選
transcribe或translate。 - 批次大小: 預設為 24(若使用輔助生成則必須為 1)。
- 輔助旗標: 布林值,用於決定是否使用推測解碼。
- 說話者限制: 可設定
num_speakers、min_speakers、max_speakers以供說話者分割管線使用。
API 整合
部署完成後,端點接受 base64 編碼的音訊檔案。請求以 JSON 負載傳送,inputs 欄位內放置音訊資料,parameters 字典則用於調整 InferenceConfig 設定。此流程可使用標準的 Python requests 或 Hugging Face InferenceClient 來實作。