将您的转录文本与亚马逊转录服务排成段落

Amazon Transcribe 是一项语音识别服务,可以生成多种支持的语言和口音的视频和音频文件的转录。它附带了丰富的功能,包括自动语言识别、多通道和多扬声器支持、定制词汇表和转录删除。

Amazon Transcribe 支持两种运行模式:批处理和流式处理。在批处理模式中,会创建一个转录作业来处理存储在 Amazon Simple Storage Service(Amazon S3)存储桶中的文件;在流式处理模式中,音频源通过 HTTP/2 调用或 Web Sockets 与 Amazon Transcribe 实时集成。

在本文中,我们将探讨如何在批处理模式下自动排列生成的转录成段落,从而提高生成的转录的可读性。

转录输出

Amazon Transcribe 使用 JSON 表示其输出。它提供了两种不同格式的转录结果:文本格式和分项格式。

文本格式提供整个转录,作为文本块,而分项格式按时间顺序提供转录项,以及每个项的附加元数据。这两种格式在输出文件中并行存在。

根据转录作业创建时选择的功能,Amazon Transcribe 创建了转录结果的附加和丰富视图。请参阅以下示例代码:

{
    "jobName": "2x-speakers_2x-channels",
    "accountId": "************",
    "results": {
        "transcripts": [
            {
                "transcript": "Hi, welcome."
            }
        ],
        "speaker_labels": [
            {
                "channel_label": "ch_0",
                "speakers": 2,
                "segments": [
                ]
            },
            {
                "channel_label": "ch_1",
                "speakers": 2,
                "segments": [
                ]
            }
        ],
        "channel_labels": {
            "channels": [
            ],
            "number_of_channels": 2
        },
        "items": [
            
        ],
        "segments": [
        ]
    },
    "status": "COMPLETED"
}

这些视图如下:

  • 转录 – 由transcripts元素表示,仅包含转录的文本格式。在多扬声器、多通道场景中,所有转录的串联作为单个块提供。
  • 扬声器 – 由speaker_labels元素表示,它包含按扬声器分组的转录的文本和分项格式。仅在启用多扬声器功能时可用。
  • 通道 – 由channel_labels元素表示,它包含按通道分组的转录的文本和分项格式。仅在启用多通道功能时可用。
  • 分项 – 由items元素表示,仅包含转录的分项格式。在多扬声器、多通道场景中,项将使用附加属性进行增强,指示扬声器和通道。
  • 片段 – 由segments元素表示,它包含按替代转录分组的转录的文本和分项格式。仅在启用替代结果功能时可用。

项目视图中的转录元数据

在项目视图中,项目以及每个项目包含额外的元数据信息,以时间顺序列出:

{
    "results": {
        "items": [
            {
                "channel_label": "ch_0",
                "start_time": "1.509",
                "speaker_label": "spk_0",
                "end_time": "2.21",
                "alternatives": [
                    {
                        "confidence": "0.999",
                        "content": "Hi"
                    }
                ],
                "type": "pronunciation"
            },
            {
                "channel_label": "ch_0",
                "speaker_label": "spk_0",
                "alternatives": [
                    {
                        "confidence": "0.0",
                        "content": ","
                    }
                ],
                "type": "punctuation"
            },
            {
                "channel_label": "ch_0",
                "start_time": "2.22",
                "speaker_label": "spk_0",
                "end_time": "2.9",
                "alternatives": [
                    {
                        "confidence": "0.999",
                        "content": "welcome"
                    }
                ],
                "type": "pronunciation"
            },
            {
                "channel_label": "ch_0",
                "speaker_label": "spk_0",
                "alternatives": [
                    {
                        "confidence": "0.0",
                        "content": "."
                    }
                ],
                "type": "punctuation"
            }
        ]
    }
}

元数据如下:

  • 类型 – 类型值指示特定项是标点符号还是发音。支持的标点符号示例包括逗号、句号和问号。
  • 备选项 – 包含实际转录的对象数组,以及按置信度排序的置信度级别。当未启用备选结果功能时,此列表始终只有一项。
    • 置信度 – Amazon Transcribe 对转录正确性的信心程度指示。它使用 0-1 的值,其中 1 表示 100% 的置信度。
    • 内容 – 转录的单词。
  • 开始时间 – 音频或视频文件的时间指针,指示 ss.SSS 格式中的项目开始。
  • 结束时间 – 音频或视频文件的时间指针,指示 ss.SSS 格式中的项目结束。
  • 通道标签 – 通道标识符,仅在作业配置中启用了通道识别功能时出现在项目中。
  • 说话者标签 – 仅在作业配置中启用说话者分区功能时出现在项目中的说话者标识符。

识别段落

段落的识别依赖于项目视图中的元数据信息。特别是,我们利用开始和结束时间信息以及转录类型和内容来识别句子,然后决定哪些句子是段落入口点的最佳候选项。

句子被认为是在表示句号的标点符号之间存在的转录项列表。其中的例外是转录的开始和结束,默认情况下是句子边界。下图显示了这些项的示例。由于标点符号是 Amazon Transcribe 的即插即用功能,因此使用 Amazon Transcribe 进行句子识别是很简单的,标点符号类型包括逗号、句号和问号。在这个概念中,我们使用句号作为句子边界。

并非每个句子都应该成为段落点。为了识别段落,我们在句子级别引入了一个称为开始延迟的新见解,如下图所示。我们使用开始延迟来定义讲话者相对于前一个句子在当前句子的发音中引入的时间延迟。 计算开始延迟需要当前句子的开始时间和上一个句子的结束时间,每个讲话者一个。由于 Amazon Transcribe 每个项目提供开始和结束时间,因此计算需要使用当前和前一个句子的第一个和最后一个项目。

了解每个句子的开始延迟后,我们可以应用统计分析,找出每个延迟相对于延迟总体群体的重要性。在我们的上下文中,重要的延迟是那些超过总体典型持续时间的延迟。下图显示了一个例子。对于这个概念,我们决定接受开始延迟大于平均值的句子作为显著的,并在每个这样的句子的开头引入一个段落点。除了平均值之外,还有其他选项,例如接受所有大于总体中位数、第三四分位数或上限值的开始延迟。

我们在段落识别过程中增加了一步额外的步骤,考虑每个段落包含的单词数量。当段落包含大量单词时,我们运行拆分操作,从而将一个以上的段落添加到最终结果中。

在单词计数的上下文中,我们将超过上限值的单词计数定义为显著的。我们故意做出这个决定,以便将拆分操作限制在我们的结果中真正表现为异常值的段落中。下图显示了一个例子。拆分操作通过考虑最大句子开始延迟见解来选择新的段落入口点。这样,新的段落是在当前段落中展示最大开始延迟的句子引入的。在我们的情况下,可以重复拆分直到没有单词计数超过所选边界,即上限值。下图显示了一个例子。

结论

在本文中,我们介绍了一个概念,可以根据Amazon Transcribe提供的元数据和实际转录来自动引入段落,无需手动干预。 这个概念不是针对特定的语言或口音,因为它依赖于非语言的元数据来建议段落入口点。未来的变化可以包括每种语言的语法或语义信息,进一步增强段落识别逻辑。

如果您对本文有反馈,请在评论区提交您的评论。我们期待您的回音。请查看Amazon Transcribe功能,了解其他功能,以帮助您充分利用您的转录。