
語言識別是從多個(gè)音頻輸入樣本中識別主要語言的過程。在自然語言處理(NLP)中,語言識別是一個(gè)重要的問題,也是一個(gè)具有挑戰(zhàn)性的問題。有許多與語言相關(guān)的任務(wù),例如在手機(jī)上輸入文本、查找您喜歡的新聞文章或發(fā)現(xiàn)您可能遇到的問題的答案。所有這些任務(wù)都由NLP模型提供支持。為了決定在特定時(shí)間點(diǎn)調(diào)用哪個(gè)模型,我們必須執(zhí)行語言識別。
本文介紹了使用英特爾? PyTorch 擴(kuò)展(針對英特爾處理器進(jìn)行了優(yōu)化的 PyTorch AI 框架的一個(gè)版本)和英特爾??神經(jīng)壓縮器(一種在不犧牲準(zhǔn)確性的情況下加速人工智能推理的工具)進(jìn)行語言識別的深入解決方案和代碼示例。
該代碼示例演示了如何使用擁抱人臉語音大腦* 工具套件訓(xùn)練模型以執(zhí)行語言識別,并使用英特爾?人工智能分析工具包 (AI Kit) 對其進(jìn)行優(yōu)化。用戶可以修改代碼示例,并使用通用語音數(shù)據(jù)集識別多達(dá) 93 種語言。
語言識別方法
在建議的解決方案中,用戶將使用英特爾人工智能分析工具包容器環(huán)境來訓(xùn)練模型,并利用英特爾優(yōu)化的 PyTorch 庫執(zhí)行推理。還有一個(gè)選項(xiàng)可以使用英特爾神經(jīng)壓縮器量化訓(xùn)練的模型,以加快推理速度。
數(shù)據(jù)
對于此代碼示例,將使用通用語音數(shù)據(jù)集,特別是日語和瑞典語的通用語音語料庫 11.0。該數(shù)據(jù)集用于訓(xùn)練強(qiáng)調(diào)通道注意力、傳播和聚合時(shí)間延遲神經(jīng)網(wǎng)絡(luò) (ECAPA-TDNN),該網(wǎng)絡(luò)使用 Hugging Face SpeechBrain 庫實(shí)現(xiàn)。延時(shí)神經(jīng)網(wǎng)絡(luò) (TDNN),又名一維卷積神經(jīng)網(wǎng)絡(luò) (1D CNN),是多層人工神經(jīng)網(wǎng)絡(luò)架構(gòu),用于對網(wǎng)絡(luò)每一層具有移位不變性和模型上下文的模式進(jìn)行分類。ECAPA-TDNN是一種新的基于TDNN的揚(yáng)聲器嵌入提取器,用于揚(yáng)聲器驗(yàn)證;它建立在原始的 X-Vector 架構(gòu)之上,更加強(qiáng)調(diào)信道注意力、傳播和聚合。
實(shí)現(xiàn)
下載 Common Voice 數(shù)據(jù)集后,通過將 MP3 文件轉(zhuǎn)換為 WAV 格式來對數(shù)據(jù)進(jìn)行預(yù)處理,以避免信息丟失,并分為訓(xùn)練集、驗(yàn)證集和測試集。
使用Hugging Face SpeechBrain庫使用Common Voice數(shù)據(jù)集重新訓(xùn)練預(yù)訓(xùn)練的VoxLingua107模型,以專注于感興趣的語言。VoxLingua107 是一個(gè)語音數(shù)據(jù)集,用于訓(xùn)練口語識別模型,這些模型可以很好地處理真實(shí)世界和不同的語音數(shù)據(jù)。此數(shù)據(jù)集包含 107 種語言的數(shù)據(jù)。默認(rèn)情況下,使用日語和瑞典語,并且可以包含更多語言。然后,此模型用于對測試數(shù)據(jù)集或用戶指定的數(shù)據(jù)集進(jìn)行推理。此外,還有一個(gè)選項(xiàng)可以利用SpeechBrain的語音活動檢測(VAD),在隨機(jī)選擇樣本作為模型的輸入之前,僅從音頻文件中提取和組合語音片段。此鏈接提供了執(zhí)行 VAD 所需的所有工具。為了提高性能,用戶可以使用英特爾神經(jīng)壓縮器將訓(xùn)練好的模型量化為整數(shù) 8 (INT8),以減少延遲。
訓(xùn)練
訓(xùn)練腳本的副本將添加到當(dāng)前工作目錄中,包括 - 用于創(chuàng)建 WebDataset 分片,- 執(zhí)行實(shí)際訓(xùn)練過程,以及 - 配置訓(xùn)練選項(xiàng)。用于創(chuàng)建 Web數(shù)據(jù)集分片和 YAML 文件的腳本經(jīng)過修補(bǔ),可與此代碼示例選擇的兩種語言配合使用。create_wds_shards.pytrain.pytrain_ecapa.yaml
在數(shù)據(jù)預(yù)處理階段,執(zhí)行腳本隨機(jī)選擇指定數(shù)量的樣本,將輸入從MP3轉(zhuǎn)換為WAV格式。在這里,這些樣本中有 80% 將用于訓(xùn)練,10% 用于驗(yàn)證,10% 用于測試。建議至少 2000 個(gè)樣本作為輸入樣本數(shù),并且是默認(rèn)值。prepareAllCommonVoice.py
在下一步中,將從訓(xùn)練和驗(yàn)證數(shù)據(jù)集創(chuàng)建 WebDataset 分片。這會將音頻文件存儲為 tar 文件,允許為大規(guī)模深度學(xué)習(xí)編寫純順序 I/O 管道,以便從本地存儲實(shí)現(xiàn)高 I/O 速率——與隨機(jī)訪問相比,大約快 3-10 倍。
用戶將修改 YAML 文件。這包括設(shè)置 WebDataset 分片的最大數(shù)量值、將神經(jīng)元輸出為感興趣的語言數(shù)量、要在整個(gè)數(shù)據(jù)集上訓(xùn)練的紀(jì)元數(shù)以及批大小。如果在運(yùn)行訓(xùn)練腳本時(shí) CPU 或 GPU 內(nèi)存不足,則應(yīng)減小批大小。
在此代碼示例中,將使用 CPU 執(zhí)行訓(xùn)練腳本。運(yùn)行腳本時(shí),“cpu”將作為輸入?yún)?shù)傳遞。中定義的配置也作為參數(shù)傳遞。train_ecapa.yaml
運(yùn)行腳本以訓(xùn)練模型的命令是:
python train.py train_ecapa.yaml --device "cpu"
將來,培訓(xùn)腳本 train.py 將設(shè)計(jì)為適用于英特爾? GPU,如英特爾?數(shù)據(jù)中心 GPU Flex 系列、英特爾數(shù)據(jù)中心 GPU Max 系列和英特爾 Arc? A 系列,并更新了英特爾??擴(kuò)展 PyTorch。
運(yùn)行訓(xùn)練腳本以了解如何訓(xùn)練模型和執(zhí)行訓(xùn)練腳本。建議將此遷移學(xué)習(xí)應(yīng)用使用第四代英特爾至強(qiáng)?可擴(kuò)展處理器,因?yàn)樗ㄟ^其英特爾高級矩陣擴(kuò)展(英特爾??? AMX)指令集提高了性能。
訓(xùn)練后,檢查點(diǎn)文件可用。這些文件用于加載模型以進(jìn)行推理。
推理

