やりたいこと
Dify からAWS Transcribeを呼び出して議事録(音声ファイル)から文字起こししたい
前提
- 既にEC2にdifyをセルフホスティングしてAWS Bedrockを呼び出ししている。
- 既にEC2に直接Bedrockのアクセスロールを付与している
手順
1. まずはDifyプラグインでAWS Toolsを追加
2. Difyのワークフローを作成
開始ノードはテキスト型の[audio_input]を読み込む
今回は、テストのためtranscribeのテスト用音声ファイルをURLで指定するためテキスト型にしています
3. Transcribeノードを追加
video or and file url for transcribeに入力フィールドのテキストを設定
s3 bucket name はバケット名のみ入力
4. EC2にS3アクセス権を追加するためアクセスポリシーを作成
Transcribeは指定したS3バケットに文字起こしした結果を書き込む仕様のようなので、Difyを実行しているEC2にS3のアクセス権が必要
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
your-bucket-name の部分は適宜置き換え
5. 作成したポリシーをEC2のRoleにアタッチ
4.で作成したS3のアクセスポリシーと「AmazonTranscribeFullAccess」をEC2のロールにアタッチする
6. 終了ノード
TranscribeASRのtextを出力
7. 完成したワークフロー
8. テスト実行
audio_input はサンプル音声ファイルを指定
https://github.com/aws-samples/dify-aws-tool/raw/refs/heads/main/notebook/transcribe/transcribe_test.mp3
Languageを"ja-JP"固定にしているのに英語の音声を読み込ませているため
「もう急に。」などと出ているが、それでも精度はかなり高い