模型:

microsoft/speecht5_vc

英文

SpeechT5 (voice conversion task)

SpeechT5模型是在CMU ARCTIC上进行的语音转换(语音到语音)任务上进行微调的。

该模型在 SpeechT5: Unified-Modal Encoder-Decoder Pre-Training for Spoken Language Processing 中由Junyi Ao,Rui Wang,Long Zhou,Chengyi Wang,Shuo Ren,Yu Wu,Shujie Liu,Tom Ko,Qing Li,Yu Zhang,Zhihua Wei,Yao Qian,Jinyu Li,Furu Wei介绍。

SpeechT5首次发布于 this repository original weights 。所使用的许可证是 MIT

声明:SpeechT5发布团队并未为此模型编写模型卡片,因此这个模型卡片是由Hugging Face团队编写的。

模型描述

受到T5(文本到文本转换Transformer)在预训练自然语言处理模型中的成功启发,我们提出了一个统一模态SpeechT5框架,探索编码器-解码器的预训练方法进行自我监督的语音/文本表示学习。SpeechT5框架由共享的编码器-解码器网络和六个特定于模态的(语音/文本)预/后网络组成。通过预网络对输入语音/文本进行预处理后,共享的编码器-解码器网络对序列转换进行建模,然后后网络根据解码器的输出在语音/文本模态中生成输出。

通过利用大规模未标记的语音和文本数据,我们对SpeechT5进行预训练,学习一个统一模态的表示,希望提高对语音和文本的建模能力。为了将文本和语音信息对齐到这个统一的语义空间中,我们提出了一种交叉模态矢量量化方法,将语音/文本状态与潜在单位随机混合作为编码器和解码器之间的接口。

大量评估表明了所提出的SpeechT5框架在各种口语处理任务上的优越性,包括自动语音识别,语音合成,语音翻译,语音转换,语音增强和说话人识别。

预期用途和局限性

您可以使用该模型进行语音转换。查看 model hub 以寻找您感兴趣的任务上的微调版本。

目前,特征提取器和模型均支持PyTorch。

引用

BibTeX:

@inproceedings{ao-etal-2022-speecht5,
    title = {{S}peech{T}5: Unified-Modal Encoder-Decoder Pre-Training for Spoken Language Processing},
    author = {Ao, Junyi and Wang, Rui and Zhou, Long and Wang, Chengyi and Ren, Shuo and Wu, Yu and Liu, Shujie and Ko, Tom and Li, Qing and Zhang, Yu and Wei, Zhihua and Qian, Yao and Li, Jinyu and Wei, Furu},
    booktitle = {Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)},
    month = {May},
    year = {2022},
    pages={5723--5738},
}

如何开始使用该模型

使用以下代码将16 kHz单声道语音波形转换为另一个波形。

from transformers import SpeechT5Processor, SpeechT5ForSpeechToSpeech, SpeechT5HifiGan
from datasets import load_dataset

dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
dataset = dataset.sort("id")
sampling_rate = dataset.features["audio"].sampling_rate
example_speech = dataset[0]["audio"]["array"]

processor = SpeechT5Processor.from_pretrained("microsoft/speecht5_vc")
model = SpeechT5ForSpeechToSpeech.from_pretrained("microsoft/speecht5_vc")
vocoder = SpeechT5HifiGan.from_pretrained("microsoft/speecht5_hifigan")

inputs = processor(audio=example_speech, sampling_rate=sampling_rate, return_tensors="pt")

# load xvector containing speaker's voice characteristics from a file
import numpy as np
import torch
speaker_embeddings = np.load("xvector_speaker_embedding.npy")
speaker_embeddings = torch.tensor(speaker_embeddings).unsqueeze(0)

speech = model.generate_speech(inputs["input_values"], speaker_embeddings, vocoder=vocoder)

import soundfile as sf
sf.write("speech.wav", speech.numpy(), samplerate=16000)