speechbrain.tokenizers.discrete_SSL_tokenizer 模块

语义标记分词器。

作者
  • Pooneh Mousavi 2024

摘要

DiscreteSSLTokenizer

此类是 DiscreteSSL 模型的标记器,它对从 DiscreteSSL 模型中提取的语义标记应用后处理。

参考

class speechbrain.tokenizers.discrete_SSL_tokenizer.DiscreteSSLTokenizer(num_clusters)[source]

基类:object

此类是 DiscreteSSL 模型的标记器,它对从 DiscreteSSL 模型中提取的语义标记应用后处理。它通过将每层的标记 ID 与 layer_num * sunmber_of_cluster 相加,使每层的标记 ID 唯一。如果字段设置为 true,它会独立地对每层应用去重(删除后续重复标记),并用零填充所有项。如果为该层设置了 sentence piece 标记器,它会独立地对每层应用 subwording,并用零填充所有项。如果未应用 subwording,则所有标记 ID 都会加一,以避免 pad_id(0) 和中心点为零的聚类之间的冲突。

参数:

num_clusters (List[int]) – 确定 kmeans 模型的聚类数量。每层可能不同。

示例

>>> import torch
>>> inputs = torch.randint(0,1000,(3, 6, 2))
>>> ssl_layer_num = [7,23]
>>> deduplicate =[False, True]
>>> bpe_tokenizers=[None, None]
>>> num_clusters = [1000,2000]
>>> tokenizer = DiscreteSSLTokenizer(num_clusters=num_clusters)
>>> tokens= tokenizer.encode(inputs,SSL_layers=ssl_layer_num, deduplicates=deduplicate, bpe_tokenizers=bpe_tokenizers)
>>> print(tokens.shape)
torch.Size([3, 6, 2])
textify(tokens)[source]

将标记 ID 转换为字符,用于训练 sentencepiece 标记器。

参数:

tokens (torch.Tensor) – 一个 (Batch x Seq) 大小的音频标记张量

返回值:

processed_tokens – 一个 (Batch x Seq) 大小的列表,其中包含每个标记 ID 对应的字符。

返回类型:

list

encode(input, SSL_layers=[7], deduplicates=[False], bpe_tokenizers=[None])[source]

接收输入的标记化波形,并返回其对应的处理后的标记。

参数:
  • input (torch.Tensor) – 一个 (Batch x Seq x num_SSL_layers) 大小的音频标记张量。

  • SSL_layers (List[int] (默认值: [7]):) – 确定应该使用 SSL 的哪些层来提取信息。

  • deduplicates (List[boolean] (默认值: [False]):) – 确定是否对对应层提取的标记应用去重(移除后续重复标记)。

  • bpe_tokenizers (List[int] (默认值: [None]):) – 如果为对应层训练了 sentencePiece 标记器,则确定是否对该层提取的标记应用 subwording。

返回值:

processed_tokens – 应用去重和 subwording(如有必要)后,一个 (Batch x Seq x num_SSL_layers) 大小的音频标记张量。

返回类型:

torch.Tensor