找不到中文語音預訓練模型?中文版 Wav2vec 2.0和HuBERT來了
Wav2vec 2.0 [1],HuBERT [2] 和 WavLM [3] 等语音预训练模型,通过在多达上万小时的无标注语音数据(如 Libri-light )上的自监督学习,显著提升了自动语音识别(Automatic Speech Recognition, ASR),语音合成(Text-to-speech, TTS)和语音转换(Voice Conversation,VC)等语音下游任务的性能。然而这些模型都没有公开的中文版本,不便于应用在中文语音研究场景。
WenetSpeech [4] 是由西工大音频、语音和语言处理研究组 (ASLP@NPU)、出门问问、希尔贝壳联合发布的 1 万多小时多领域语音数据集。为了弥补中文语音预训练模型的空缺,我们开源了基于 WenetSpeech 1 万小时数据训练的中文版 Wav2vec 2.0 和 HuBERT 模型。
为了验证预训练模型的性能,我们在 ASR 任务进行了验证。实验结果表明,在 100 小时有监督数据 ASR 任务上,预训练模型学到的语音表征相对于传统声学 FBank 特征有显著的性能提升,甚至仅用 100 小时有监督数据能够得到和 1000 小时有监督数据可比的结果。
模型链接:https://github.com/TencentGameMate/chinese_speech_pretrain
模型介绍
Wav2vec 2.0 模型
图 1: Wav2vec 2.0 模型结构 (Baevski et al., 2020)
Wav2vec 2.0 [1] 是 Meta 在 2020 年发表的无监督语音预训练模型。它的核心思想是通过向量量化(Vector Quantization,VQ)构造自建监督训练目标,对输入做大量掩码后利用对比学习损失函数进行训练。模型结构如上图 1,基于卷积网络(Convoluational Neural Network,CNN)的特征提取器将原始音频编码为帧特征序列,通过 VQ 模块把每帧特征转变为离散特征 Q,并作为自监督目标。同时,帧特征序列做掩码操作后进入 Transformer [5] 模型得到上下文表示 C。最后通过对比学习损失函数,拉近掩码位置的上下文表示与对应的离散特征 q 的距离,即正样本对。原论文中,Wav2vec 2.0 BASE 模型采用 12 层的 Transformer 结构,用 1000 小时的 LibriSpeech 数据进行训练,LARGE 模型则采用 24 层 Transformer 结构,用 6 万小时的 Libri-light 数据训练。训练时间方面,BASE 模型使用 64 块 V100 显卡训练 1.6 天,LARGE 使用 128 块 V100 显卡训练 5 天。在下游 ASR 评测中,即使只用 10 分钟的有监督数据,系统仍可得到 4.8 的词错误率(Word Error Rate, WER)结果。
HuBERT 模型
图 2: HuBERT 模型结构 (Hsu et al., 2021)
HuBERT [2] 是 Meta 在 2021 年发表的模型,模型结构类似 Wav2vec 2.0,不同的是训练方法。Wav2vec 2.0 是在训练时将语音特征离散化作为自监督目标,而 HuBERT 则通过在 MFCC 特征或 HuBERT 特征上做 K-means 聚类,得到训练目标。HuBERT 模型采用迭代训练的方式,BASE 模型第一次迭代在 MFCC 特征上做聚类,第二次迭代在第一次迭代得到的 HuBERT 模型的中间层特征上做聚类,LARGE 和 XLARGE 模型则用 BASE 模型的第二次迭代模型提取特征做聚类。从原始论文实验结果来看,HuBERT 模型效果要优于 Wav2vec 2.0,特别是下游任务有监督训练数据极少的情况,如 1 小时、10 分钟。
中文預訓練模型
實驗配置我們使用 WenetSpeech [4] train_l 集的 1 萬小時中文資料作為無監督預訓練資料。資料主要來自YouTube 和Podcast,涵蓋了各種類型錄製場景、背景噪音、說話方式等,其領域主要包括有聲書、解釋、紀錄片、電視劇、訪談、新聞、朗讀、演講、綜藝和其他10 大場景。我們基於 Fairseq 工具包 [6] 分別訓練了 Wav2vec 2.0 和 HuBERT 模型,遵循 [1,2] 的模型配置,每個預訓練模型模型包括 BASE 和 LARGE 兩種大小。對於 BASE 模型,我們使用 8 張 A100 顯示卡,梯度累積為 8,模擬 64 張顯示卡進行訓練。對於 LARGE 模型,我們使用 16 張 A100 顯示卡,梯度累積為 8,模擬 128 張顯示卡進行訓練。
下游語音辨識任務驗證為了驗證預訓練模型在下游ASR 任務的效果,我們遵循ESPnet [7,8,9] 工具包中的Conformer [10] 模型實驗配置,即將預訓練模型作為特徵提取器,對於輸入語音提取預訓練模型各隱層表徵進行加權求和,得到的語音表徵將替換傳統FBank 特徵作為Conformer ASR 模型的輸入。
- Aishell 資料集
#我們使用Aishell 178 小時訓練集作為有監督資料進行訓練,分別對比了使用FBank 特徵、Wav2vec 2.0 BASE/LARGE 模型特徵和HuBERT BASE/LARGE 模型特徵的字錯誤率(Character Error Rate, CER) 結果。同時,我們額外對比了使用 WenetSpeech train_l 集 1 萬小時中文資料進行訓練時,其在 Aishell 測試集上的效果。訓練資料使用了變速(0.9、1.0、1.1 倍)和 SpecAugment 資料增廣技術,解碼方式為 beam search,使用了基於 Transformer 的語言模型進行 rescoring。
表1:不同模型在Aishell 測試集上的字錯誤率(CER%)結果
根據表1 結果可以看到,透過結合萬小時無監督資料訓練的預訓練模型,下游ASR 任務效果均有顯著提升。尤其是使用 HuBERT LARGE 模型時,在 Test 集上得到約 30% 的 CER 相對提升,實現了目前在 178h 有監督訓練資料下業界最佳結果。
- WenetSpeech 資料集
我們使用WenetSpeech train_s 集100 小時中文資料作為有監督資料進行訓練,分別比較了使用FBank 特徵、Wav2vec 2.0 BASE/LARGE 模型特徵和HuBERT BASE/LARGE 模型特徵的字錯誤率(Character Error Rate, CER) 結果。同時,我們額外比較了使用 WenetSpeech train_m 集 1000 小時和 train_l 集 1 萬小時中文資料 FBank 特徵訓練的模型結果。訓練資料沒有使用變速或 SpecAugment 資料增廣技術,解碼方式為 beam search,沒有使用語言模型 rescoring。
表2:不同模型在WenetSpeech 測試集上的字錯誤率(CER%)結果
根據表2 結果可以看到,透過結合萬小時無監督資料訓練的預訓練模型,下游ASR 結果得到了巨大提升。尤其當使用 HuBERT LARGE 作為語音表徵提取器時,使用 100 小時有監督資料訓練的 ASR 模型要比 1000 小時基於 FBank 特徵訓練的模型效果要好,甚至接近 1 萬小時資料訓練的模型。
更多語音下游任務實驗結果請關注 GitHub 連結(https://github.com/TencentGameMate/chinese_speech_pretrain)。歡迎大家使用我們提供的中文語音預訓練模型進行研究工作,一起探索語音預訓練模型在中文和相關眾多場景下的應用。
以上是找不到中文語音預訓練模型?中文版 Wav2vec 2.0和HuBERT來了的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

使用C 中的chrono庫可以讓你更加精確地控制時間和時間間隔,讓我們來探討一下這個庫的魅力所在吧。 C 的chrono庫是標準庫的一部分,它提供了一種現代化的方式來處理時間和時間間隔。對於那些曾經飽受time.h和ctime折磨的程序員來說,chrono無疑是一個福音。它不僅提高了代碼的可讀性和可維護性,還提供了更高的精度和靈活性。讓我們從基礎開始,chrono庫主要包括以下幾個關鍵組件:std::chrono::system_clock:表示系統時鐘,用於獲取當前時間。 std::chron

DMA在C 中是指DirectMemoryAccess,直接內存訪問技術,允許硬件設備直接與內存進行數據傳輸,不需要CPU干預。 1)DMA操作高度依賴於硬件設備和驅動程序,實現方式因係統而異。 2)直接訪問內存可能帶來安全風險,需確保代碼的正確性和安全性。 3)DMA可提高性能,但使用不當可能導致系統性能下降。通過實踐和學習,可以掌握DMA的使用技巧,在高速數據傳輸和實時信號處理等場景中發揮其最大效能。

