CTCDecoder¶
- class torchaudio.models.decoder.CTCDecoder[source]¶
来自 Flashlight 的 CTC 集束搜索解码器 [Kahn et al., 2022]。
注意
要构建解码器,请使用工厂函数
ctc_decoder()
。- 使用
CTCDecoder
的教程
- 使用
方法¶
__call__¶
- CTCDecoder.__call__(emissions: FloatTensor, lengths: Optional[Tensor] = None) List[List[CTCHypothesis]] [source]¶
执行批量离线解码。
注意
此方法一次性执行离线解码。要执行增量解码,请参考
decode_step()
。- 参数:
emissions (torch.FloatTensor) – CPU 张量,形状为 (batch, frame, num_tokens),存储标签上的概率分布序列;声学模型的输出。
lengths (Tensor 或 None, 可选) – CPU 张量,形状为 (batch, ),存储每个批次中输出张量在时间轴上的有效长度。
- 返回:
批次中每个音频序列的最佳假设排序列表。
- 返回类型:
List[List[CTCHypothesis]]
decode_begin¶
- CTCDecoder.decode_begin()[source]¶
初始化解码器的内部状态。
有关用法,请参阅
decode_step()
。注意
此方法仅在执行在线解码时需要。当使用
__call__()
执行批量解码时,则不需要此方法。
decode_end¶
- CTCDecoder.decode_end()[source]¶
完成解码器的内部状态。
有关用法,请参阅
decode_step()
。注意
此方法仅在执行在线解码时需要。当使用
__call__()
执行批量解码时,则不需要此方法。
decode_step¶
- CTCDecoder.decode_step(emissions: FloatTensor)[source]¶
在当前的内部状态之上执行增量解码。
注意
此方法仅在执行在线解码时需要。当使用
__call__()
执行批量解码时,则不需要此方法。- 参数:
emissions (torch.FloatTensor) – CPU 张量,形状为 (frame, num_tokens),存储标签上的概率分布序列;声学模型的输出。
示例
>>> decoder = torchaudio.models.decoder.ctc_decoder(...) >>> decoder.decode_begin() >>> decoder.decode_step(emission1) >>> decoder.decode_step(emission2) >>> decoder.decode_end() >>> result = decoder.get_final_hypothesis()
get_final_hypothesis¶
- CTCDecoder.get_final_hypothesis() List[CTCHypothesis] [source]¶
获取最终假设
- 返回:
最佳假设排序列表。
- 返回类型:
List[CTCHypothesis]
注意
此方法仅在执行在线解码时需要。当使用
__call__()
执行批量解码时,则不需要此方法。
idxs_to_tokens¶
支持结构¶
CTCHypothesis¶
- class torchaudio.models.decoder.CTCHypothesis(tokens: torch.LongTensor, words: List[str], score: float, timesteps: torch.IntTensor)[source]¶
表示由 CTC 集束搜索解码器
CTCDecoder
生成的假设。- 使用
CTCHypothesis
的教程
- tokens: LongTensor¶
预测的 token ID 序列。形状 (L, ),其中 L 是输出序列的长度
- words: List[str]¶
预测的单词列表。
注意
此属性仅在为解码器提供词典时适用。如果在没有词典的情况下解码,则此属性将为空白。请参考
tokens
和idxs_to_tokens()
。
- timesteps: IntTensor¶
对应于 token 的时间步长。形状 (L, ),其中 L 是输出序列的长度
- 使用
CTCDecoderLM¶
- class torchaudio.models.decoder.CTCDecoderLM[source]¶
用于创建自定义语言模型以与解码器一起使用的语言模型基类。
- 使用
CTCDecoderLM
的教程
- abstract start(start_with_nothing: bool) CTCDecoderLMState [source]¶
初始化或重置语言模型。
- 参数:
start_with_nothing (bool) – 是否以 sil token 开始句子。
- 返回:
起始状态
- 返回类型:
- abstract score(state: CTCDecoderLMState, usr_token_idx: int) Tuple[CTCDecoderLMState, float] [source]¶
根据当前的 LM 状态和新单词评估语言模型。
- 参数:
state (CTCDecoderLMState) – 当前 LM 状态
usr_token_idx (int) – 单词的索引
- 返回:
- (CTCDecoderLMState, float)
- CTCDecoderLMState
新的 LM 状态
- float
分数
- abstract finish(state: CTCDecoderLMState) Tuple[CTCDecoderLMState, float] [source]¶
根据当前的 LM 状态评估语言模型的结束。
- 参数:
state (CTCDecoderLMState) – 当前 LM 状态
- 返回:
- (CTCDecoderLMState, float)
- CTCDecoderLMState
新的 LM 状态
- float
分数
- 使用
CTCDecoderLMState¶
- class torchaudio.models.decoder.CTCDecoderLMState[source]¶
语言模型状态。
- 使用
CTCDecoderLMState
的教程
- property children: Dict[int, CTCDecoderLMState]¶
索引到 LM 状态的映射
- child(usr_index: int) CTCDecoderLMState [source]¶
返回对应于 usr_index 的子状态,如果未找到输入索引,则创建并返回新状态。
- 参数:
usr_index (int) – 对应于子状态的索引
- 返回:
对应于 usr_index 的子状态
- 返回类型:
- compare(state: CTCDecoderLMState) CTCDecoderLMState [source]¶
比较两个语言模型状态。
- 参数:
state (CTCDecoderLMState) – 要比较的 LM 状态
- 返回:
如果状态相同则为 0,如果 self 较小则为 -1,如果 self 较大则为 +1。
- 返回类型:
- 使用