運(yùn)行推理之前的關(guān)鍵步驟是修補(bǔ) SpeechBrain 庫的預(yù)訓(xùn)練文件,以便可以運(yùn)行 PyTorch TorchScript* 以改善運(yùn)行時(shí)。TorchScript 要求模型的輸出只是張量。interfaces.py
用戶可以選擇使用 Common Voice 中的測試集或他們自己的 WAV 格式自定義數(shù)據(jù)運(yùn)行推理。以下是推理腳本 () 可用于運(yùn)行的選項(xiàng):inference_custom.py and inference_commonVoice.py
| 輸入選項(xiàng) | 描述 |
| -p | 指定數(shù)據(jù)路徑。 |
| -d | 指定波采樣的持續(xù)時(shí)間。默認(rèn)值為 3。 |
| -s | 指定采樣波的大小,默認(rèn)值為 100。 |
| --瓦德 | (僅限“inference_custom.py”)啟用 VAD 模型以檢測活動語音。VAD 選項(xiàng)將識別音頻文件中的語音片段,并構(gòu)造一個(gè)僅包含語音片段的新.wav文件。這提高了用作語言識別模型輸入的語音數(shù)據(jù)的質(zhì)量。 |
| --易派克 | 使用英特爾擴(kuò)展 PyTorch 優(yōu)化運(yùn)行推理。此選項(xiàng)會將優(yōu)化應(yīng)用于預(yù)訓(xùn)練模型。使用此選項(xiàng)應(yīng)可提高與延遲相關(guān)的性能。 |
| --ground_truth_compare | (僅限“inference_custom.py”)啟用預(yù)測標(biāo)簽與地面真實(shí)值的比較。 |
| --詳細(xì) | 打印其他調(diào)試信息,例如延遲。 |
必須指定數(shù)據(jù)的路徑。默認(rèn)情況下,將從原始音頻文件中隨機(jī)選擇 100 個(gè) 3 秒的音頻樣本,并用作語言識別模型的輸入。
在LibriParty數(shù)據(jù)集上預(yù)訓(xùn)練的小型卷積遞歸深度神經(jīng)網(wǎng)絡(luò)(CRDNN)用于處理音頻樣本并輸出檢測到語音活動的片段。這可以通過選項(xiàng)在推理中使用。--vad
如下圖所示,將檢測到語音的時(shí)間戳是從 CRDNN 模型傳送的,這些時(shí)間戳用于構(gòu)建僅包含語音的較短的新音頻文件。從這個(gè)新的音頻文件中采樣將更好地預(yù)測所說的主要語言。

