torchaudio.pipelines¶
torchaudio.pipelines 模組將預訓練模型與支援函式和元資料打包成針對特定任務量身定製的簡單 API。
在使用預訓練模型執行任務時,除了使用預訓練權重例項化模型外,客戶端程式碼還需要以與訓練期間相同的方式構建特徵提取和後處理的流水線。這需要保留訓練期間使用的資訊,例如變換的型別及其引數(例如,取樣率和 FFT bin 的數量)。
為了使這些資訊與預訓練模型相關聯並易於訪問,torchaudio.pipelines 模組使用了 Bundle 類的概念,該類定義了一組用於例項化流水線以及流水線介面的 API。
下圖對此進行了說明。
預訓練模型及其相關流水線表示為 Bundle 的一個例項。同一 Bundle 的不同例項共享介面,但它們的實現不限於同一種類型。例如,SourceSeparationBundle 定義了執行源分離的介面,但其例項 CONVTASNET_BASE_LIBRI2MIX 例項化了一個 ConvTasNet 模型,而 HDEMUCS_HIGH_MUSDB 例項化了一個 HDemucs 模型。儘管如此,由於它們共享相同的介面,用法是相同的。
注意
在內部,Bundle 的實現使用了來自其他 torchaudio 模組的元件,例如 torchaudio.models 和 torchaudio.transforms,甚至包括第三方庫,例如 SentencPiece 和 DeepPhonemizer。但這種實現細節已從庫使用者中抽象出來。
RNN-T 流式/非流式 ASR¶
介面¶
RNNTBundle 定義了 ASR 流水線,包括三個步驟:特徵提取、推理和去標記化。
用於捆綁執行基於 RNN-T 模型的自動語音識別 (ASR, speech-to-text) 推理所需元件的資料類。 |
|
RNN-T 流水線特徵提取部分的介面 |
|
RNN-T 流水線標記處理器部分的介面 |
使用 RNNTBundle 的教程
預訓練模型¶
基於 Emformer-RNNT 的 ASR 流水線,在 LibriSpeech 資料集上預訓練 [Panayotov et al., 2015],能夠執行流式和非流式推理。 |
wav2vec 2.0 / HuBERT / WavLM - SSL¶
介面¶
Wav2Vec2Bundle 例項化能夠生成聲學特徵的模型,這些特徵可用於下游推理和微調。
資料類,捆綁了使用預訓練 |
預訓練模型¶
Wav2vec 2.0 模型(“base”架構),在 LibriSpeech 資料集 [Panayotov et al., 2015] 的 960 小時無標籤音訊(“train-clean-100”、“train-clean-360”和“train-other-500”的組合)上預訓練,未微調。 |
|
Wav2vec 2.0 模型(“large”架構),在 LibriSpeech 資料集 [Panayotov et al., 2015] 的 960 小時無標籤音訊(“train-clean-100”、“train-clean-360”和“train-other-500”的組合)上預訓練,未微調。 |
|
Wav2vec 2.0 模型(“large-lv60k”架構),在 Libri-Light 資料集 [Kahn et al., 2020] 的 60,000 小時無標籤音訊上預訓練,未微調。 |
|
Wav2vec 2.0 模型(“base”架構),在多個數據集( Multilingual LibriSpeech [Pratap et al., 2020]、 CommonVoice [Ardila et al., 2020] 和 BABEL [Gales et al., 2014])的 56,000 小時無標籤音訊上預訓練,未微調。 |
|
引數量為 3 億的 XLS-R 模型,在來自多個數據集( Multilingual LibriSpeech [Pratap et al., 2020]、 CommonVoice [Ardila et al., 2020]、 VoxLingua107 [Valk and Alumäe, 2021]、 BABEL [Gales et al., 2014] 和 VoxPopuli [Wang et al., 2021])的 436,000 小時無標籤音訊上預訓練(涵蓋 128 種語言),未微調。 |
|
引數量為 10 億的 XLS-R 模型,在來自多個數據集( Multilingual LibriSpeech [Pratap et al., 2020]、 CommonVoice [Ardila et al., 2020]、 VoxLingua107 [Valk and Alumäe, 2021]、 BABEL [Gales et al., 2014] 和 VoxPopuli [Wang et al., 2021])的 436,000 小時無標籤音訊上預訓練(涵蓋 128 種語言),未微調。 |
|
引數量為 20 億的 XLS-R 模型,在來自多個數據集( Multilingual LibriSpeech [Pratap et al., 2020]、 CommonVoice [Ardila et al., 2020]、 VoxLingua107 [Valk and Alumäe, 2021]、 BABEL [Gales et al., 2014] 和 VoxPopuli [Wang et al., 2021])的 436,000 小時無標籤音訊上預訓練(涵蓋 128 種語言),未微調。 |
|
HuBERT 模型(“base”架構),在 LibriSpeech 資料集 [Panayotov et al., 2015] 的 960 小時無標籤音訊(“train-clean-100”、“train-clean-360”和“train-other-500”的組合)上預訓練,未微調。 |
|
HuBERT 模型(“large”架構),在 Libri-Light 資料集 [Kahn et al., 2020] 的 60,000 小時無標籤音訊上預訓練,未微調。 |
|
HuBERT 模型(“extra large”架構),在 Libri-Light 資料集 [Kahn et al., 2020] 的 60,000 小時無標籤音訊上預訓練,未微調。 |
|
WavLM Base 模型(“base”架構),在 LibriSpeech 資料集 [Panayotov et al., 2015] 的 960 小時無標籤音訊上預訓練,未微調。 |
|
WavLM Base+ 模型(“base”架構),在 60,000 小時 Libri-Light 資料集 [Kahn et al., 2020]、10,000 小時 GigaSpeech [Chen et al., 2021] 和 24,000 小時 VoxPopuli [Wang et al., 2021] 上預訓練,未微調。 |
|
WavLM Large 模型(“large”架構),在 60,000 小時 Libri-Light 資料集 [Kahn et al., 2020]、10,000 小時 GigaSpeech [Chen et al., 2021] 和 24,000 小時 VoxPopuli [Wang et al., 2021] 上預訓練,未微調。 |
wav2vec 2.0 / HuBERT - 微調 ASR¶
介面¶
Wav2Vec2ASRBundle 例項化能夠生成預定義標籤機率分佈的模型,這些模型可用於 ASR。
資料類,捆綁了使用預訓練 |
使用 Wav2Vec2ASRBundle 的教程
預訓練模型¶
Wav2vec 2.0 模型(“base”架構,包含額外的線性模組),在 LibriSpeech 資料集 [Panayotov et al., 2015] 的 960 小時無標籤音訊(“train-clean-100”、“train-clean-360”和“train-other-500”的組合)上預訓練,並在 Libri-Light 資料集 [Kahn et al., 2020] 的 10 分鐘轉錄音訊(“train-10min”子集)上為 ASR 任務進行了微調。 |
|
Wav2vec 2.0 模型(“base”架構,包含額外的線性模組),在 LibriSpeech 資料集 [Panayotov et al., 2015] 的 960 小時無標籤音訊(“train-clean-100”、“train-clean-360”和“train-other-500”的組合)上預訓練,並在“train-clean-100”子集的 100 小時轉錄音訊上為 ASR 任務進行了微調。 |
|
Wav2vec 2.0 模型(“base”架構,包含額外的線性模組),在 LibriSpeech 資料集 [Panayotov et al., 2015] 的 960 小時無標籤音訊(“train-clean-100”、“train-clean-360”和“train-other-500”的組合)上預訓練,並使用相應的轉錄文字對相同的音訊為 ASR 任務進行了微調。 |
|
Wav2vec 2.0 模型(“large”架構,包含額外的線性模組),在 LibriSpeech 資料集 [Panayotov et al., 2015] 的 960 小時無標籤音訊(“train-clean-100”、“train-clean-360”和“train-other-500”的組合)上預訓練,並在 Libri-Light 資料集 [Kahn et al., 2020] 的 10 分鐘轉錄音訊(“train-10min”子集)上為 ASR 任務進行了微調。 |
|
Wav2vec 2.0 模型(“large”架構,包含額外的線性模組),在 LibriSpeech 資料集 [Panayotov et al., 2015] 的 960 小時無標籤音訊(“train-clean-100”、“train-clean-360”和“train-other-500”的組合)上預訓練,並在相同資料集的 100 小時轉錄音訊(“train-clean-100”子集)上為 ASR 任務進行了微調。 |
|
Wav2vec 2.0 模型(“large”架構,包含額外的線性模組),在 LibriSpeech 資料集 [Panayotov et al., 2015] 的 960 小時無標籤音訊(“train-clean-100”、“train-clean-360”和“train-other-500”的組合)上預訓練,並使用相應的轉錄文字對相同的音訊為 ASR 任務進行了微調。 |
|
Wav2vec 2.0 模型(“large-lv60k”架構,包含額外的線性模組),在 Libri-Light 資料集 [Kahn et al., 2020] 的 60,000 小時無標籤音訊上預訓練,並在相同資料集的 10 分鐘轉錄音訊(“train-10min”子集)上為 ASR 任務進行了微調。 |
|
Wav2vec 2.0 模型(“large-lv60k”架構,包含額外的線性模組),在 Libri-Light 資料集 [Kahn et al., 2020] 的 60,000 小時無標籤音訊上預訓練,並在 LibriSpeech 資料集 [Panayotov et al., 2015] 的 100 小時轉錄音訊(“train-clean-100”子集)上為 ASR 任務進行了微調。 |
|
Wav2vec 2.0 模型(“large-lv60k”架構,包含額外的線性模組),在 Libri-Light 資料集 [Kahn et al., 2020] 的 60,000 小時無標籤音訊上預訓練,並在 LibriSpeech 資料集 [Panayotov et al., 2015] 的 960 小時轉錄音訊(“train-clean-100”、“train-clean-360”和“train-other-500”的組合)上為 ASR 任務進行了微調。 |
|
wav2vec 2.0 模型("base" 架構),在來自 VoxPopuli 資料集的 1 萬小時無標註音訊上進行預訓練 [Wang et al., 2021] ("10k" 子集,包含 23 種語言),並在 "de" 子集的 282 小時轉錄音訊上針對 ASR 進行微調。 |
|
wav2vec 2.0 模型("base" 架構),在來自 VoxPopuli 資料集的 1 萬小時無標註音訊上進行預訓練 [Wang et al., 2021] ("10k" 子集,包含 23 種語言),並在 "en" 子集的 543 小時轉錄音訊上針對 ASR 進行微調。 |
|
wav2vec 2.0 模型("base" 架構),在來自 VoxPopuli 資料集的 1 萬小時無標註音訊上進行預訓練 [Wang et al., 2021] ("10k" 子集,包含 23 種語言),並在 "es" 子集的 166 小時轉錄音訊上針對 ASR 進行微調。 |
|
wav2vec 2.0 模型("base" 架構),在來自 VoxPopuli 資料集的 1 萬小時無標註音訊上進行預訓練 [Wang et al., 2021] ("10k" 子集,包含 23 種語言),並在 "fr" 子集的 211 小時轉錄音訊上針對 ASR 進行微調。 |
|
wav2vec 2.0 模型("base" 架構),在來自 VoxPopuli 資料集的 1 萬小時無標註音訊上進行預訓練 [Wang et al., 2021] ("10k" 子集,包含 23 種語言),並在 "it" 子集的 91 小時轉錄音訊上針對 ASR 進行微調。 |
|
HuBERT 模型("large" 架構),在來自 Libri-Light 資料集的 6 萬小時無標註音訊上進行預訓練 [Kahn et al., 2020] ,並在來自 LibriSpeech 資料集的 960 小時轉錄音訊上針對 ASR 進行微調 [Panayotov et al., 2015] (結合了 "train-clean-100"、"train-clean-360" 和 "train-other-500" 子集)。 |
|
HuBERT 模型("extra large" 架構),在來自 Libri-Light 資料集的 6 萬小時無標註音訊上進行預訓練 [Kahn et al., 2020] ,並在來自 LibriSpeech 資料集的 960 小時轉錄音訊上針對 ASR 進行微調 [Panayotov et al., 2015] (結合了 "train-clean-100"、"train-clean-360" 和 "train-other-500" 子集)。 |
wav2vec 2.0 / HuBERT - 強制對齊¶
介面¶
Wav2Vec2FABundle 打包了預訓練模型及其關聯的字典。此外,它支援追加 star token 維度。
用於打包關聯資訊的資料類,以便使用預訓練的 |
|
分詞器的介面 |
|
對齊器的介面 |
使用 Wav2Vec2FABundle 的教程
預訓練模型¶
在來自 Scaling Speech Technology to 1,000+ Languages 的 3.1 萬小時(1130 種語言)資料上進行訓練 [Pratap et al., 2023]。 |
Tacotron2 文字到語音¶
Tacotron2TTSBundle 定義了文字到語音的管道,包含三個步驟:分詞、聲譜圖生成和聲碼器。聲譜圖生成基於 Tacotron2 模型。
TextProcessor 可以是基於規則的字元分詞,也可以是基於神經網路的 G2P 模型,用於從輸入文字生成音素序列。
類似地,Vocoder 可以是一個不含學習引數的演算法,如 Griffin-Lim,也可以是基於神經網路的模型,如 Waveglow。
介面¶
用於打包關聯資訊的資料類,以便使用預訓練的 Tacotron2 和聲碼器。 |
|
Tacotron2TTS 管道中文字處理部分的介面 |
|
Tacotron2TTS 管道中聲碼器部分的介面 |
使用 Tacotron2TTSBundle 的教程
預訓練模型¶
基於音素的 TTS 管道,使用在 LJSpeech [Ito and Johnson, 2017] 上訓練了 1,500 輪的 |
|
基於字元的 TTS 管道,使用在 LJSpeech [Ito and Johnson, 2017] 上訓練了 1,500 輪的 |
|
基於音素的 TTS 管道,使用在 LJSpeech [Ito and Johnson, 2017] 上訓練了 1,500 輪的 |
|
基於字元的 TTS 管道,使用在 LJSpeech [Ito and Johnson, 2017] 上訓練了 1,500 輪的 |
音源分離¶
介面¶
SourceSeparationBundle 例項化音源分離模型,該模型接收單通道音訊並生成多通道音訊。
用於打包執行音源分離所需元件的資料類。 |
使用 SourceSeparationBundle 的教程
預訓練模型¶
預訓練的音源分離管道,使用在 Libri2Mix dataset [Cosentino et al., 2020] 上訓練的 ConvTasNet [Luo and Mesgarani, 2019] 模型。 |
|
預訓練的音樂音源分離管道,使用在 MUSDB-HQ [Rafii et al., 2019] 的訓練集和測試集以及專為 Meta 製作的內部資料庫中的額外 150 首歌曲上訓練的 Hybrid Demucs [Défossez, 2021] 模型。 |
|
預訓練的音樂音源分離管道,使用在 MUSDB-HQ [Rafii et al., 2019] 的訓練集上訓練的 Hybrid Demucs [Défossez, 2021] 模型。 |
Squim 客觀指標¶
介面¶
SquimObjectiveBundle 定義了語音質量和可懂度測量 (SQUIM) 管道,可以根據輸入波形預測**客觀**度量分數。
用於打包關聯資訊的資料類,以便使用預訓練的 |
預訓練模型¶
SquimObjective 管道,使用 [Kumar et al., 2023] 中描述的方法在 DNS 2020 Dataset [Reddy et al., 2020] 上進行訓練。 |
Squim 主觀指標¶
介面¶
SquimSubjectiveBundle 定義了語音質量和可懂度測量 (SQUIM) 管道,可以根據輸入波形預測**主觀**度量分數。
用於打包關聯資訊的資料類,以便使用預訓練的 |
預訓練模型¶
SquimSubjective 管道,按照 [Manocha and Kumar, 2022] 和 [Kumar et al., 2023] 中描述的方法在 BVCC [Cooper and Yamagishi, 2021] 和 DAPS [Mysore, 2014] 資料集上進行訓練。 |