speechbrain.inference.encoders 模块

指定语音和音频编码器的推理接口。

作者
  • Aku Rouhe 2021

  • Peter Plantinga 2021

  • Loren Lugosch 2020

  • Mirco Ravanelli 2020

  • Titouan Parcollet 2021

  • Abdel Heba 2021

  • Andreas Nautsch 2022, 2023

  • Pooneh Mousavi 2023

  • Sylvain de Langen 2023

  • Adel Moumen 2023

  • Pradnya Kandarkar 2023

摘要

MelSpectrogramEncoder

专为 Zero-Shot 多说话人 TTS 模型创建的 MelSpectrogramEncoder 类。

WaveformEncoder

一个即用型 waveformEncoder 模型

参考

class speechbrain.inference.encoders.WaveformEncoder(modules=None, hparams=None, run_opts=None, freeze_params=True)[source]

基类: Pretrained

一个即用型 waveformEncoder 模型

可用于封装不同的嵌入模型,例如 SSL 模型 (wav2vec2) 或说话人模型 (Xvector) 等。提供了两个函数:encode_batch 和 encode_file。它们分别用于直接从音频文件或音频张量批次中获取嵌入。

给定的 YAML 必须包含 *_NEEDED[] 列表中指定的字段。

参数:

Pretrained (参见)

示例

>>> from speechbrain.inference.encoders import WaveformEncoder
>>> tmpdir = getfixture("tmpdir")
>>> ssl_model = WaveformEncoder.from_hparams(
...     source="speechbrain/ssl-wav2vec2-base-libri",
...     savedir=tmpdir,
... )
>>> ssl_model.encode_file("samples/audio_samples/example_fr.wav")
MODULES_NEEDED = ['encoder']
encode_file(path, **kwargs)[source]

将给定的音频文件编码为嵌入序列。

参数:
  • path (str) – 要编码的音频文件路径。

  • **kwargs (dict) – 转发给 load_audio 的参数

返回:

此系统生成的音频文件嵌入。

返回类型:

torch.Tensor

encode_batch(wavs, wav_lens)[source]

将输入音频编码为隐藏状态序列

波形应已采用模型所需的格式。

参数:
  • wavs (torch.Tensor) – 波形批次 [batch, time, channels] 或 [batch, time],具体取决于模型。

  • wav_lens (torch.Tensor) – 相对于批次中最长波形的长度,形状为 [batch] 的张量。最长波形应具有相对长度 1.0,其他波形为 len(waveform) / max_length。用于忽略填充。

返回:

编码后的批次

返回类型:

torch.Tensor

forward(wavs, wav_lens)[source]

运行编码器

class speechbrain.inference.encoders.MelSpectrogramEncoder(modules=None, hparams=None, run_opts=None, freeze_params=True)[source]

基类: Pretrained

专为 Zero-Shot 多说话人 TTS 模型创建的 MelSpectrogramEncoder 类。

这是为使用 PyTorch MelSpectrogram 转换的说话人编码器模型而设计的,以与当前 TTS 流水线兼容。

此类可用于编码单个波形、单个 Mel 频谱图或 Mel 频谱图批次。

参数:

Pretrained (参见)

示例

>>> import torchaudio
>>> from speechbrain.inference.encoders import MelSpectrogramEncoder
>>> # Model is downloaded from the speechbrain HuggingFace repo
>>> tmpdir = getfixture("tmpdir")
>>> encoder = MelSpectrogramEncoder.from_hparams(
...     source="speechbrain/tts-ecapa-voxceleb",
...     savedir=tmpdir,
... )
>>> # Compute embedding from a waveform (sample_rate must match the sample rate of the encoder)
>>> signal, fs = torchaudio.load("tests/samples/single-mic/example1.wav")
>>> spk_emb = encoder.encode_waveform(signal)
>>> # Compute embedding from a mel-spectrogram (sample_rate must match the sample rate of the ecoder)
>>> mel_spec = encoder.mel_spectogram(audio=signal)
>>> spk_emb = encoder.encode_mel_spectrogram(mel_spec)
>>> # Compute embeddings for a batch of mel-spectrograms
>>> spk_embs = encoder.encode_mel_spectrogram_batch(mel_spec)
MODULES_NEEDED = ['normalizer', 'embedding_model']
dynamic_range_compression(x, C=1, clip_val=1e-05)[source]

音频信号的动态范围压缩

mel_spectogram(audio)[source]

计算原始音频信号的 Mel 频谱图

参数:

audio (torch.tensor) – 输入音频信号

返回:

mel – Mel 频谱图

返回类型:

torch.Tensor

encode_waveform(wav)[source]

编码单个波形

参数:

wav (torch.Tensor) – 波形

返回:

encoder_out – 输入波形的说话人嵌入

返回类型:

torch.Tensor

encode_mel_spectrogram(mel_spec)[source]

编码单个 Mel 频谱图

参数:

mel_spec (torch.Tensor) – Mel 频谱图

返回:

encoder_out – 输入 Mel 频谱图的说话人嵌入

返回类型:

torch.Tensor

encode_mel_spectrogram_batch(mel_specs, lens=None)[source]

编码 Mel 频谱图批次

参数:
  • mel_specs (torch.Tensor) – Mel 频谱图

  • lens (torch.Tensor) – Mel 频谱图的相对长度

返回:

encoder_out – 输入 Mel 频谱图批次的说话人嵌入

返回类型:

torch.Tensor