音訊課程文件
使用流水線進行自動語音識別
並獲得增強的文件體驗
開始使用
使用流水線進行自動語音識別
自動語音識別(ASR)是一項將語音音訊記錄轉錄為文字的任務。這項任務具有許多實際應用,從為影片建立字幕到為Siri和Alexa等虛擬助手啟用語音命令。
在本節中,我們將使用 automatic-speech-recognition
流水線來轉錄一段關於某人詢問如何支付賬單的音訊記錄,使用與之前相同的 MINDS-14 資料集。
首先,如果尚未完成,請載入資料集並將其取樣率提高到16kHz,如使用流水線進行音訊分類中所述。
要轉錄音訊記錄,我們可以使用 🤗 Transformers 中的 automatic-speech-recognition
流水線。讓我們例項化該流水線
from transformers import pipeline
asr = pipeline("automatic-speech-recognition")
接下來,我們將從資料集中取一個示例,並將其原始資料傳遞給流水線
example = minds[0]
asr(example["audio"]["array"])
輸出
{"text": "I WOULD LIKE TO PAY MY ELECTRICITY BILL USING MY COD CAN YOU PLEASE ASSIST"}
讓我們將此輸出與該示例的實際轉錄進行比較
example["english_transcription"]
輸出
"I would like to pay my electricity bill using my card can you please assist"
該模型似乎在轉錄音訊方面做得相當好!與原始轉錄相比,它只錯了一個詞(“card”),考慮到說話者有澳大利亞口音,其中字母“r”通常是無聲的,這已經相當不錯了。話雖如此,我不會建議你下次用魚來支付電費!
預設情況下,此流水線使用經過英語自動語音識別訓練的模型,這在本示例中是合適的。如果您想嘗試轉錄 MINDS-14 的其他子集中的不同語言,您可以在🤗 Hub上找到預訓練的 ASR 模型。您可以先按任務篩選模型列表,然後按語言篩選。找到您喜歡的模型後,將其名稱作為 model
引數傳遞給流水線。
讓我們嘗試在 MINDS-14 的德語部分進行此操作。載入“de-DE”子集
from datasets import load_dataset
from datasets import Audio
minds = load_dataset("PolyAI/minds14", name="de-DE", split="train")
minds = minds.cast_column("audio", Audio(sampling_rate=16_000))
獲取一個示例,看看轉錄應該是什麼
example = minds[0]
example["transcription"]
輸出
"ich möchte gerne Geld auf mein Konto einzahlen"
在 🤗 Hub 上找到一個預訓練的德語 ASR 模型,例項化一個流水線,並轉錄該示例
from transformers import pipeline
asr = pipeline("automatic-speech-recognition", model="maxidl/wav2vec2-large-xlsr-german")
asr(example["audio"]["array"])
輸出
{"text": "ich möchte gerne geld auf mein konto einzallen"}
所以,沒錯!
當您嘗試解決自己的任務時,從本單元中展示的簡單流水線開始是一個有價值的工具,它具有以下幾個優點:
- 可能存在一個預訓練模型,它已經很好地解決了您的任務,從而節省了您大量時間
pipeline()
會為您處理所有預處理/後處理,因此您無需擔心將資料轉換為模型所需的正確格式- 如果結果不理想,這仍然為您未來的微調提供了一個快速基線
- 一旦您在自定義資料上微調了模型並將其共享到 Hub,整個社群將能夠透過
pipeline()
方法快速輕鬆地使用它,從而使 AI 更易於訪問。