speechbrain.utils.dynamic_chunk_training 模块

用于动态块训练的配置和实用工具类,通常用于语音识别中可流式模型的训练。

动态块训练的定义基于以下论文中的定义,尽管许多文献都引用了相同的定义: https://arxiv.org/abs/2012.05481

作者 * Sylvain de Langen 2023

摘要

类:

DynChunkTrainConfig

用于变压器的动态块训练配置对象,通常在流式自动语音识别(ASR)中使用。

DynChunkTrainConfigRandomSampler

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

参考

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

基础类:object

用于transformers的动态块训练配置对象,通常在流式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字段。

class 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。

Example

>>> 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配置。 在验证或测试期间,返回相关配置。

Parameters:

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

Return type:

适当的配置