CTCDecoder¶
- class torchaudio.models.decoder.CTCDecoder[source]¶
来自 Flashlight 的 CTC 束搜索解码器 [Kahn 等人,2022]。
注意
要构建解码器,请使用工厂函数
ctc_decoder()
。- 使用
CTCDecoder
的教程 - 使用 CTC Decoder 进行 ASR 推理
- 使用
方法¶
__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 束搜索解码器
CTCDecoder
生成的假设。- 使用
CTCHypothesis
的教程 - 使用 CTC Decoder 进行 ASR 推理
- tokens: LongTensor¶
预测的标记 ID 序列。形状为 (L, ),其中 L 是输出序列的长度
- words: List[str]¶
预测单词的列表。
注意
此属性仅在向解码器提供词典时适用。如果在没有词典的情况下进行解码,它将为空。请参阅
tokens
和idxs_to_tokens()
以获取更多信息。
- timesteps: IntTensor¶
与标记相对应的时步。形状为 (L, ),其中 L 是输出序列的长度
- 使用
CTCDecoderLM¶
- class torchaudio.models.decoder.CTCDecoderLM[source]¶
用于创建自定义语言模型以与解码器一起使用的语言模型基类。
- 使用
CTCDecoderLM
的教程 - 使用 CTC Decoder 进行 ASR 推理
- abstract start(start_with_nothing: bool) CTCDecoderLMState [source]¶
初始化或重置语言模型。
- 参数:
start_with_nothing (bool) – 是否以 sil 标记开始句子。
- 返回值:
起始状态
- 返回类型:
- abstract score(state: CTCDecoderLMState, usr_token_idx: int) Tuple[CTCDecoderLMState, float] [source]¶
根据当前 LM 状态和新单词评估语言模型。
- 参数:
state (CTCDecoderLMState) – 当前 LM 状态
usr_token_idx (int) – 单词的索引
- 返回值:
- (CTCDecoderLMState, float)
- CTCDecoderLMState
新的 LM 状态
- 浮点数
分数
- abstract finish(state: CTCDecoderLMState) Tuple[CTCDecoderLMState, float] [source]¶
根据当前 LM 状态评估语言模型的结束。
- 参数:
state (CTCDecoderLMState) – 当前 LM 状态
- 返回值:
- (CTCDecoderLMState, float)
- CTCDecoderLMState
新的 LM 状态
- 浮点数
分数
- 使用
CTCDecoderLMState¶
- class torchaudio.models.decoder.CTCDecoderLMState[source]¶
语言模型状态。
- 使用
CTCDecoderLMState
的教程 - 使用 CTC Decoder 进行 ASR 推理
- 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。
- 返回类型:
- 使用