speechbrain.inference.classifiers 模块

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

Authors:
  • 阿库·罗赫 2021

  • 彼得·普兰廷加 2021

  • 洛伦·卢戈斯奇 2020

  • Mirco Ravanelli 2020

  • Titouan Parcollet 2021

  • 阿卜杜勒·赫巴 2021

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

  • Pooneh Mousavi 2023

  • Sylvain de Langen 2023

  • 阿德尔·穆门 2023

  • 普拉迪亚·坎达尔卡 2023

摘要

类:

AudioClassifier

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

EncoderClassifier

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

参考

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

基础类:Pretrained

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

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

该类可以用于仅运行编码器(encode_batch())以提取嵌入,或者运行分类步骤(classify_batch())。

Parameters:

预训练 (参见)

Example

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

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

波形应该已经是模型所需的格式。 你可以调用: normalized = .normalizer(signal, sample_rate) 在大多数情况下获取正确转换的信号。

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

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

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

Returns:

编码的批次

Return type:

torch.Tensor

classify_batch(wavs, wav_lens=None)[source]

在编码特征的顶部执行分类。

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

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

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

Returns:

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

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

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

  • text_lab – 与索引对应的文本标签列表。 (应提供标签编码器)。

classify_file(path, **kwargs)[source]

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

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

  • **kwargs (dict) – 传递给 load_audio 的参数。

Returns:

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

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

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

  • text_lab (list of str) – 与索引对应的文本标签列表。 (应提供标签编码器)。

forward(wavs, wav_lens=None)[source]

运行分类

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

基础类:Pretrained

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

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

该类可以用于仅运行编码器(encode_batch())以提取嵌入,或者运行分类步骤(classify_batch())。

Parameters:

预训练。 (参见)

Example

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

在编码特征的顶部执行分类。

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

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

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

Returns:

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

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

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

  • text_lab (list of str) – 与索引对应的文本标签列表。 (应提供标签编码器)。

classify_file(path, savedir=None)[source]

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

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

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

Returns:

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

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

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

  • text_lab – 与索引对应的文本标签列表。 (应提供标签编码器)。

forward(wavs, wav_lens=None)[source]

运行分类