speechbrain.inference.diarization 模块

指定 diarization 模块的推理接口。

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

总结

Speech_Emotion_Diarization

一个即用型 SED 接口(音频 -> 情绪及其持续时间)

参考

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

基类: Pretrained

一个即用型 SED 接口(音频 -> 情绪及其持续时间)

参数:

Pretrained ()

示例

>>> from speechbrain.inference.diarization import Speech_Emotion_Diarization
>>> tmpdir = getfixture("tmpdir")
>>> sed_model = Speech_Emotion_Diarization.from_hparams(source="speechbrain/emotion-diarization-wavlm-large", savedir=tmpdir,)
>>> sed_model.diarize_file("speechbrain/emotion-diarization-wavlm-large/example.wav")
MODULES_NEEDED = ['input_norm', 'wav2vec', 'output_mlp']
diarize_file(path)[source]

获取口语发声的情绪区分。

参数:

path (str) – 要进行区分的音频文件路径。

返回:

dictionary 列表 – 情绪及其时间边界。

返回类型:

List[Dict[List]]

encode_batch(wavs, wav_lens)[source]

将音频编码为细粒度情绪 embedding

参数:
  • wavs (torch.Tensor) – 波形批次 [batch, time, channels]。

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

返回:

编码后的批次

返回类型:

torch.Tensor

diarize_batch(wavs, wav_lens, batch_id)[source]

获取批次波形的情绪区分。

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

参数:
  • wavs (torch.Tensor) – 波形批次 [batch, time, channels]。

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

  • batch_id (torch.Tensor) – 每个批次的 id(文件名等)

返回:

dictionary 列表 – 情绪及其时间边界。

返回类型:

List[Dict[List]]

preds_to_diarization(prediction, batch_id)[source]

将帧级预测转换为区分结果字典。

参数:
  • prediction (torch.Tensor) – 帧级预测

  • batch_id (str) – 此批次的 id

返回:

一个包含每个情绪的开始/结束时间的字典

返回类型:

字典

forward(wavs, wav_lens, batch_id)[source]

获取一批波形的情绪区分。

is_overlapped(end1, start2)[source]

如果片段重叠则返回 True。

参数:
  • end1 (float) – 第一个片段的结束时间。

  • start2 (float) – 第二个片段的开始时间。

返回:

overlapped – 如果片段重叠则为 True,否则为 False。

返回类型:

bool

示例

>>> Speech_Emotion_Diarization.is_overlapped(None, 5.5, 3.4)
True
>>> Speech_Emotion_Diarization.is_overlapped(None, 5.5, 6.4)
False
merge_ssegs_same_emotion_adjacent(lol)[source]

如果相邻子片段具有相同的情绪,则进行合并。

参数:

lol (list of list) – 每个列表包含 [utt_id, sseg_start, sseg_end, emo_label]。

返回:

new_lol – new_lol 包含合并了相同情绪 ID 的相邻片段。

返回类型:

list of list

示例

>>> from speechbrain.utils.EDER import merge_ssegs_same_emotion_adjacent
>>> lol=[['u1', 0.0, 7.0, 'a'],
... ['u1', 7.0, 9.0, 'a'],
... ['u1', 9.0, 11.0, 'n'],
... ['u1', 11.0, 13.0, 'n'],
... ['u1', 13.0, 15.0, 'n'],
... ['u1', 15.0, 16.0, 'a']]
>>> merge_ssegs_same_emotion_adjacent(lol)
[['u1', 0.0, 9.0, 'a'], ['u1', 9.0, 15.0, 'n'], ['u1', 15.0, 16.0, 'a']]