Amazon Transcribeを試してみる

# Amazon Transcribeとは
音声を文字起こししてくれるツール。
コンソール画面でマイクをONにして音声入力を始めるか、音声ファイルをアップロードする。

# 調べるきっかけ
今まで議事録の文字起こしに Google Document の音声入力機能とか使って「だめだこりゃ」と諦めてきた。
音声アップロードしたら文字起こししてくれるツールないかな、むしろなんで無いんだ…ぐらいに思っていた。
まさかAWSにあったなんて…

ということで、簡単に使い勝手や精度を試してみる。
特に記載のない限り、以下に引用する画像はAWS公式サイトか、AWSコンソールから。

# リアルタイムで音声入力してみる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117440/beb4a8b6-15bf-b669-4698-a16bfce20d2d.png)

いろんな言語に対応している（実際のコンソール画面では、画像より多くの言語に対応）。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117440/c5058365-573b-4e97-e1cd-948b79b40ca1.png)

翻訳精度を改善するための設定が色々ある。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117440/dba3266f-9843-f207-0a90-f21c79b58225.png)

たくさんあるのでちょっと時間が足りず試しきれない。

# Vocabulary filtering を試す
Vocabulary filtering は、フィルタリングに指定したキーワードが文字起こし中に現れたら削除するか、「***」のように変換される機能。

Filterの設定は、別途 Create vocabulary filter のページで行うらしい。
(https://docs.aws.amazon.com/ja_jp/transcribe/latest/dg/vocabulary-filtering.html?icmpid=docs_console_unmapped)。

Vocabulary filtersのページにいって、 Create vocabulary filterを押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117440/e877db3d-78d1-8412-023d-9aa643e851fe.png)


フィルタリングするキーワードのソースはテキストファイルをアップするか、S3から引っ張るかする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117440/95e55456-c3fc-8f12-61b8-9732b2a8d4ff.png)

今回はフィルタリングのキーワードを入れたテキストファイルを直接アップしてみよう。

Macを使ってるので、Terminalからサンプルのファイルをつくる。
どういうフォーマットでテキストファイル作ったらいいかわからなかったので以下の動画を参考にした。
https://www.youtube.com/watch?v=TcpSqbr0FnI

下のような感じでテキストベタ打ちでいいらしい。ファイルの形式は txt か csv。
> わたし
> あなた

Mac使って何年経ってるのかわからないけど未だにGUIベースでテキストファイルの作り方がわからない。
とりあえずTerminalからechoでテキストファイルをつくる。「わたし」という言葉をフィルタリング対象にしてみる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117440/7a1a578d-3d92-e5ab-e18c-9ccda45b9a21.png)

アップロードする。拡張子がついてないと、エラーで怒られる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117440/8670bd0d-d075-8f2a-ddfb-1c92e4e73333.png)

ちゃんとcsvつけたやつをアップして登録した。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117440/c82c1b18-1cf1-76af-8098-3c5f2166e51b.png)

Transcribeのページにいって、翻訳のオプションから登録したフィルターを設定する。
フィルタ登録時の言語の設定にあわせてないとフィルタが出てこないので注意。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117440/95bd2972-5f48-d806-5b52-43adb1d20996.png)

例えば違う言語（English (en-US））を選んだら、フィルタが出てこない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117440/007109a2-bd08-f3a1-216f-a88f62bf790e.png)

適用したフィルタに引っかかったら「***」するか、消すか、予めタグづけしといたキーワードに置き換えるかなど選べるらしい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117440/4541d47e-a3a8-5d0a-1174-43399dcf1957.png)

タグ付けのサンプルは[公式ドキュメント](https://docs.aws.amazon.com/ja_jp/transcribe/latest/dg/vocabulary-filtering.html)に記載あり。今回は試さない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117440/dacc783d-7775-f2b0-110d-4f6384d3afac.png)


喋ってみる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117440/94b81624-a6f6-2b0b-2022-a3ef9a8dca89.png)

漢字で認識してだめだった…

漢字の「私」を登録し直して再挑戦。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117440/0d44caf0-0503-3aa5-1f62-88c4caadb604.png)

うまくいった。


# 料金
毎月最初の60分は無料。15秒未満は15秒としてカウント。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117440/a504c35e-83a6-5243-7669-0b67c54b9ae9.png)

[公式サイト](https://aws.amazon.com/jp/transcribe/pricing/?nc1=h_ls)いわく、最初の25万分(4,166時間）は $0.024/分 らしい。円にすると 3.12 円/分（記事作成時）。
仕事上、120 分ぐらいの議事録を作ることがある。Amazon Transcribeを使えば 375 円で文字起こししてくれる。
安すぎて吹き出す。

カスタム言語（CLM)を使ったCLM Batchと CLM Streamingは料金体系がちょっと違う（もっと安い）。
いや、CLMってなんじゃい…ってのは[公式サイトの告知](https://aws.amazon.com/jp/about-aws/whats-new/2020/08/amazon-transcribe-launches-custom-language-models/#:~:text=CLM%20%E3%81%AF%E3%80%81%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%8C%E6%97%A2%E3%81%AB,%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E3%81%A0%E3%81%91%E3%81%A7%E3%81%99%E3%80%82)に記載あり。

# おわりに

Amazon Transcribeは各所でのレビューを見ると文字起こしとして十分な性能があると思う。
音声ファイルのアップロードでも行ってくれるらしいので、リアルタイムである必要はない。
今後はプライベートでも使ってみたいと思う。