在C 中處理高DPI顯示可以通過以下步驟實現:1)理解DPI和縮放,使用操作系統API獲取DPI信息並調整圖形輸出;2)處理跨平台兼容性,使用如SDL或Qt的跨平台圖形庫;3)進行性能優化,通過緩存、硬件加速和動態調整細節級別來提升性能;4)解決常見問題,如模糊文本和界面元素過小,通過正確應用DPI縮放來解決。

C 在實時操作系統(RTOS)編程中表現出色,提供了高效的執行效率和精確的時間管理。 1)C 通過直接操作硬件資源和高效的內存管理滿足RTOS的需求。 2)利用面向對象特性,C 可以設計靈活的任務調度系統。 3)C 支持高效的中斷處理,但需避免動態內存分配和異常處理以保證實時性。 4)模板編程和內聯函數有助於性能優化。 5)實際應用中,C 可用於實現高效的日誌系統。

在C 中測量線程性能可以使用標準庫中的計時工具、性能分析工具和自定義計時器。 1.使用庫測量執行時間。 2.使用gprof進行性能分析,步驟包括編譯時添加-pg選項、運行程序生成gmon.out文件、生成性能報告。 3.使用Valgrind的Callgrind模塊進行更詳細的分析,步驟包括運行程序生成callgrind.out文件、使用kcachegrind查看結果。 4.自定義計時器可靈活測量特定代碼段的執行時間。這些方法幫助全面了解線程性能,並優化代碼。

