speechbrain.inference.encoders 模块

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

Authors:
  • 阿库·罗赫 2021

  • 彼得·普兰廷加 2021

  • 洛伦·卢戈斯奇 2020

  • Mirco Ravanelli 2020

  • Titouan Parcollet 2021

  • 阿卜杜勒·赫巴 2021

  • 安德烈亚斯·诺茨 2022, 2023

  • Pooneh Mousavi 2023

  • Sylvain de Langen 2023

  • 阿德尔·穆门 2023

  • 普拉迪亚·坎达尔卡 2023

摘要

类:

MelSpectrogramEncoder

为Zero-Shot Multi-Speaker TTS模型创建的MelSpectrogramEncoder类。

WaveformEncoder

一个现成的波形编码器模型

参考

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

基础类:Pretrained

一个即用型波形编码器模型

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

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

Parameters:

预训练 (参见)

Example

>>> 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]

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

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

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

Returns:

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

Return type:

torch.Tensor

encode_batch(wavs, wav_lens)[source]

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

波形应该已经是模型所需的格式。

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

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

Returns:

编码的批次

Return type:

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 Multi-Speaker TTS模型创建的MelSpectrogramEncoder类。

这是为了使用PyTorch MelSpectrogram变换的说话人编码器模型,以与当前的TTS管道兼容。

该类可用于编码单个波形、单个梅尔频谱图或一批梅尔频谱图。

Parameters:

预训练 (参见)

Example

>>> 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]

计算原始音频信号的梅尔频谱图

Parameters:

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

Returns:

mel – 梅尔频谱图

Return type:

torch.Tensor

encode_waveform(wav)[source]

编码单个波形

Parameters:

wav (torch.Tensor) – 波形

Returns:

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

Return type:

torch.Tensor

encode_mel_spectrogram(mel_spec)[source]

编码单个梅尔频谱图

Parameters:

mel_spec (torch.Tensor) – 梅尔频谱图

Returns:

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

Return type:

torch.Tensor

encode_mel_spectrogram_batch(mel_specs, lens=None)[source]

编码一批梅尔频谱图

Parameters:
  • mel_specs (torch.Tensor) – 梅尔频谱图

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

Returns:

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

Return type:

torch.Tensor