このページの本文へ

前へ 1 2 3 4 次へ

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

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

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

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

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

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

4.3.5. For eachコネクタの設定

For eachコネクタの設定

 検索窓で「制御」と検索し、For each コネクタを選択します。コネクタ名の右端の「・・・」をクリックし「設定」をクリック。

For eachコネクタの設定

 「コンカレンシー制御」をオンにして、並列処理の次数を「1」に設定後、完了ボタンをクリックします。この部分の設定ができていないと、うまく実行されないことがあるので注意してください。

For eachコネクタの設定

 For eachコネクタの出力選択は、「JSONの解析」から動的コンテンツを「本文」を選択します。以降のコネクタ(6~9)は全て、このFor eachコネクタの中に入るようにします。

4.3.6. HTTPコネクタの設定

 音声テキスト変換で出力された結果を表示できるようにしていきます。

HTTPコネクタ(GET)の設定

 方法は「GET」を選択、URIは「JSONの解析」から動的コンテンツを「channel_0」を選択します。

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

 出力される結果は content-TypeがJSONではないため、このままではLogic Appsで利用できません。Logic Appsで扱える形式になるように、base64ToString変数を使用してデータ変換します。

JSONの解析コネクタの設定

  1. コンテンツ:変数を使用します。「式」を選択し、以下の内容をコピペします。図中の青の矢印になりますが、「HTTP」の部分は前の処理のHTTPコネクタの名前に合わせます。例えば「HTTP2」という表示になっていた場合は表記を変更してください
  2. 
    base64ToString(string(body('HTTP').$content)) 
    
  3. 以下の内容をコピペします。
  4. 
    {
         "properties": {
              "AudioFileResults": {
                   "items": {
                        "properties": {
                             "AudioFileName": {
                                 "type": "string"
                             },
                             "SegmentResults": {
                                 "items": {
                                     "properties": {
                                         "Duration": {
                                             "type": "integer"
                                         },
                                         "NBest": {
                                             "items": {
                                                  "properties": {
                                                       "Confidence": {
                                                           "type": "number"
                                                       },
                                                       "Display": {
                                                           "type": "string"
                                                       },
                                                       "ITN": {
                                                           "type": "string"
                                                       },
                                                       "Lexical": {
                                                           "type": "string"
                                                       },
                                                       "MaskedITN": {
                                                           "type": "string"
                                                       },
                                                       "Words": {}
                                                  },
                                                  "type": "object"
                                             },
                                             "type": "array"
                                        },
                                        "Offset": {
                                          "type": "integer"
                                        },
                                        "RecognitionStatus": {
                                            "type": "string"
                                        }
                                   },
                                  "type": "object"
                              },
                              "type": "array"
                          }
                      },
                      "type": "object"
                  },
                  "type": "array"
             }
         },
         "type": "object"
    }
    

4.3.8. 音声テキスト変換結果を出力する

音声テキスト変換の結果

 音声テキスト変換結果を見ると、このような状態です。

For eachコネクタの設定

 「NBest」の配列内にある「Display」を後続のアクションに利用したいので、For eachコネクタを利用して取り出します。今回はSlackに結果を出力するように設定しました。

4.3.9. HTTPコネクタの設定(Delete)

HTTPコネクタの設定(Delete)

 最後に「Delete」処理用のHTTPコネクタを設定します。今回利用するAPIは実行すると結果が残る仕様のため、都度削除する必要があるためです。

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

  1. 方法:「DELETE」を選択します。
  2. URI:以下の内容をコピペします。下記入力後、最後の部分に動的コンテンツの「id」を追加します。
  3. 
    https://westus.cris.ai/api/speechtotext/v2.0/transcriptions/
    
  4. Content-Type:「application/json」と入力します。
  5. Ocp-Apim-Subscription-Key:上記のHTTPコネクタで利用したものと同じ内容を入力します。

実行結果

 実際にLINEから「ボイスメッセージ」を送信してみます。

Slackへの出力結果

 このような形で、音声をテキスト変換することができます。

 Speech to text は日本語にも対応しているので、精度は良い方では?と感じました。英語では7割~8割の精度のようです。また、トリガーの箇所にも記載しましたが、今回はポーリングトリガーを使用しているワークフローがあるので、利用しないときは無効化するなどしてください。

最後に

 コネクタとして提供されていないサービスも、APIが提供されていれば今回のように工夫することで Logic Apps でも利用することが可能な場合があります。音声テキスト変換、ぜひ色々試してみてください!

参考URL

前へ 1 2 3 4 次へ

カテゴリートップへ

この連載の記事