音訊課程文件

使用流水線進行音訊分類

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

使用流水線進行音訊分類

音訊分類涉及根據音訊錄製的內容為其分配一個或多個標籤。這些標籤可以對應不同的聲音類別,例如音樂、語音或噪音,或者更具體的類別,如鳥鳴或汽車引擎聲。

在深入瞭解最流行的音訊 Transformer 的工作原理以及如何微調自定義模型之前,讓我們看看如何僅用幾行程式碼使用 🤗 Transformers 的現成預訓練模型進行音訊分類。

讓我們繼續使用您在上一單元中探索過的 MINDS-14 資料集。如果您還記得,MINDS-14 包含人們以多種語言和方言向電子銀行系統提問的錄音,並且每段錄音都有 intent_class。我們可以根據通話意圖對錄音進行分類。

和以前一樣,讓我們首先載入資料的 en-AU 子集以嘗試流水線,並將其上取樣到大多數語音模型所需的 16kHz 取樣率。

from datasets import load_dataset
from datasets import Audio

minds = load_dataset("PolyAI/minds14", name="en-AU", split="train")
minds = minds.cast_column("audio", Audio(sampling_rate=16_000))

要將音訊錄音分類到一組類別中,我們可以使用 🤗 Transformers 的 audio-classification 流水線。在我們的例子中,我們需要一個已經為意圖分類進行過微調的模型,特別是針對 MINDS-14 資料集。幸運的是,Hub 上有一個模型可以做到這一點!讓我們使用 pipeline() 函式載入它

from transformers import pipeline

classifier = pipeline(
    "audio-classification",
    model="anton-l/xtreme_s_xlsr_300m_minds14",
)

此流水線期望音訊資料為 NumPy 陣列。原始音訊資料的所有預處理都將由流水線方便地為我們處理。讓我們選擇一個例子來試用它

example = minds[0]

如果您還記得資料集的結構,原始音訊資料儲存在 ["audio"]["array"] 下的 NumPy 陣列中,讓我們直接將其傳遞給 classifier

classifier(example["audio"]["array"])

輸出

[
    {"score": 0.9631525278091431, "label": "pay_bill"},
    {"score": 0.02819698303937912, "label": "freeze"},
    {"score": 0.0032787492964416742, "label": "card_issues"},
    {"score": 0.0019414445850998163, "label": "abroad"},
    {"score": 0.0008378693601116538, "label": "high_value_payment"},
]

該模型非常確信呼叫者打算了解如何支付賬單。讓我們看看此示例的實際標籤是什麼

id2label = minds.features["intent_class"].int2str
id2label(example["intent_class"])

輸出

"pay_bill"

太好了!預測標籤是正確的!在這裡,我們很幸運地找到了一個可以對我們需要的確切標籤進行分類的模型。很多時候,在處理分類任務時,預訓練模型的類別集與您需要模型區分的類別不完全相同。在這種情況下,您可以微調預訓練模型以將其“校準”到您的確切類別標籤集。我們將在後續單元中學習如何做到這一點。現在,讓我們看看語音處理中另一個非常常見的任務,即自動語音識別

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.