AWS 提供豐富的 AI/ML 服務,簡化了音訊處理、文字轉換和檔案分析等任務。利用 Amazon Transcribe,可以輕鬆將 Podcast 等音訊內容轉錄成文字,方便後續處理和分析。接著,使用 Amazon Polly 將文字轉換成自然流暢的語音,適用於語音合成和廣告製作等場景。對於檔案處理,Amazon Textract 可以有效地提取表單資料和關鍵資訊,提升檔案數位化效率。此外,Amazon Comprehend 和 Amazon Rekognition 則分別用於偵測和遮蔽個人識別資訊,確保資料安全和隱私保護。透過 AWS CLI 和相關工具,開發者可以快速整合這些服務到應用程式中,提升開發效率。

使用 Amazon Transcribe 轉錄 Podcast

問題

你需要為一個根據 MP3 的音訊(如 Podcast)建立文字記錄。

方案

使用 Amazon Transcribe 產生英文轉錄並將結果儲存到 S3 儲存桶中(見圖 8-1)。

圖 8-1:使用 Amazon Transcribe 處理 MP3 檔案

準備步驟

  1. 下載 Podcast MP3 檔案:使用 curl 下載指定的 Podcast MP3 檔案。

    curl https://d1le29qyzha1u4.cloudfront.net/AWS_Podcast_Episode_453.mp3 -o podcast.mp3
    

    你應該會看到類別似以下的輸出:

    % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                   Dload  Upload   Total   Spent    Left  Speed
    100 29.8M  100 29.8M    0     0  4613k      0  0:00:06  0:00:06 --:--:-- 5003k
    
  2. 上傳 MP3 檔案到 S3:使用 AWS CLI 將下載的 Podcast 上傳到你的 S3 儲存桶。

    aws s3 cp ./podcast.mp3 s3://awscookbook801-$RANDOM_STRING
    

    你應該會看到類別似以下的輸出:

    upload: ./podcast.mp3 to s3://awscookbook801-<<unique>>/podcast.mp3
    
  3. 啟動 Transcribe 轉錄任務:使用 AWS CLI 啟動一個 Transcribe 轉錄任務。

    aws transcribe start-transcription-job \
      --language-code 'en-US' \
      --media-format 'mp3' \
      --transcription-job-name 'awscookbook-801' \
      --media MediaFileUri=s3://awscookbook801-${RANDOM_STRING}/podcast.mp3 \
      --output-bucket-name "awscookbook801-${RANDOM_STRING}"
    

    你應該會看到類別似以下的輸出:

    {
      "TranscriptionJob": {
        "TranscriptionJobName": "awscookbook-801",
        "TranscriptionJobStatus": "IN_PROGRESS",
        "LanguageCode": "en-US",
        "MediaFormat": "mp3",
        "Media": {
          "MediaFileUri": "s3://awscookbook801-<<unique>>/podcast.mp3"
        },
        "StartTime": "2021-09-21T22:02:13.312000-04:00",
        "CreationTime": "2021-09-21T22:02:13.273000-04:00"
      }
    }
    
  4. 檢查轉錄任務狀態:持續檢查轉錄任務的狀態,直到狀態變為 COMPLETED

    aws transcribe get-transcription-job \
      --transcription-job-name awscookbook-801 \
      --output text \
      --query TranscriptionJob.TranscriptionJobStatus
    
  5. 檢視轉錄結果:使用 AWS CLI 和 jq 命令列 JSON 處理器檢視轉錄結果。

    aws s3 cp s3://awscookbook801-$RANDOM_STRING/awscookbook-801.json - | jq '.results.transcripts[0].transcript' --raw-output
    

    你應該會看到類別似以下的輸出:

    This is episode 453 of the US podcast released on June 11, 2021 podcast confirmed.
    Welcome to the official AWS podcast. Yeah. Mhm. Hello everyone and welcome back to another episode of a W. S. Launch.
    I'm Nicky, I'm your host. And today I am joined by Nathan Peck...
    

程式碼解密:

  1. curl 命令:用於從指定的 URL 下載 Podcast MP3 檔案。這個步驟是為了準備音訊檔案以供後續的轉錄任務使用。
  2. aws s3 cp 命令:將下載的 MP3 檔案上傳到指定的 S3 儲存桶。這是 Amazon Transcribe 處理音訊檔案的前提條件。
  3. aws transcribe start-transcription-job 命令:啟動一個轉錄任務,指定語言程式碼、媒體格式、轉錄任務名稱和媒體檔案的 S3 URI。這是使用 Amazon Transcribe 的核心步驟。
  4. aws transcribe get-transcription-job 命令:檢查轉錄任務的狀態。這個命令用於確認轉錄任務是否已完成。
  5. jq 命令:用於解析 JSON 格式的轉錄結果,提取出實際的轉錄文字。這使得使用者可以方便地檢視轉錄內容。

使用 Amazon Polly 將文字轉換為語音

