CTCDecoder¶
- class torchaudio.models.decoder.CTCDecoder[source]¶
来自 Flashlight 的 CTC beam search 解码器 [Kahn 等, 2022]。
注意
要构建解码器,请使用工厂函数
ctc_decoder()
。- 使用
CTCDecoder
的教程
- 使用
方法¶
__call__¶
- CTCDecoder.__call__(emissions: FloatTensor, lengths: Optional[Tensor] = None) List[List[CTCHypothesis]] [source]¶
执行批量离线解码。
注意
此方法一次性执行离线解码。要执行增量解码,请参考
decode_step()
。- 参数:
emissions (torch.FloatTensor) – 形状为 (batch, frame, num_tokens) 的 CPU 张量,存储标签概率分布序列;声学模型的输出。
lengths (Tensor 或 None, 可选) – 形状为 (batch, ) 的 CPU 张量,存储每个批次中输出张量在时间轴上的有效长度。
- 返回:
批次中每个音频序列的排序后的最佳假设列表。
- 返回类型:
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) – 形状为 (frame, num_tokens) 的 CPU 张量,存储标签概率分布序列;声学模型的输出。
示例
>>> 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 beam search 解码器
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 小于 state 返回 -1,如果 self 大于 state 返回 +1。
- 返回类型:
- 使用