自行運(yùn)行推理腳本。運(yùn)行推理的示例命令:
python inference_custom.py -p data_custom -d 3 -s 50 --vad
這將對您提供的位于data_custom文件夾中的數(shù)據(jù)運(yùn)行推理。此命令使用語音活動檢測對 50 個(gè)隨機(jī)選擇的 3 秒音頻樣本執(zhí)行推理。
如果要運(yùn)行其他語言的代碼示例,請下載其他語言的通用語音語料庫 11.0 數(shù)據(jù)集。
針對 PYTORCH 和英特爾神經(jīng)壓縮器的英特爾擴(kuò)展優(yōu)化
PyTorch
英特爾擴(kuò)展擴(kuò)展了 PyTorch 的最新功能和優(yōu)化,從而進(jìn)一步提升了英特爾硬件的性能。查看如何安裝 PyTorch 的英特爾擴(kuò)展。擴(kuò)展可以作為 Python 模塊加載,也可以作為C++庫鏈接。Python 用戶可以通過導(dǎo)入 .intel_extension_for_pytorch
- CPU 教程提供了有關(guān)適用于英特爾 CPU 的 PyTorch 英特爾擴(kuò)展的詳細(xì)信息。源代碼可在主分支處獲得。
- GPU 教程提供了有關(guān)適用于英特爾 GPU 的 PyTorch 英特爾擴(kuò)展的詳細(xì)信息。源代碼可在 xpu-master 分支獲得。
要使用英特爾 PyTorch 擴(kuò)展優(yōu)化模型以進(jìn)行推理,可以傳入該選項(xiàng)。使用插件優(yōu)化模型。TorchScript 加快了推理速度,因?yàn)?PyTorch 以圖形模式運(yùn)行。使用此優(yōu)化運(yùn)行的命令是:--ipex
python inference_custom.py -p data_custom -d 3 -s 50 --vad --ipex --verbose
注意:需要該選項(xiàng)才能查看延遲測量值。--verbose
自動混合精度(如 bfloat16 (BF16) 支持)將在代碼示例的未來版本中添加。
英特爾神經(jīng)壓縮器
這是一個(gè)在 CPU 或 GPU 上運(yùn)行的開源 Python 庫,它:
- 執(zhí)行模型量化,以減小模型大小并提高深度學(xué)習(xí)推理的部署速度。
- 跨多個(gè)深度學(xué)習(xí)框架自動執(zhí)行常用方法,例如量化、壓縮、修剪和知識蒸餾。
- 是 AI 套件的一部分
通過在傳入模型和驗(yàn)證數(shù)據(jù)集的路徑的同時(shí)運(yùn)行腳本,可以將模型從 float32 (FP32) 精度量化為整數(shù) 8 (INT8)。以下代碼可用于加載此 INT8 模型以進(jìn)行推理:quantize_model.py
from neural_compressor.utils.pytorch import load
model_int8 = load("./lang_id_commonvoice_model_INT8", self.language_id)
signal = self.language_id.load_audio(data_path)
prediction = self.model_int8(signal)
請注意,加載量化模型時(shí)需要原始模型。使用 FP32 量化訓(xùn)練模型到 INT8 的命令是:quantize_model.py
python quantize_model.py -p ./lang_id_commonvoice_model -datapath $COMMON_VOICE_PATH/commonVoiceData/commonVoice/dev
以上是關(guān)于使用 PyTorch 構(gòu)建端到端 AI 解決方案的一些介紹。
- END -
我們有個(gè)AI研發(fā)云平臺
集成多種AI應(yīng)用,大量任務(wù)多節(jié)點(diǎn)并行
應(yīng)對短時(shí)間爆發(fā)性需求,連網(wǎng)即用
跑任務(wù)快,原來幾個(gè)月甚至幾年,現(xiàn)在只需幾小時(shí)
5分鐘快速上手,拖拉點(diǎn)選可視化界面,無需代碼
支持高級用戶直接在云端創(chuàng)建集群
掃碼免費(fèi)試用,送200元體驗(yàn)金,入股不虧~

