Amazon Transcribe がリアルタイム文字起こしの語彙フィルタリングをサポートしました

記事タイトルとURLをコピーする

はじめに

こんにちは、技術1課の山中です。 今日は中本の蒙古タンメンをデリバリーで頼んでみたのですが、とても辛くてかなりテンションが下がっています。 ※味は美味しいのですが、辛いのが苦手なことを失念しておりました。

というのはさておき! 今回はこのアップデートについて見ていきます!

Amazon Transcribe がリアルタイムの文字起こしの語彙フィルタリングのサポートを開始

Amazon Transcribe

Amazon Transcribe (以下、 Transcribe) は、音声をテキストに変換する AWS の音声認識サービスです。 保存された音声ファイルだけでなく、リアルタイム変換にも対応しています。

語彙フィルタリング

Transcribe を利用して文字起こしする場合、事前に登録しておいた単語を特定し、フィルタリングしてくれます。 これまでは、保存された音声ファイルに対して実行するジョブ (バッチ処理) でのフィルタリングにのみ対応していましたが、今回のアップデートでリアルタイムの文字起こし (リアルタイム処理) でも利用できるようになりました。 また、バッチ処理とリアルタイム処理では以下の点で違いがあります。

フィルタリングされた単語の処理 バッチ処理 リアルタイム処理
3 つのアスタリスク *** に置き換える (マスキング)
削除する
タグ付けする

リアルタイム処理では特定の単語に対してタグ付ができるため、ユーザの特性に合わせて見せる、見せないなど文字起こし結果のカスタマイズが柔軟に可能です。 ※ 大人のユーザにはそのまま見せて、未成年のユーザにはマスキングする

対応言語

2020年5月現在、リアルタイム文字起こしに対応している言語は以下のとおりです。

  • Australian English (en-AU)
  • British English (en-GB)
  • US English (en-US)
  • French (fr-FR)
  • Canadian French (fr-CA)
  • US Spanish (es-US)

ただし、 API ではなくマネジメントコンソール上で実行する場合は、 US English (en-US) 及び US Spanish (es-US) のみ選択可能でした。

How Amazon Transcribe Works - Amazon Transcribe

対応リージョン

Amazon Transcribe ストリーミングサービスが利用できるすべてのリージョンで利用可能です。 対応リージョンの明確なドキュメントは探しても見当たらなかったのですが、マネジメントコンソールで確認したところ以下リージョンは対応していました。

  • バージニア北部
  • オハイオ
  • オレゴン
  • シドニー
  • カナダ
  • アイルランド

料金

リアルタイム文字起こしの語彙フィルタリングは追加料金なしでご利用いただきます。

試してみる

早速リアルタイム文字起こしの語彙フィルタリングを試してみましょう。 今回は バージニア北部 リージョンにて試してみます。

語彙フィルターファイルの作成

フィルタリング対象の単語を指定するためのファイルを作成します。 今回は以下の内容を samplewords.txt として作成しておきました。

hyper
super

語彙フィルターの作成

作成したテキストファイルを取り込み、語彙フィルターを作成します。 マネジメントコンソールで Transcribe にアクセスし、左ペインから Vocabulary filtering を選択します。

Create vocabulary filter ボタンをクリックします。

Nameにフィルタ名を入力し、 Language は English, US (en-US) を選択します。 また、 Choose File から先ほど用意したテキストファイル samplewords.txt を指定して、 Create vocabulary filter ボタンをクリックします。

これで語彙フィルターの作成は完了です。

リアルタイムストリームの設定

続いて左ペインから Real-time transcription を選択し、リアルタイムストリームの設定を行っていきます。

Additional settings を展開し、 Vocabulary filtering をオンにします。

Filter selection で作成した語彙フィルター sample-vf を選ぶとリアルタイムストリームに対応する 3 つのメソッドが表示されます。

Mask vocabulary を指定すると、フィルタリングされた単語はアスタリスクでマスクされます。 Remove vocabulary を指定すると、フィルタリングされた単語は削除されます。 Tag vocabulary を指定すると、指定した単語にタグ付けされます。 今回は、一番イメージが湧きづらいタグ付を試してみたいので、 Tag vocabulary を選択しておきます。

リアルタイムストリームの開始

準備が完了したので、音声を入力していきましょう。 今回はお試しということで、以下を読み上げます。

We are a Cloud integrator, who provides hyper integration businesses and services specialized for AWS (Amazon Web Services). In 2009, we started AWS integration businesses. In 2014, we became 1st Japanese company to acquire Managed Service Provider Competency in AWS Partner Network ("APN"). In addition, we were elected to become APN Premium Consulting Partner, which is a highest tier consulting partner for AWS, and we became well-known company that is continuously making super advanced efforts in this field.