交易所內置量化工具包括:1. Binance(幣安):提供Binance Futures量化模塊,低手續費,支持AI輔助交易。 2. OKX(歐易):支持多賬戶管理和智能訂單路由,提供機構級風控。獨立量化策略平台有:3. 3Commas:拖拽式策略生成器,適用於多平台對沖套利。 4. Quadency:專業級算法策略庫,支持自定義風險閾值。 5. Pionex:內置16 預設策略,低交易手續費。垂直領域工具包括:6. Cryptohopper:雲端量化平台,支持150 技術指標。 7. Bitsgap:

在MySQL中,添加字段使用ALTERTABLEtable_nameADDCOLUMNnew_columnVARCHAR(255)AFTERexisting_column,刪除字段使用ALTERTABLEtable_nameDROPCOLUMNcolumn_to_drop。添加字段時,需指定位置以優化查詢性能和數據結構;刪除字段前需確認操作不可逆;使用在線DDL、備份數據、測試環境和低負載時間段修改表結構是性能優化和最佳實踐。

C 中使用字符串流的主要步驟和注意事項如下:1.創建輸出字符串流並轉換數據,如將整數轉換為字符串。 2.應用於復雜數據結構的序列化,如將vector轉換為字符串。 3.注意性能問題,避免在處理大量數據時頻繁使用字符串流,可考慮使用std::string的append方法。 4.注意內存管理,避免頻繁創建和銷毀字符串流對象,可以重用或使用std::stringstream。
