speechbrain.inference.classifiers 模块

指定音频分类模块的推理接口。

作者
  • 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

摘要

AudioClassifier

一个用于话语级别分类(例如,说话人 ID、语言 ID、情感识别、关键词检测等)的即用型类。

EncoderClassifier

一个用于话语级别分类(例如,说话人 ID、语言 ID、情感识别、关键词检测等)的即用型类。

参考

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

Bases: Pretrained

一个用于话语级别分类(例如,说话人 ID、语言 ID、情感识别、关键词检测等)的即用型类。

该类假设在 yaml 文件中定义了一个名为“embedding_model”的编码器和一个名为“classifier”的模型。如果您想将预测的索引转换为相应的文本标签,请在 yaml 文件中提供一个名为“lab_encoder_file”的变量,其中包含 label_encoder 的路径。

该类可以用于仅运行编码器 (encode_batch()) 来提取 embeddings,也可以用于运行分类步骤 (classify_batch())。

参数:

Pretrained (参见)

示例

>>> import torchaudio
>>> from speechbrain.inference.classifiers import EncoderClassifier
>>> # Model is downloaded from the speechbrain HuggingFace repo
>>> tmpdir = getfixture("tmpdir")
>>> classifier = EncoderClassifier.from_hparams(
...     source="speechbrain/spkrec-ecapa-voxceleb",
...     savedir=tmpdir,
... )
>>> classifier.hparams.label_encoder.ignore_len()
>>> # Compute embeddings
>>> signal, fs = torchaudio.load("tests/samples/single-mic/example1.wav")
>>> embeddings = classifier.encode_batch(signal)
>>> # Classification
>>> prediction = classifier.classify_batch(signal)
MODULES_NEEDED = ['compute_features', 'mean_var_norm', 'embedding_model', 'classifier']
encode_batch(wavs, wav_lens=None, normalize=False)[source]

将输入音频编码为单个向量 embedding。

波形应已处于模型的所需格式。您可以调用:normalized = <this>.normalizer(signal, sample_rate) 以在大多数情况下获得正确转换的信号。

参数:
  • wavs (torch.Tensor) – 波形批次 [batch, time, channels] 或 [batch, time],具体取决于模型。请确保采样率是 fs=16000 Hz。

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

  • normalize (bool) – 如果为 True,则使用 mean_var_norm_emb 中包含的统计信息对 embeddings 进行归一化。

返回:

编码后的批次

返回类型:

torch.Tensor

classify_batch(wavs, wav_lens=None)[source]

在编码特征之上执行分类。

它返回后验概率、索引,如果指定了 label encoder,它还会返回文本标签。

参数:
  • wavs (torch.Tensor) – 波形批次 [batch, time, channels] 或 [batch, time],具体取决于模型。请确保采样率是 fs=16000 Hz。

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

返回:

  • out_prob – 每个类别的对数后验概率 ([batch, N_class])

  • score – 最佳类别的对数后验概率值 ([batch,])

  • index – 最佳类别的索引 ([batch,])

  • text_lab – 包含与索引对应的文本标签的列表。(应提供 label encoder)。

classify_file(path, **kwargs)[source]

将给定的音频文件分类到给定的标签集。

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

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

返回:

  • out_prob (torch.Tensor) – 每个类别的对数后验概率 ([batch, N_class])

  • score (torch.Tensor) – 最佳类别的对数后验概率值 ([batch,])

  • index (torch.Tensor) – 最佳类别的索引 ([batch,])

  • text_lab (list of str) – 包含与索引对应的文本标签的列表。(应提供 label encoder)。

forward(wavs, wav_lens=None)[source]

运行分类

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

Bases: Pretrained

一个用于话语级别分类(例如,说话人 ID、语言 ID、情感识别、关键词检测等)的即用型类。

该类假设在 yaml 文件中定义了一个名为“embedding_model”的编码器和一个名为“classifier”的模型。如果您想将预测的索引转换为相应的文本标签,请在 yaml 文件中提供一个名为“lab_encoder_file”的变量,其中包含 label_encoder 的路径。

该类可以用于仅运行编码器 (encode_batch()) 来提取 embeddings,也可以用于运行分类步骤 (classify_batch())。

参数:

Pretrained。(参见)

示例

>>> import torchaudio
>>> from speechbrain.inference.classifiers import AudioClassifier
>>> tmpdir = getfixture("tmpdir")
>>> classifier = AudioClassifier.from_hparams(
...     source="speechbrain/cnn14-esc50",
...     savedir=tmpdir,
... )
>>> signal = torch.randn(1, 16000)
>>> prediction, _, _, text_lab = classifier.classify_batch(signal)
>>> print(prediction.shape)
torch.Size([1, 1, 50])
classify_batch(wavs, wav_lens=None)[source]

在编码特征之上执行分类。

它返回后验概率、索引,如果指定了 label encoder,它还会返回文本标签。

参数:
  • wavs (torch.Tensor) – 波形批次 [batch, time, channels] 或 [batch, time],具体取决于模型。请确保采样率是 fs=16000 Hz。

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

返回:

  • out_prob (torch.Tensor) – 每个类别的对数后验概率 ([batch, N_class])

  • score (torch.Tensor) – 最佳类别的对数后验概率值 ([batch,])

  • index (torch.Tensor) – 最佳类别的索引 ([batch,])

  • text_lab (list of str) – 包含与索引对应的文本标签的列表。(应提供 label encoder)。

classify_file(path, savedir=None)[source]

将给定的音频文件分类到给定的标签集。

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

  • savedir (str) – 用于缓存下载文件的文件夹路径。

返回:

  • out_prob – 每个类别的对数后验概率 ([batch, N_class])

  • score – 最佳类别的对数后验概率值 ([batch,])

  • index – 最佳类别的索引 ([batch,])

  • text_lab – 包含与索引对应的文本标签的列表。(应提供 label encoder)。

forward(wavs, wav_lens=None)[source]

运行分类