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
总结
类
一个即用型 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
- 返回:
一个包含每个情绪的开始/结束时间的字典
- 返回类型:
字典
- is_overlapped(end1, start2)[source]
如果片段重叠则返回 True。
- 参数:
- 返回:
overlapped – 如果片段重叠则为 True,否则为 False。
- 返回类型:
示例
>>> 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 的相邻片段。
- 返回类型:
示例
>>> 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']]