更多電子書歡迎掃碼關(guān)注小F(ID:iamfastone)獲取

你也許想了解具體的落地場景:
王者帶飛LeDock!開箱即用&一鍵定位分子庫+全流程自動化,3.5小時(shí)完成20萬分子對接
這樣跑COMSOL,是不是就可以發(fā)Nature了
Auto-Scale這支仙女棒如何大幅提升Virtuoso仿真效率?
1分鐘告訴你用MOE模擬200000個(gè)分子要花多少錢
LS-DYNA求解效率深度測評 │ 六種規(guī)模,本地VS云端5種不同硬件配置
揭秘20000個(gè)VCS任務(wù)背后的“搬桌子”系列故事
155個(gè)GPU!多云場景下的Amber自由能計(jì)算
怎么把需要45天的突發(fā)性Fluent仿真計(jì)算縮短到4天之內(nèi)?
5000核大規(guī)模OPC上云,效率提升53倍
提速2920倍!用AutoDock Vina對接2800萬個(gè)分子
從4天到1.75小時(shí),如何讓Bladed仿真效率提升55倍?
從30天到17小時(shí),如何讓HSPICE仿真效率提升42倍?
關(guān)于為應(yīng)用定義的云平臺:
當(dāng)仿真外包成為過氣網(wǎng)紅后…
和28家業(yè)界大佬排排坐是一種怎樣的體驗(yàn)?
這一屆科研計(jì)算人趕DDL紅寶書:學(xué)生篇
楊洋組織的“太空營救”中, 那2小時(shí)到底發(fā)生了什么?
一次搞懂速石科技三大產(chǎn)品:FCC、FCC-E、FCP
Ansys最新CAE調(diào)研報(bào)告找到阻礙仿真效率提升的“元兇”
國內(nèi)超算發(fā)展近40年,終于遇到了一個(gè)像樣的對手
幫助CXO解惑上云成本的迷思,看這篇就夠了
花費(fèi)4小時(shí)5500美元,速石科技躋身全球超算TOP500

