このページの本文へ

松本典子の「Azure Logic Apps」超入門 ~AI編~ 第4回

Microsoft Cognitive Servicesの「Speech to text」をノンコーディングで使う

音声認識AIを使ってLINEのボイスメッセージをテキスト変換してみよう

2019年04月26日 12時30分更新

文● 松本典子 編集 ● 羽野/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

4.2.3. 「BLOBの作成」コネクタの設定

 検索窓で「BLOB」と検索し「BLOBの作成」を選択します。

BLOBの作成

 「2.1. Azure Blob Srotage の新規作成」で作成したBLOB Storage名を選択して「作成」ボタンをクリック。

BLOBの作成

 図のように設定していきます。「BLOB名」の部分は、グローバルに一意の文字列(GUID)を生成する「guid」変数を使用します。

guid変数の設定

  1. 「BLOB名」にカーソルがあるのを確認し、「式」をクリック。
  2. 「guid()」と入力します。
  3. OKボタンをクリック。

 以上の手順で「BLOB名」部分に変数を入力できます。「BLOBコンテンツ」部分は、動的コンテンツの「HTTP」の「本文」を選択します(※動的コンテンツが表示されていない場合は「もっと見る」をクリックしてみてください)、

 これで「1:as-speech2text-store」の作成は以上です。

4.3. 「2:as-speech2text」を作成する

as-speech2textの全体図

 次に、LINE から送られたボイスメッセージを変換するワークフローを作成します。

4.3.1. Azure Logic Appsのトリガーの作成

トリガーの作成

 今回はトリガーに「BLOBが追加または変更されたとき」コネクタを使用します。先程作成したワークフローでBLOBにボイスメッセージが格納されると実行するワークフローです。

 項目中の「間隔」の部分ですが、このトリガーはポーリングトリガー(決められたスケジュールで実行)なので、時間を短く設定すると頻繁にトリガー部分の実行が起こり、費用がかかります(BLOBにファイルが格納されていない場合はトリガーの起動のみ。以降のアクションは全てスキップ処理)。適宜変更するか、ワークフローを無効化してください。

4.3.2. HTTPコネクタの設定(POST)

HTTPコネクタの設定(POST)

 検索窓で「HTTP」と検索し、HTTPコネクタを選択します(便宜上、図中では名前を「HTTP - Speech to text(POST)と表記」)。

  1. 方法:「POST」を選択します。
  2. URI:以下の内容をコピペします。
  3. 
    https://westus.cris.ai/api/speechtotext/v2.0/transcriptions 
    
  4. Content-Type:「application/json」と入力します。
  5. Ocp-Apim-Subscription-Key:「# 3.1 Azure ポータルからSpeech to textを作成」で作成したSpeech To textの「key」を入力します。
  6. 本文:以下の内容をコピペします。下記URIの表記のうち「ファイルの一覧Path」の文字を削除し、動的コンテンツの「ファイルの一覧Path」に置き換えてください。
  7. 
    {
       "description": "Speech to textの書き起こし",
       "locale": "ja-JP",
       "models": [],
       "name": "Transcription using locale ja-JP",
       "properties": {
         "ProfanityFilterMode": "Masked",
         "PunctuationMode": "DictatedAndAutomatic"
       },
       "recordingsUrl": "https://speech2textstore.blob.core.windows.net[ファイルの一覧Path]"
    }
    

4.3.3. HTTPコネクタの設定(GET)

HTTPコネクタの設定(GET)

 検索窓で「HTTP」と検索し、HTTPコネクタを選択します(便宜上、図中では名前を「HTTP - Speech to text(GET)と表記」)。

  1. 方法:「GET」を選択します。
  2. URI:以下の内容をコピペします。
  3. 
    https://westus.cris.ai/api/speechtotext/v2.0/transcriptions
    
  4. Content-Type:「application/json」と入力します。
  5. Ocp-Apim-Subscription-Key:上記のHTTPコネクタ(POST)と同じ内容を入力します。

4.3.4. JSONの解析コネクタの設定

JSONの解析コネクタの設定

 検索窓で「データ操作」と検索し、「JSONの解析」をクリック。

  1. コンテンツ:前の処理の「HTTP(GET)」、動的コンテンツの「本文」を選択します。
  2. スキーマー:以下の内容をコピペします。
  3. 
    {
         "items": {
              "properties": {
                   "createdDateTime": {
                       "type": "string"
                   },
                   "description": {
                       "type": "string"
                   },
                   "id": {
                        "type": "string"
                   },
                   "lastActionDateTime": {
                       "type": "string"
                   },
                   "locale": {
                       "type": "string"
                   },
                   "models": {
                        "items": {
                             "properties": {
    "createdDateTime": {
                                            "type": "string"
                                  },
                                  "datasets": {
                                      "type": "array"
                                  },
                                  "description": {
                                      "type": "string"
                                  },
                                  "id": {
                                      "type": "string"
                                  },
                                  "lastActionDateTime": {
                                      "type": "string"
    },
                                  "locale": {
                                            "type": "string"
                                  },
                                   "modelKind": {
                                       "type": "string"
                                   },
                                   "name": {
                                       "type": "string"
                                   },
                                   "properties": {
    "properties": {
                                            "Purpose": {
                                               "type": "string"
                                          }
                                     },
                                      "type": "object"
                                 },
                                      "status": {
    "type": "string"
                                      }
                                },
                                "type": "object"
                            },
                            "type": "array"
                      },
    "name": {
                          "type": "string"
                      },
                      "properties": {
                            "properties": {
                                "Duration": {
                                    "type": "string"
                                },
                                "ProfanityFilterMode": {
                                    "type": "string"
                                },
                                "PunctuationMode": {
                                    "type": "string"
                                }
                          },
                          "type": "object"
                      },
                      "recordingsUrl": {
                          "type": "string"
    },
                      "resultsUrls": {
                          "properties": {
                              "channel_0": {
                                  "type": "string"
                              }
                          },
                          "type": "object"
                    },
                    "status": {
                            "type": "string"
    },
                    "statusMessage": {
                        "type": "string"
                    }
                },
                "type": "object"
          },
          "type": "array"
    }
    

 ここまででSpeech to text APIを利用し、ボイスメッセージをテキスト変換する処理を行っています。以降は変換後のデータを利用できる形に加工していきます。

カテゴリートップへ

この連載の記事