为转录增加隐私保护

利用 Amazon Transcribe

Amazon Transcribe 是一种自动语音识别 (ASR) 服务,有助于 AWS 客户轻松地在其应用程序中添加语音转文本功能。

在本教程中,将学习如何使用 Amazon Transcribe 的自动内容审查功能为转录增加隐私保护。

Transcribe 的一个常用使用场景是自动转录客户通话(呼叫中心、电话营销等),为下游分析和自然语言处理任务(如情绪分析)构建数据集。在这些情况下,可能需要删除个人身份信息 (PII),以保护隐私并遵守当地法律法规。此外,在组织内部,根据团队成员的不同访问级别和查看权限,您可能会选择性地将某些转录数据共享给他们。大规模地精确删除敏感文本内容是非常困难的,因为手动操作不仅繁琐、容易出错而且耗时。好在 Amazon Transcripte 支持自动从转录中删除 PII。

您可以通过 AWS 管理控制台或 API 使用自动内容审查功能。本教程将介绍每种方法。

在本教程中,您将学习如何:

  1. 将要转录的音频文件上传到 Amazon S3
  2. 创建并启动 Amazon Transcribe 作业
  3. 清除教程资源
  4. 查看代码以使用 API 完成教程任务

完成本教程所需的费用不到 1 美元。

注意:自动内容审查目前只支持美式英语转录,这是一项高级功能,在 Amazon Transcribe 目前运行的所有 AWS 区域中都可以使用。

关于本教程
时间 10 分钟
费用 低于 1 美元
使用场景 机器学习
产品 Amazon Transcribe
受众 开发人员
级别 中级
上次更新时间 2021 年 2 月 11 日

开始之前

您必须具有 AWS 账户才能完成本教程。如果您还没有账户,请点击注册 AWS,创建一个新账户。

已经有账户?
登录您的账户

步骤 1. 将要转录的音频文件上传到 Amazon S3

完成以下步骤,创建 Amazon S3 存储桶并上传示例转录音频文件。可以从此处下载示例音频文件:content-redaction-sample.wav

如果您想使用自己的音频文件,建议使用无损格式(如 FLAC 或 WAV),采用 PCM 16 位编码;并且对于低保真度音频使用 8000 Hz 采样率,对于高保真度音频使用 16000 Hz 采样率。Amazon Transcribe 还支持 MP3、MP4、Ogg、WebM 和 AMR 格式。

注意:有关更多信息,请参见 Amazon Transcribe 文档中的 Amazon Transcribe 的工作原理


a. 登录 Amazon S3 控制台,然后点击 Create bucket(创建存储桶)。

注意:也可以使用一个现有的 S3 存储桶。

Create bucket

b. 在 Create bucket(创建存储桶)页面上的 Bucket name(存储桶名称)字段中,输入唯一的存储桶名称。对于 Region(区域),选择可以使用 Amazon Transcribe 的区域。将其余设置保留为默认值,然后点击 Create bucket(创建存储桶)。

Create a new bucket

c. 在 Buckets(存储桶)列表中,选择您新创建的存储桶。(或者,在存储桶创建提示横幅中点击 View details(查看详细信息)。)


d. 在存储桶详细信息视图中,点击  Upload(上传)。

e. 在 Upload(上传)页面上的 Files and folders(文件和文件夹)部分中,点击 Add files(添加文件)。然后,浏览并打开 content-redaction-sample.wav 文件。

注意:确保您已经先将 content-redaction-sample.wav 文件下载到本地硬盘。


f. 在 Destination(目标)部分中,点击 Enable Bucket Versioning(启用存储桶版本控制)。
 
注意:此步骤是可选操作。如果选择不启用存储桶版本控制,则必须确认不进行存储桶版本控制。

g. 点击  Upload(上传)。
此时会显示一条状态消息,其中显示上传进度。

h. 选择新上传的文件以打开详细信息视图。

