2017年8月18日金曜日

【Microsoft Azure】空耳で気になる曲を Azure Media Analytics で解析してみよう(Python3編)

Azure Media Analytics は、メディアサービスが提供する分析機能です。
https://docs.microsoft.com/ja-jp/azure/media-services/media-services-analytics-overview

さんざんいろんな人が試してるとは思いますが、もちろんWindowsは使わない方向で考えて、Pythonで以下のライブラリを使ってみました。

amspy
https://github.com/msleal/amspy

試したところ、Python3で動作し、REST API をラップしているようです。

では、まずはUbuntuへの導入方法を。

最初にライブラリを導入するための、Python3用setuptoolsとpipをaptでインストールします。

$ sudo apt install python3-pip python3-setuptools

次に、pipを最新版にして、ストレージに接続するための Azure SDK for Python をインストールします。

$ sudo pip3 install —upgrade pip
$ sudo pip3 install azure

githubより、amspyをクローンしてインストールします。

$ git clone https://github.com/msleal/amspy.git
$ cd amspy
$ sudo python3 setup.py install

次は、exampleを使って、Indexer v2 を使って解析する準備をします。
ポータルよりメディアサービスのアカウントキーとストレージのアカウントキーよりアクセス情報を確認して設定ファイルに保存します。

$ cd amspy/example
$ vi config.json

設定ファイルの中身はこのように設定します。
{
   "accountName": "メディアサービスのアカウント名",
   "accountKey": "メディアサービスの主キー",
   "sto_accountName": "ストレージ アカウント名",
   "sto_accountKey": "ストレージのキー",
   "logName": "log/indexer.txt",
   "logLevel": "DEBUG",
   "purgeLog": "Yes"
}

Indexer v2 のサンプルを設定します。

$ cd analytics/indexer_v2
$ vi indexerv2.json

今回は空耳なので、設定ファイルのLanguageを日本語(jaJP)にします。

{
  "version":"1.0",
  "Features":
    [
       {
       "Options": {
            "Formats":["WebVtt","ttml"],
            "Language":"jaJP",
            "Type":"RecoOptions"
       },
       "Type":"SpReco"
    }]
}

なお、空耳ということで今回は独断と偏見で Prince の Batdance にしました。
https://youtu.be/0wbtLYPTCug

さて、農協牛乳はどうなるのでしょうか?(再生時間で5:14のあたり)
本当はボーカルトラックだけ抜き出してやりたいところですが、大変なのでそのまま楽曲を解析します。

ファイルを置いて、プログラムを多少変更します。

$ mv /home/xxx/Batdance.mp3 .
$ vi indexer_v2.py

プログラムは、76行目を読み込むファイル名、ファイルの相対パスに変更します。

VIDEO_NAME = "Batdance.mp3"
VIDEO_PATH = "./Batdance.mp3"

また、最終行に以下の2行を追加すると、メディアサービスで使ったストレージを自動的に削除するのでお財布に優しいです。

response = amspy.delete_media_asset(access_token, asset_id)
response = amspy.delete_media_asset(access_token, output_asset_id)

では実行します。結果は、同じディレクトリのoutput以下に保存されます。

$ python3 indexer_v2.py
$ cat output/Batdance_aud_SpReco.vtt

中身をみてみましょう。

WEBVTT

00:00:03.200 --> 00:00:05.070
王への愛*にいる

00:00:06.150 --> 00:00:12.010
アプリ

00:00:47.350 --> 00:00:49.510
H 島

00:00:50.330 --> 00:00:53.360
H

00:01:05.540 --> 00:01:09.900
Pro キッズ店

00:01:24.720 --> 00:01:27.480
V

00:01:32.670 --> 00:01:35.350
アプリ

00:01:38.810 --> 00:01:40.070
V

00:02:42.860 --> 00:02:44.280
アピタ

00:02:45.800 --> 00:02:51.990
V

00:02:52.540 --> 00:02:54.520
V

00:03:04.500 --> 00:03:05.250
そうね

00:03:06.740 --> 00:03:10.640
ハイト保証ですからねやってるからな

00:03:11.400 --> 00:03:21.570
Z

00:03:27.170 --> 00:03:30.280
このパスタ

00:03:31.150 --> 00:03:43.680
プレステ零

00:03:46.660 --> 00:03:49.000
V

00:03:50.010 --> 00:03:51.450
果実は行くってなんです

00:03:53.010 --> 00:03:57.610
Pro

00:04:21.250 --> 00:04:26.050
ステージ v だよね

00:04:27.090 --> 00:04:29.480
V

00:04:30.610 --> 00:04:32.380
ええ

00:04:42.630 --> 00:04:45.360
で

00:04:53.890 --> 00:04:54.910
見つめるます

00:05:03.130 --> 00:05:04.170
V

00:05:06.740 --> 00:05:08.130
作品

00:05:53.780 --> 00:05:57.410
V

00:06:06.770 --> 00:06:08.020
V

00:06:09.110 --> 00:06:13.890
プラチナメンバー

農協牛乳はありませんでしたが、さらに謎な言葉が並んでいます...




(2017.08.19追記)
ついでに手元にあったコンテスト用のGetWildのボーカルトラックを解析してみたら、こんなことになってました。

00:00:00.090 --> 00:00:06.530
あぁスパルタは大変大きいり続けんだ
上がらんくらい army 発信いる犬系るんだ

00:00:07.360 --> 00:00:13.680
シンプルな種類に意味じゃなきゃ野生でも明日に怯えて言ってあげよう

00:00:14.780 --> 00:00:26.440
撃ち合点はまあペンはサーバーありサイン誰からのために行きらんだえるなら一
アーチは今まあちょいはサーバーある人に何も

00:00:27.360 --> 00:00:30.360
時間は食うわない

00:00:32.940 --> 00:00:59.270
ジャムはじゃあきっと売り電話解けない愛の parser ウォーターにて客はじゃあ
買うのマーチで優しいスターに甘えていたクーガーないがてっちゃんせんがけんいだけが
守られるものがどこかにあんうるさてっちゃんせんが一人でも傷ついた

00:00:59.310 --> 00:01:02.020
あ有名を取り戻すやを




1 件のコメント:

Unknown さんのコメント...

This was truly awesome. thanks so much for this!! Azure Online Training