目錄
模型介绍
Wav2vec 2.0 模型
HuBERT 模型
中文預訓練模型
首頁 科技週邊 人工智慧 找不到中文語音預訓練模型?中文版 Wav2vec 2.0和HuBERT來了

找不到中文語音預訓練模型?中文版 Wav2vec 2.0和HuBERT來了

Apr 08, 2023 pm 06:21 PM
ai 數據 模型

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 模型

找不到中文語音預訓練模型?中文版 Wav2vec 2.0和HuBERT來了

图 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 模型

找不到中文語音預訓練模型?中文版 Wav2vec 2.0和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。

找不到中文語音預訓練模型?中文版 Wav2vec 2.0和HuBERT來了

表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。

找不到中文語音預訓練模型?中文版 Wav2vec 2.0和HuBERT來了

表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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1250
24
C  中的chrono庫如何使用? C 中的chrono庫如何使用? Apr 28, 2025 pm 10:18 PM

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

如何理解C  中的DMA操作? 如何理解C 中的DMA操作? Apr 28, 2025 pm 10:09 PM

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

怎樣在C  中處理高DPI顯示? 怎樣在C 中處理高DPI顯示? Apr 28, 2025 pm 09:57 PM

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

C  中的實時操作系統編程是什麼? C 中的實時操作系統編程是什麼? Apr 28, 2025 pm 10:15 PM

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

怎樣在C  中測量線程性能? 怎樣在C 中測量線程性能? Apr 28, 2025 pm 10:21 PM

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

量化交易所排行榜2025 數字貨幣量化交易APP前十名推薦 量化交易所排行榜2025 數字貨幣量化交易APP前十名推薦 Apr 30, 2025 pm 07:24 PM

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

給MySQL表添加和刪除字段的操作步驟 給MySQL表添加和刪除字段的操作步驟 Apr 29, 2025 pm 04:15 PM

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

C  中的字符串流如何使用? C 中的字符串流如何使用? Apr 28, 2025 pm 09:12 PM

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

See all articles