圖 8-2:使用 Amazon Polly 將文字轉換為語音

  1. 建立初始語音檔案:使用 aws polly synthesize-speech 命令將指定的文字轉換為語音。

    aws polly synthesize-speech \
      --output-format mp3 \
      --voice-id Joanna \
      --text 'Acme products are of the very highest quality and lowest price.' \
      products.mp3
    
  2. 切換到神經引擎:使用 --engine neural 引數來提高語音合成的品質。

    aws polly synthesize-speech \
      --output-format mp3 \
      --voice-id Joanna \
      --engine neural \
      --text 'Acme products are of the very highest quality and lowest price.' \
      products-neural.mp3
    
  3. 新增 SSML 標籤:使用 SSML(Speech Synthesis Markup Language)標籤來修改語音的播放速度。

    aws polly synthesize-speech \
      --output-format mp3 \
      --voice-id Joanna \
      --engine neural \
      --text-type ssml \
      --text '<speak>Acme products are of the very highest quality and <prosody rate="slow">lowest price</prosody></speak>' \
      products-neural-ssml.mp3
    

程式碼解密:

  1. aws polly synthesize-speech 命令:將指定的文字轉換為語音檔案。這個命令用於生成廣告所需的語音內容。
  2. --engine neural 引數:指定使用神經網路引擎來提高語音合成的品質。這個引數可以使生成的語音更加自然和流暢。
  3. SSML 標籤:用於控制語音的播放速度、語調等屬性。透過 SSML,使用者可以自訂語音輸出的效果,使其更符合特定的應用場景需求。

使用 Amazon Textract 分析表單資料

圖 8-3:使用 Amazon Textract 和 Textractor 分析檔案

Amazon Textract 可以用於從檔案中提取表單資料並將其與對應的鍵值關聯起來。這對於數位化處理檔案內容非常有用。

程式碼解密:

  1. Textractor 工具:AWS 提供的一個工具,用於簡化 Amazon Textract 的使用。透過 Textractor,使用者可以更方便地提取和分析檔案中的資料。
  2. Amazon Textract 的表單功能:能夠自動識別和提取表單中的鍵值對,使得從檔案中提取結構化資料變得更加容易和高效。

這些服務和工具共同提供了強大的功能,能夠滿足各種與音訊、文字和檔案處理相關的需求。無論是將 Podcast 轉錄為文字,還是將文字轉換為自然語音,抑或是從檔案中提取有價值的資料,AWS 的 AI/ML 服務都能提供有效的解決方案。

使用 Amazon Textract 進行檔案分析與 PII 隱藏的完整

前言

隨著數位化的發展,檔案處理和分析在各行各業中扮演著越來越重要的角色。Amazon Textract 和 Amazon Comprehend 是 AWS 提供的兩項強大服務,分別用於檔案分析和敏感資訊的識別與隱藏。本篇文章將探討如何使用 Amazon Textract 分析手寫表單資料,以及如何利用 Amazon Comprehend 隱藏檔案中的個人可識別資訊(PII)。

使用 Amazon Textract 分析手寫表單資料

準備工作

  1. 下載範例程式碼:從本章節的程式碼倉函式庫下載相關檔案。
  2. 進入工作目錄:在終端機中切換到 803-Computer-Vision-Analysis-of-Handwritten-Form-Data/ 目錄。
  3. 上傳範例圖片:將 registration_form.png 上傳至您建立的 S3 儲存桶中。

分析檔案

  1. 使用 Textract 分析檔案:執行 AWS CLI 命令,分析上傳的檔案並將結果輸出到 output.json
    aws textract analyze-document \
    --document '{"S3Object":{"Bucket":"'"awscookbook803-${RANDOM_STRING}"'","Name":"registration_form.png"}}' \
    --feature-types '["FORMS"]' > output.json
    
  2. 安裝 Textractor 工具:下載並安裝 Textractor 工具,以解析 Textract 的輸出結果。
    wget https://github.com/aws-samples/amazon-textract-textractor/blob/master/zip/textractor.zip?raw=true -O textractor.zip
    unzip textractor.zip
    
  3. 建立 Python 虛擬環境並安裝必要模組
    test -d .venv || python3 -m venv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
    pip install boto3
    
  4. 分析表單資料:使用 Textractor 工具分析表單並輸出結果。
    python textractor.py \
    --documents s3://awscookbook803-${RANDOM_STRING}/registration_form.png \
    --text --forms
    

結果驗證

檢視輸出結果中的信心水準和欄位資料,確認 Textract 分析的準確性。

cat registration_form-png-page-1-forms.csv | column -t -s,

使用 Amazon Comprehend 隱藏 PII 資訊

