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
摘要
类
一个用于话语级别分类(例如,说话人 ID、语言 ID、情感识别、关键词检测等)的即用型类。 |
|
一个用于话语级别分类(例如,说话人 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)。
- 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)。