i. 在对象详细信息视图中,点击  Copy S3 URI(复制 S3 URI)并记录值。下一步将需要此值。

步骤 2. 创建 Amazon Transcribe 转录作业

在此步骤中,将在 Amazon Transcribe 控制台中创建转录作业。Amazon Transcribe 将分析包含语音的音频文件,并使用先进的机器学习技术将语音数据转录为文本。Amazon Transcribe 的自动内容审查功能会自动删除转录结果中的敏感个人身份信息 (PII)。它会将转录文本中每个已识别的 PII 信息替换为 [PII] 标签。

完成以下步骤,启动具有自动内容审查功能的转录作业。

注意:有关更多信息,请参见 Amazon Transcribe 文档中的创建转录作业自动内容编辑


a. 打开  Amazon Transcribe 控制台,然后点击  Launch Amazon Transcribe(启动 Amazon Transcribe)。

b. 在左侧导航栏中,点击  Transcription jobs(转录作业)。然后,点击  Create job(创建作业)。

c. 在 Specify job details(指定作业详细信息)页面上,指定以下内容:

  • Job settings(作业设置)框中,对于 Name(名称),输入 tutorial-transcription-job。
  • Input data(输入数据)部分中,粘贴步骤 1i 中的 S3 URI。(如果您没有 S3 URI,请点击 Browse S3(浏览 S3),然后从您的 S3 存储桶中找到 content-redaction-sample.wav 文件)。
  • Output data(输出数据)部分中,选择 Service-managed S3 bucket(服务托管的 S3 存储桶)。

然后,点击 Next(下一步)。

d. 在 Configure job(配置作业)页面上的 Content removal(内容移除)框中,点击 Automatic content redaction(自动内容编辑)并选中 Include unredacted transcript in job output(在作业输出中包含未经编辑的转录文本)。然后,点击 Create(创建)。

e. 等待作业的状态从  In progress(正在进行中)更改为  Complete(完成),然后选择  tutorial-transcription-job

在作业详细页面的  Transcription preview(转录预览)部分中,会看到 Amazon Transcribe 已将转录文本中的所有个人身份信息 (PII) 替换为 [PII]。

(可选)下载转录文本副本。在  Job details(作业详细信息)视图的顶部,点击  Download full transcript(下载完整转录文本),然后选择 Unredacted(未经审查)或 Redacted(经过审查)的版本。

Step 3. Clean up

在此步骤中,将终止在本实验中使用的资源。

重要说明:终止未积极使用的资源可以降低成本,也是一种最佳实践。不终止您的资源将会向您的账户收费。


删除转录作业:

  1. 打开 Amazon Transcribe 控制台
  2. 在左侧导航栏中,点击 Transcription jobs(转录作业)。
  3. 选择 tutorial-transcription-job,然后点击 Delete(删除)。
  4. 点击 Delete(删除)进行确认。

删除音频文件和 S3 存储桶:

  1. 打开 S3 控制台
  2. 选择在本教程中创建的 S3 存储桶,然后点击 Empty(清空)。输入 permanently delete,然后点击 Empty(清空)。点击 Exit(退出)。
  3. 选择在本教程中创建的 S3 存储桶,然后点击 Delete(删除)。输入存储桶的名称,然后点击 Delete bucket(删除存储桶)。

Step 4. Review code for Amazon Transcribe API

此步骤将介绍如何使用编程/API 方式完成步骤 1 和步骤 2。以下脚本使用适用于 Python 的 AWS SDK (Boto) 启动转录作业并获取作业结果。

查看以下脚本,详细了解如何使用 Amazon Transibe API 创建具有自动内容编辑功能的转录作业。

注意:有关更多信息,请参见 Amazon Transcribe 文档中的开始使用 API


启动转录作业

以下脚本将启动具有内容审查功能的转录作业,并在转录完成后输出作业元数据。