準備工作

  1. 建立 IAM 角色:為 Comprehend 服務建立 IAM 角色,並附加 AmazonS3FullAccess 策略。
  2. 生成樣本 PII 資料:使用 Faker 工具生成包含 PII 的樣本資料。
    pip install faker
    faker -r=10 profile > sample_data.txt
    
  3. 上傳樣本資料:將生成的樣本資料上傳至 S3 儲存桶。

執行 PII 檢測與隱藏任務

  1. 啟動 PII 檢測任務:使用 AWS CLI 命令啟動 Comprehend 的 PII 檢測任務。
    JOB_ID=$(aws comprehend start-pii-entities-detection-job \
    --input-data-config S3Uri="s3://awscookbook804-$RANDOM_STRING/sample_data.txt" \
    --output-data-config S3Uri="s3://awscookbook804-$RANDOM_STRING/redacted_output/" \
    --mode "ONLY_REDACTION" \
    --redaction-config PiiEntityTypes="BANK_ACCOUNT_NUMBER","BANK_ROUTING","CREDIT_DEBIT_NUMBER","CREDIT_DEBIT_CVV","CREDIT_DEBIT_EXPIRY","PIN","EMAIL","ADDRESS","NAME","PHONE","SSN",MaskMode="REPLACE_WITH_PII_ENTITY_TYPE" \
    --data-access-role-arn "arn:aws:iam::${AWS_ACCOUNT_ID}:role/AWSCookbook804Comprehend" \
    --job-name "aws cookbook 804" \
    --language-code "en" \
    --output text --query JobId)
    

使用 Amazon Comprehend 偵測與遮蔽文字中的個人識別資訊(PII)

在處理敏感資料時,保護個人識別資訊(PII)是至關重要的。Amazon Comprehend 提供了一種強大的工具,能夠偵測和遮蔽文字中的 PII 資訊。本文將介紹如何使用 Comprehend 進行 PII 偵測和遮蔽。

步驟1:建立 PII 偵測任務

首先,您需要使用 aws comprehend start-pii-entities-detection-job 命令建立一個 PII 偵測任務。此任務將掃描指定的 S3 儲存桶中的檔案,並偵測其中的 PII 資訊。

JOB_ID=$(aws comprehend start-pii-entities-detection-job \
    --input-data-config "S3Uri=s3://your-bucket/sample_data.txt" \
    --output-data-config "S3Uri=s3://your-bucket/redacted_output/" \
    --mode ONLY_REDACTION \
    --redaction-config "PiiEntityTypes=['SSN', 'EMAIL', 'ADDRESS'], MaskCharacter=*")

內容解密:

  • start-pii-entities-detection-job 命令用於啟動 PII 偵測任務。
  • --input-data-config 指定輸入檔案的 S3 URI。
  • --output-data-config 指定輸出結果的 S3 URI。
  • --mode ONLY_REDACTION 表示任務只進行遮蔽操作。
  • --redaction-config 組態遮蔽規則,包括要遮蔽的 PII 型別和遮蔽字元。

步驟2:監控任務狀態

建立任務後,您需要監控任務的狀態,直到其完成。

aws comprehend describe-pii-entities-detection-job --job-id $JOB_ID

內容解密:

  • describe-pii-entities-detection-job 命令用於查詢任務的狀態。
  • --job-id 指定要查詢的任務 ID。

步驟3:取得輸出結果

任務完成後,您可以從 S3 取得輸出結果。

S3_LOCATION=$(aws comprehend describe-pii-entities-detection-job \
    --job-id $JOB_ID --output text \
    --query PiiEntitiesDetectionJobProperties.OutputDataConfig.S3Uri)

aws s3 cp ${S3_LOCATION}sample_data.txt.out .

內容解密:

  • 取得輸出結果的 S3 URI,並將結果檔案下載到本地。

使用 Amazon Rekognition 偵測影片中的文字

除了 Comprehend,Amazon Rekognition 也提供了一種強大的功能,能夠偵測影片中的文字。本文將介紹如何使用 Rekognition 進行影片文字偵測。

步驟1:上傳影片到 S3

首先,將影片檔案上傳到 S3 儲存桶。

aws s3 cp ./sample_movie.mp4 s3://your-bucket

內容解密:

  • 將本地的影片檔案上傳到指定的 S3 儲存桶。

步驟2:啟動文字偵測任務

上傳影片後,使用 aws rekognition start-text-detection 命令啟動文字偵測任務。

JOB_ID=$(aws rekognition start-text-detection \
    --video '{"S3Object":{"Bucket":"your-bucket","Name":"sample_movie.mp4"}}' \
    --output text --query JobId)

內容解密:

  • start-text-detection 命令用於啟動影片中的文字偵測任務。
  • --video 指定輸入影片的 S3 物件。

步驟3:取得偵測結果

任務完成後,您可以使用 aws rekognition get-text-detection 命令取得偵測結果。

aws rekognition get-text-detection --job-id $JOB_ID

內容解密:

  • get-text-detection 命令用於取得文字偵測任務的結果。
  • --job-id 指定要查詢的任務 ID。