Start streaming ボタンをクリックすると音声の入力待ちになります。

ボタンをクリック

音声を入力し、 Stop streaming ボタンをクリック

フィルターに登録した、 hypersuper が検出されて斜線になっていることがわかります。

Download full transcript ボタンをクリックし、文字起こし結果をダウンロードしてみましょう。

ダウンロードした json ファイルを開いてみると VocabularyFilterMatch の項目が hypersuperだけ true となっていることがわかります。 ※ 69 行目および 112 行目

[
    {
        "Transcript": {
            "Results": []
        }
    },
… (中略) …
    {
        "Transcript": {
            "Results": [
                {
                    "Alternatives": [
                        {
                            "Items": [
                                {
                                    "Content": "We",
                                    "EndTime": 5.14,
                                    "StartTime": 5.11,
                                    "Type": "pronunciation",
                                    "VocabularyFilterMatch": false
                                },
                                {
                                    "Content": "are",
                                    "EndTime": 5.32,
                                    "StartTime": 5.15,
                                    "Type": "pronunciation",
                                    "VocabularyFilterMatch": false
                                },
                                {
                                    "Content": "cloud",
                                    "EndTime": 5.68,
                                    "StartTime": 5.33,
                                    "Type": "pronunciation",
                                    "VocabularyFilterMatch": false
                                },
                                {
                                    "Content": "into",
                                    "EndTime": 5.88,
                                    "StartTime": 5.69,
                                    "Type": "pronunciation",
                                    "VocabularyFilterMatch": false
                                },
                                {
                                    "Content": "greater",
                                    "EndTime": 6.24,
                                    "StartTime": 5.89,
                                    "Type": "pronunciation",
                                    "VocabularyFilterMatch": false
                                },
                                {
                                    "Content": "who",
                                    "EndTime": 6.64,
                                    "StartTime": 6.47,
                                    "Type": "pronunciation",
                                    "VocabularyFilterMatch": false
                                },
                                {
                                    "Content": "provides",
                                    "EndTime": 7.1,
                                    "StartTime": 6.65,
                                    "Type": "pronunciation",
                                    "VocabularyFilterMatch": false
                                },
                                {
                                    "Content": "hyper",
                                    "EndTime": 7.46,
                                    "StartTime": 7.11,
                                    "Type": "pronunciation",
                                    "VocabularyFilterMatch": true
                                },
                                {
                                    "Content": "into",
                                    "EndTime": 7.68,
                                    "StartTime": 7.47,
                                    "Type": "pronunciation",
                                    "VocabularyFilterMatch": false
                                }
                            ],
                            "Transcript": "We are cloud into greater who provides hyper into"
                        }
                    ],
                    "EndTime": 7.72,
                    "IsPartial": true,
                    "ResultId": "aee77e53-ee01-41f1-86b0-047626d02d93",
                    "StartTime": 5.11
                }
            ]
        }
    },
… (中略) …
    {
        "Transcript": {
            "Results": [
                {
                    "Alternatives": [
                        {
                            "Items": [
                                {
… (中略) …
                                {
                                    "Content": "making",
                                    "EndTime": 38.33,
                                    "StartTime": 38.01,
                                    "Type": "pronunciation",
                                    "VocabularyFilterMatch": false
                                },
                                {
                                    "Content": "super",
                                    "EndTime": 38.66,
                                    "StartTime": 38.34,
                                    "Type": "pronunciation",
                                    "VocabularyFilterMatch": true
                                },
                                {
                                    "Content": "advanced",
                                    "EndTime": 39.16,
                                    "StartTime": 38.67,
                                    "Type": "pronunciation",
                                    "VocabularyFilterMatch": false
                                },
                                {
                                    "Content": ".",
                                    "EndTime": 39.16,
                                    "StartTime": 39.16,
                                    "Type": "punctuation",
                                    "VocabularyFilterMatch": false
                                }
                            ],
                            "Transcript": "And we became well known companies that is continuously making super advanced."
                        }
                    ],
                    "EndTime": 39.2,
                    "IsPartial": true,
                    "ResultId": "4e664e13-ebb9-470b-8602-87557645efc9",
                    "StartTime": 35.39
                }
            ]
        }
    },
… (中略) …
]

きちんとフィルターが機能していることがわかりました!!

おわりに

Transcribe の語彙フィルタリングがリアルタイムストリームに対応したことで、これまでよりももっと柔軟に文字起こしが実現できそうです。

また、この内容は 2020/5/27(水) 12:00 よりYouTube Liveで配信する「30分でわかる AWS UPDATE!」で取り上げますますので、是非ご覧ください! https://youtu.be/5T80jQwSHwI

参考