该脚本使用 start_transcription_job() 方法启动一个异步作业,将语音转录为文本。作为方法调用的一部分,需要提供有关作业的一些信息,包括作业名称、S3 存储桶位置、音频文件的对象键、语言代码和可选配置。在此代码示例中,可选配置包括 PII 的内容审查。

要了解有关特定于 Amazon Transcribe 的 boto3 方法的更多信息,请参见 Boto3 文档中的 TranscribeService

import boto3
import time

transcribe = boto3.client('transcribe')
job_name = "<Job Name>"
audio_file = "s3://<bucket-name>/<object-key of the audio file to be transcribed>"
transcribe.start_transcription_job(
    TranscriptionJobName=job_name,
    Media={'MediaFileUri': audio_file},
    LanguageCode='en-US',
    ContentRedaction={
        'RedactionType': 'PII',
        'RedactionOutput': 'redacted_and_unredacted'
    }
)
while True:
    status = transcribe.get_transcription_job(TranscriptionJobName=job_name)
    if status['TranscriptionJob']['TranscriptionJobStatus'] in ['COMPLETED', 'FAILED']:
        break
    print("Not ready yet...")
    time.sleep(5)
if status['TranscriptionJob']['TranscriptionJobStatus'] == 'COMPLETED':
    print("Full Transcript available at -> "+status['TranscriptionJob']['Transcript']['TranscriptFileUri'])
    print("Redacted Transcript available at -> "+status['TranscriptionJob']['Transcript']['RedactedTranscriptFileUri'])
else:
    print("Transciption Job Failed.")

以下代码展示转录作业脚本的示例输出。 

Not ready yet...
Not ready yet...
Not ready yet...
Full Transcript available at -> https://s3.<region>.amazonaws.com/aws-transcribe-<region>/<account>/<job-name>/asrOutput.json
Redacted Transcript available at -> https://s3.<region>.amazonaws.com/aws-transcribe-<region>/<account>/<job-name>/asrOutputRedacted.json

查看作业输出

输出会生成指向两个转录文件的链接(这两个文件与您通过 Amazon Transcribe 控制台创建转录作业时生成的文件相同)。转录文本是 JSON 文件,包含有关 Amazon Transcribe 转录输出的数据和元数据。

  • asrOutput.json:此文件包含完整转录文本。
  • asrOutputRedacted.json:此文件包含经过编辑的转录文本。

这些文件的内容都已格式化,可提供关于语音中出现的每个发音/标点符号的信息。您可以在您开发的应用程序中以任何方式使用这些 JSON 数据。


查看审查内容

在经过编辑的转录文本 json 中,您会看到 PII 数据如下所示:
{
             "start_time":"13.96",
             "end_time":"20.05",
             "alternatives":[
                {
                   "content":"[PII]",
                   "redactions":[
                      {
                         "confidence":"1.0"
                      }
                   ]
                }
             ],
             "type":"pronunciation"
          }

但是,非 PII 发音/标点符号如下所示:

{
             "start_time":"26.97",
             "end_time":"27.19",
             "alternatives":[
                {
                   "confidence":"1.0",
                   "content":"card"
                }
             ],
             "type":"pronunciation"
          }

这些字段的目的是尽可能多地提供在语音中检测到的发音/标点符号相关信息。请注意,在经过审查的转录文本中,Amazon Transcribe 将归类为 PII 的发音标记为 "content":"[PII]"。然而,在未经审查的转录文本中,相同的发音标记为 "content":"4444333321111"

恭喜您

您使用 Amazon Transcribe 成功创建了音频文件的转录,并审查了敏感的个人身份信息 (PII)。

本教程对您有用吗?

推荐的后续步骤

了解更多

阅读《Amazon Transcribe 开发人员指南》,了解更多关于 Amazon Transcribe 的信息。

了解 Amazon Transcribe Medical

有关更多信息,请参见 Amazon Transcribe Medical 页面

阅读其他机器学习服务教程