Amazon Transcribe による「音声の文字起こし」をブラウザから試す

## はじめに

AWS は様々な AI サービスを提供しています

そして、それらのサービスはブラウザから簡単に試せるようになっています

https://aws.amazon.com/jp/free/machine-learning/

| サービス    | 機能                     | お試し記事     | Elixir 実装例 |
|:------------|:-------------------------|:----------------| :-----|
| Transcribe  |音声の文字起こし（音声認識）| [参照](https://qiita.com/RyoWakabayashi/private/396e2047d377e258950f)  | [参照](https://qiita.com/RyoWakabayashi/items/1fc64587c9fa352935c6) |
| Polly       |文書の読み上げ（音声合成）  | [参照](https://qiita.com/RyoWakabayashi/private/2aad1952f63b4e76b652) | [参照](https://qiita.com/RyoWakabayashi/items/93adae047ccb4fee8d78) |
| Lex         |チャットボット             | [参照](https://qiita.com/RyoWakabayashi/private/6c7e7a248e192f3a8afc) | Coming Soon... |
| Translate   |翻訳                      | [参照](https://qiita.com/RyoWakabayashi/private/688418e52cde44871c1e) | [参照](https://qiita.com/RyoWakabayashi/items/5f262ba0d1e11219edec) |
| Rekognition |画像認識<br/>顔認識        | [参照](https://qiita.com/RyoWakabayashi/private/d8c7f57a71e83d9140d5)<br/>[参照](https://qiita.com/RyoWakabayashi/private/10f93c3417041b005c31)  | [参照](https://qiita.com/RyoWakabayashi/items/2219e84642ff2d05481c) |
| Textract    |画像からの表データ読込     | [参照](https://qiita.com/RyoWakabayashi/private/b7bd7079d20326d9e4be) | [参照](https://qiita.com/RyoWakabayashi/items/7c26d0dda7d566adc694) |
| Bedrock     |生成AIによるチャット、画像生成| [参照](https://qiita.com/RyoWakabayashi/private/5680a4bac246a1a0c532) | [参照](https://qiita.com/RyoWakabayashi/private/bb85dd2286420205e2da) |

本記事では AWS の AI 音声認識サービス Amazon Transcribe をブラウザから試してみます

## Amazon Transcribe とは

Amazon Transcribe　は音声をテキストに変換する、つまり「音声の文字起こし」=音声認識サービスです

https://aws.amazon.com/jp/transcribe/

### Amazon Transcribe の使い途（ユースケース）

Amazon Transcribe は単に音声を文字にするだけでなく、誰が喋っているのか判別したり、単語を区切ったり、個人情報などを識別したりなど、様々な機能を備えています

Amazon Transcribe の多様な機能を活用することで、以下のような用途に使用可能です

- 会議中に録音した音声から議事録を作る
- 撮影した動画の字幕を作る
- 音声合成サービス Polly などと組み合わせて電話に自動応答する
- 音声から個人情報や不適切な言葉を検出し、マスキングする

### Amazon Transcribe の料金

https://aws.amazon.com/jp/transcribe/pricing/

AWS の料金は基本的に従量課金制です

また、リージョン（サービス提供するサーバーが存在する地域）によって料金が異なります

Amazon Transcribe を東京リージョンで使う場合、リアルタイム音声認識なら `$0.024 / 分`　の料金になります

`150 ¥/$` の場合、 `¥3.6 / 分` = `¥216 / 時間` となります

例えば 2 時間の会議をリアルタイム音声認識すれば ¥432 請求されます

ただし、 AWS のサービスの多くには無料利用枠が存在します

> 無料利用枠
> 12 か月間、1 か月あたり 60 分
> AWS 無料利用枠の一環として、Amazon Transcribe の使用を無料で開始できます。Amazon Transcribe の無料利用枠は、最初の文字起こしリクエストを作成した日から 12 か月間利用できます。

Amazon Transcribe の場合、初めて使ったときから12ヶ月間は1ヶ月に60分までは利用可能なため、本記事で実行する程度の処理であれば無料範囲内に収まります

## アカウント作成

Amazon Transcribe を使うためには、 AWS のアカウント作成が必要です

以下の公式手順に従って、アカウントを作成してください

:::note warn
クレジットカードと電話番号が必要になります

予めご用意ください
:::

https://aws.amazon.com/jp/register-flow/

## ブラウザからの音声認識実行

### Amazon Transcribe への移動

AWS のマネジメントコンソールにログインすると、以下のような画面が表示されます

https://ap-northeast-1.console.aws.amazon.com/console/home?region=ap-northeast-1#

![スクリーンショット 2023-11-26 9.59.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/ccb18a17-4e2e-e5e6-098f-e779c8f69eef.png)

この画面から最近使ったサービスなどにアクセスできるようになっています

上メニューにある検索ボックスに `transcri` と入力してみましょう

![スクリーンショット 2023-11-26 8.53.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/aae2fe31-2aab-92ad-cae6-54a582947c79.png)

サービスの候補として Amazon Transcribe が表示されます

Amazon Transcribe をクリックして、サービスページに移動しましょう

以下のような画面が表示されます

https://ap-northeast-1.console.aws.amazon.com/transcribe/home?region=ap-northeast-1#welcome

![スクリーンショット 2023-11-26 8.54.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/6f944f86-1beb-27ad-202a-e02c8d549ac6.png)

横文字の意味は以下のように解釈してください

- Transcribe = トランスクライブ = 文字にする = 文字起こし、音声認識する
- トランスクリプション = 文字起こし、音声認識
- トランスクリプト = 文字にしたもの = 文字起こし、音声認識の結果

### リアルタイム音声認識の実行

ブラウザから文字起こしを実行してみましょう

右側にあるオレンジ色の「トランスクリプトを作成」のボタンをクリックします

![スクリーンショット 2023-11-26 8.54.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/6f944f86-1beb-27ad-202a-e02c8d549ac6.png)

リアルタイムトランスクリプションのページに移動します

このページではマイクで喋った音声をそのまま文字起こししてくれます

![スクリーンショット 2023-11-26 10.11.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/0747a381-b570-ae00-433a-68a059c16d9a.png)

まず、下の方にある「言語設定」から「言語」を「日本語、日本(ja-JP)」に変更します

続けて上の方にあるオレンジ色の「ストリーミングを開始」のボタンをクリックしてください

![スクリーンショット 2023-11-26 8.56.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/dda9a030-cd96-7fc4-e801-e410b869ab3c.png)

ブラウザがマイクの使用について許可を求めてきます（画像は Chrome の場合）

「許可をする」をクリックしてください

![スクリーンショット 2023-11-26 8.58.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/d4279adc-acae-fdd9-4330-94343549832a.png)

すると、ボタンの文字が「ストリーミングを停止」に変わります

この状態でマイクに喋ると、「トランスクリプション出力」の欄に喋った内容がリアルタイムで表示されます

![桃太郎.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/8e1d77e3-e7a5-9051-0469-2f745fff7079.gif)

喋り終わったら「ストリーミングを停止」ボタンをクリックして終了します

「完全なトランスクリプションをダウンロードする」をクリックすると、音声認識の詳細な内容が JSON という形式でダウンロードできます

```json
[
	{
		"Transcript": {
			"Results": []
		}
	},
	{
		"Transcript": {
			"Results": []
		}
	},
	{
		"Transcript": {
			"Results": []
		}
	},
	{
		"Transcript": {
			"Results": [
				{
					"Alternatives": [
						{
							"Items": [
								{
									"Content": "昔",
									"EndTime": 1.485,
									"StartTime": 1.0375,
									"Type": "pronunciation",
									"VocabularyFilterMatch": false
								}
							],
							"Transcript": "昔"
						}
					],
					"ChannelId": "ch_0",
					"EndTime": 1.485,
					"IsPartial": true,
					"ResultId": "7b59326d-dfbc-480b-84f1-242cb10e6b95",
					"StartTime": 0.67
				}
			]
		}
	},
	{
		"Transcript": {
			"Results": []
		}
	},
	{
		"Transcript": {
			"Results": [
				{
					"Alternatives": [
						{
							"Items": [
								{
									"Content": "昔",
									"EndTime": 1.5375,
									"StartTime": 1.0375,
									"Type": "pronunciation",
									"VocabularyFilterMatch": false
								}
							],
							"Transcript": "昔"
						}
					],
					"ChannelId": "ch_0",
					"EndTime": 1.685,
					"IsPartial": true,
					"ResultId": "7b59326d-dfbc-480b-84f1-242cb10e6b95",
					"StartTime": 0.67
				}
			]
		}
	},
...
```

プログラムから Amazon Transcribe を使用する場合、この JSON　をプログラムから読み込んでテキストファイルや Web ページに出力することになります

Elixir というプログラミング言語での実装例はこちら

https://qiita.com/RyoWakabayashi/items/1fc64587c9fa352935c6

## 話者のパーティショニング

複数人で喋っているとき、どの発言を誰がしたのか、聞き分けてくれます

議事録を作るときには必須の機能です

リアルタイムトランスクリプションのページで「音声設定」の「話者のパーティショニング」のトグルボタンを ON にしましょう

![スクリーンショット 2023-11-26 9.08.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/1bbfed7c-3398-2f29-949d-187e1956bf71.png)

その状態で２人以上で喋ると、喋った人毎に `Speaker01` のような ID が割り当てられて、どの発言が誰のものなのか分けてくれます

```
Speaker 01: こんにちは。 
Speaker 03: こんにちは。 
Speaker 01: 今日 は 何 曜日 です か？ 
Speaker 03: 今日 は 日曜日 です。 
```

![スクリーンショット 2023-11-26 11.04.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/24dbaf83-c1a6-e25f-d66a-365d51419558.png)

## コンテンツの削除設定

不適切な発言や個人情報などを自動的にマスキングしてくれる（隠してくれる）機能です

ただし、サポートしている言語が限定されています

2023年11月現在、英語しかサポートされていません

https://docs.aws.amazon.com/transcribe/latest/dg/supported-languages.html

「言語」を「英語、米国(en-US)」に設定します

![スクリーンショット 2023-11-26 11.08.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/45008f3a-7c78-d8c4-e452-0068fcd72809.png)

「PIIの識別とマスキング」のトグルボタンを ON にして、「PII検出対応を選択」で「識別とマスキング」を選択します

![スクリーンショット 2023-11-26 9.39.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/33c86920-97f7-7fa4-9e45-32cbff37e31e.png)

この先が成功するかは英語の発音にかかっています

`My name is Jhon Smith` （マイネーム イズ ジョン スミス） と喋ってみましょう

:::note info
日本人の名前は英語として認識してくれない可能性が高いため、ジョン・スミスにしています
:::

実行結果は以下のようになり、個人情報がマスキングされていることがわかります

```
My name is [NAME].
```

## 録音ファイルからの文字起こし

左メニューから「トランスクリプションジョブ」をクリックし、録音した音声ファイルからの文字起こしも可能です

https://ap-northeast-1.console.aws.amazon.com/transcribe/home?region=ap-northeast-1#jobs

![スクリーンショット 2023-11-26 11.26.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/0d849ade-9144-29c3-f3ee-7639cb0876a5.png)

その場合、 S3 という AWS 上のストレージサービス（ファイルの保管場所）に置いてあるファイルを読み込み、結果を S3 に出力します

![スクリーンショット 2023-11-26 11.27.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/1e29e074-6a77-306a-3a41-e113c108895c.png)

## まとめ

Amazon Transcribe を使って音声の文字起こしができました

喋っている人物の識別や個人情報のマスキングなどを活用すれば、様々な応用も可能ですね