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 檔案
準備步驟
下載 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上傳 MP3 檔案到 S3:使用 AWS CLI 將下載的 Podcast 上傳到你的 S3 儲存桶。
aws s3 cp ./podcast.mp3 s3://awscookbook801-$RANDOM_STRING你應該會看到類別似以下的輸出:
upload: ./podcast.mp3 to s3://awscookbook801-<<unique>>/podcast.mp3啟動 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" } }檢查轉錄任務狀態:持續檢查轉錄任務的狀態,直到狀態變為
COMPLETED。aws transcribe get-transcription-job \ --transcription-job-name awscookbook-801 \ --output text \ --query TranscriptionJob.TranscriptionJobStatus檢視轉錄結果:使用 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...
程式碼解密:
curl命令:用於從指定的 URL 下載 Podcast MP3 檔案。這個步驟是為了準備音訊檔案以供後續的轉錄任務使用。aws s3 cp命令:將下載的 MP3 檔案上傳到指定的 S3 儲存桶。這是 Amazon Transcribe 處理音訊檔案的前提條件。aws transcribe start-transcription-job命令:啟動一個轉錄任務,指定語言程式碼、媒體格式、轉錄任務名稱和媒體檔案的 S3 URI。這是使用 Amazon Transcribe 的核心步驟。aws transcribe get-transcription-job命令:檢查轉錄任務的狀態。這個命令用於確認轉錄任務是否已完成。jq命令:用於解析 JSON 格式的轉錄結果,提取出實際的轉錄文字。這使得使用者可以方便地檢視轉錄內容。
使用 Amazon Polly 將文字轉換為語音
圖 8-2:使用 Amazon Polly 將文字轉換為語音
建立初始語音檔案:使用
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切換到神經引擎:使用
--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新增 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
程式碼解密:
aws polly synthesize-speech命令:將指定的文字轉換為語音檔案。這個命令用於生成廣告所需的語音內容。--engine neural引數:指定使用神經網路引擎來提高語音合成的品質。這個引數可以使生成的語音更加自然和流暢。- SSML 標籤:用於控制語音的播放速度、語調等屬性。透過 SSML,使用者可以自訂語音輸出的效果,使其更符合特定的應用場景需求。
使用 Amazon Textract 分析表單資料
圖 8-3:使用 Amazon Textract 和 Textractor 分析檔案
Amazon Textract 可以用於從檔案中提取表單資料並將其與對應的鍵值關聯起來。這對於數位化處理檔案內容非常有用。
程式碼解密:
- Textractor 工具:AWS 提供的一個工具,用於簡化 Amazon Textract 的使用。透過 Textractor,使用者可以更方便地提取和分析檔案中的資料。
- Amazon Textract 的表單功能:能夠自動識別和提取表單中的鍵值對,使得從檔案中提取結構化資料變得更加容易和高效。
這些服務和工具共同提供了強大的功能,能夠滿足各種與音訊、文字和檔案處理相關的需求。無論是將 Podcast 轉錄為文字,還是將文字轉換為自然語音,抑或是從檔案中提取有價值的資料,AWS 的 AI/ML 服務都能提供有效的解決方案。
使用 Amazon Textract 進行檔案分析與 PII 隱藏的完整
前言
隨著數位化的發展,檔案處理和分析在各行各業中扮演著越來越重要的角色。Amazon Textract 和 Amazon Comprehend 是 AWS 提供的兩項強大服務,分別用於檔案分析和敏感資訊的識別與隱藏。本篇文章將探討如何使用 Amazon Textract 分析手寫表單資料,以及如何利用 Amazon Comprehend 隱藏檔案中的個人可識別資訊(PII)。
使用 Amazon Textract 分析手寫表單資料
準備工作
- 下載範例程式碼:從本章節的程式碼倉函式庫下載相關檔案。
- 進入工作目錄:在終端機中切換到
803-Computer-Vision-Analysis-of-Handwritten-Form-Data/目錄。 - 上傳範例圖片:將
registration_form.png上傳至您建立的 S3 儲存桶中。
分析檔案
- 使用 Textract 分析檔案:執行 AWS CLI 命令,分析上傳的檔案並將結果輸出到
output.json。aws textract analyze-document \ --document '{"S3Object":{"Bucket":"'"awscookbook803-${RANDOM_STRING}"'","Name":"registration_form.png"}}' \ --feature-types '["FORMS"]' > output.json - 安裝 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 - 建立 Python 虛擬環境並安裝必要模組。
test -d .venv || python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt pip install boto3 - 分析表單資料:使用 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 資訊
準備工作
- 建立 IAM 角色:為 Comprehend 服務建立 IAM 角色,並附加
AmazonS3FullAccess策略。 - 生成樣本 PII 資料:使用 Faker 工具生成包含 PII 的樣本資料。
pip install faker faker -r=10 profile > sample_data.txt - 上傳樣本資料:將生成的樣本資料上傳至 S3 儲存桶。
執行 PII 檢測與隱藏任務
- 啟動 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。