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

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

自行運(yùn)行推理腳本。運(yùn)行推理的示例命令:
python inference_custom.py -p data_custom -d 3 -s 50 --vad
這將對(duì)您提供的位于data_custom文件夾中的數(shù)據(jù)運(yùn)行推理。此命令使用語(yǔ)音活動(dòng)檢測(cè)對(duì) 50 個(gè)隨機(jī)選擇的 3 秒音頻樣本執(zhí)行推理。
如果要運(yùn)行其他語(yǔ)言的代碼示例,請(qǐng)下載其他語(yǔ)言的通用語(yǔ)音語(yǔ)料庫(kù) 11.0 數(shù)據(jù)集。
針對(duì) PYTORCH 和英特爾神經(jīng)壓縮器的英特爾擴(kuò)展優(yōu)化
PyTorch
英特爾擴(kuò)展擴(kuò)展了 PyTorch 的最新功能和優(yōu)化,從而進(jìn)一步提升了英特爾硬件的性能。查看如何安裝 PyTorch 的英特爾擴(kuò)展。擴(kuò)展可以作為 Python 模塊加載,也可以作為C++庫(kù)鏈接。Python 用戶可以通過(guò)導(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)才能查看延遲測(cè)量值。--verbose
自動(dòng)混合精度(如 bfloat16 (BF16) 支持)將在代碼示例的未來(lái)版本中添加。
英特爾神經(jīng)壓縮器
這是一個(gè)在 CPU 或 GPU 上運(yùn)行的開(kāi)源 Python 庫(kù),它:
- 執(zhí)行模型量化,以減小模型大小并提高深度學(xué)習(xí)推理的部署速度。
- 跨多個(gè)深度學(xué)習(xí)框架自動(dòng)執(zhí)行常用方法,例如量化、壓縮、修剪和知識(shí)蒸餾。
- 是 AI 套件的一部分
通過(guò)在傳入模型和驗(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)
請(qǐng)注意,加載量化模型時(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ā)云平臺(tái)
集成多種AI應(yīng)用,大量任務(wù)多節(jié)點(diǎn)并行
應(yīng)對(duì)短時(shí)間爆發(fā)性需求,連網(wǎng)即用
跑任務(wù)快,原來(lái)幾個(gè)月甚至幾年,現(xiàn)在只需幾小時(shí)
5分鐘快速上手,拖拉點(diǎn)選可視化界面,無(wú)需代碼
支持高級(jí)用戶直接在云端創(chuàng)建集群
掃碼免費(fèi)試用,送200元體驗(yàn)金,入股不虧~

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

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