speechbrain.utils.dynamic_chunk_training 模块

动态分块训练的配置和实用类,常用于语音识别中支持流式处理模型的训练。

动态分块训练的定义基于以下论文,尽管许多文献提及的是相同的定义:https://arxiv.org/abs/2012.05481

作者 * Sylvain de Langen 2023

摘要

DynChunkTrainConfig

动态分块训练配置对象,用于 transformer 模型,常用于流式 ASR。

DynChunkTrainConfigRandomSampler

辅助类,根据当前阶段在运行时生成 DynChunkTrainConfig。

参考

speechbrain.utils.dynamic_chunk_training.DynChunkTrainConfig(chunk_size: int, left_context_size: int | None = None)[source]

基类:object

动态分块训练配置对象,用于 transformer 模型,常用于流式 ASR。

此对象可用于训练时的掩码配置以及 DynChunkTrain-ready 模型的运行时配置。

chunk_size: int

单个分块的帧大小,始终 >0。如果需要在某个点禁用分块流式传输,请传递一个可选的流式配置参数。

left_context_size: int | None = None

左侧可见的分块数量(非帧),始终 >=0。如果为零,则分块永远无法关注任何过去的分块。如果为 None,则左侧上下文是无限的(但可以使用 .is_infinite_left_context 进行检查)。

is_infinite_left_context() bool[source]

如果左侧上下文是无限的(即任何分块都可以关注任何过去的帧),则返回 True。

left_context_size_frames() int | None[source]

返回左侧上下文的数(非分块数)。如果为 None,则左侧上下文是无限的。另请参阅 left_context_size 字段。

speechbrain.utils.dynamic_chunk_training.DynChunkTrainConfigRandomSampler(chunkwise_prob: float, chunk_size_min: int, chunk_size_max: int, limited_left_context_prob: float, left_context_chunks_min: int, left_context_chunks_max: int, test_config: DynChunkTrainConfig | None = None, valid_config: DynChunkTrainConfig | None = None)[source]

基类:object

辅助类,根据当前阶段在运行时生成 DynChunkTrainConfig。

示例

>>> from speechbrain.core import Stage
>>> from speechbrain.utils.dynamic_chunk_training import DynChunkTrainConfig
>>> from speechbrain.utils.dynamic_chunk_training import DynChunkTrainConfigRandomSampler
>>> # for the purpose of this example, we test a scenario with a 100%
>>> # chance of the (24, None) scenario to occur
>>> sampler = DynChunkTrainConfigRandomSampler(
...     chunkwise_prob=1.0,
...     chunk_size_min=24,
...     chunk_size_max=24,
...     limited_left_context_prob=0.0,
...     left_context_chunks_min=16,
...     left_context_chunks_max=16,
...     test_config=DynChunkTrainConfig(32, 16),
...     valid_config=None
... )
>>> one_train_config = sampler(Stage.TRAIN)
>>> one_train_config
DynChunkTrainConfig(chunk_size=24, left_context_size=None)
>>> one_train_config.is_infinite_left_context()
True
>>> sampler(Stage.TEST)
DynChunkTrainConfig(chunk_size=32, left_context_size=16)
chunkwise_prob: float

采样时(在 Stage.TRAIN 阶段),使用有限分块大小的概率。在另一种情况下,任何分块都可以关注完整的过去和未来上下文。

chunk_size_min: int

当采样随机分块大小时,可以选取的分块最小大小。

chunk_size_max: int

当采样随机分块大小时,可以选取的分块最大大小。

limited_left_context_prob: float

当采样随机分块大小时,左侧上下文将受到限制的概率。在另一种情况下,任何分块都可以关注完整的过去上下文。

left_context_chunks_min: int

当采样随机左侧上下文大小时,可以选取的左侧上下文分块最小数量。

left_context_chunks_max: int

当采样随机左侧上下文大小时,可以选取的左侧上下文分块最大数量。

test_config: DynChunkTrainConfig | None = None

应用于 Stage.TEST 的配置。当为 None 时,评估使用完整上下文(即非流式传输)。

valid_config: DynChunkTrainConfig | None = None

应用于 Stage.VALID 的配置。当为 None 时,评估使用完整上下文(即非流式传输)。

__call__(stage)[source]

在训练阶段,采样一个随机 DynChunkTrain 配置。在验证或测试期间,返回相关的配置。

参数:

stage (speechbrain.core.Stage) – 当前训练或评估阶段。在训练模式下,将根据指定的概率和范围采样一个随机 DynChunkTrainConfig。在评估期间,将选取相关的 DynChunkTrainConfig 属性。

返回类型:

相应的配置