たくのろじぃのメモ部屋

プログラミング関係や数学などの内容を備忘録として残すブログ。プログラミングはC#を中心に書いています。

Azure上に ASP.NET Core アプリをデプロイする方法

ASP.NET Core アプリを作成したのはいいのですが、Webサーバを自分で用意するのは大変なので、クラウドサービスを利用することにしました。大変な部分はサーバを安定して運用していくためにメンテナンスが必要だったり、セキュリティ対策をしっかりする必要があったりです。あと初期費用や運用費用も考えると個人でやるには敷居が高い気もします。

そこで今回は Azure のサービスを利用して自分の作成したWebアプリを公開していけるようにします。

1. ASP.NET Core アプリを作る

まずはWebアプリを作っていきます。Visual Studioを立ち上げて「新しいプロジェクトの作成」を選択し、検索欄にASPと入れれば候補が出てきます。

f:id:takunology:20200326122122p:plain

青で表示されたフレームワークを使用して作成していきます。テンプレートはMVC(モデルビューコントローラ)でいいと思います。自分の作りたいように作りましょう。

f:id:takunology:20200326122319p:plain

ちなみに自分が作ったものはこんな感じになりました。

f:id:takunology:20200326122900p:plain

しかしこのままではローカルホストからしか接続できないので、公開できるような形にしていきます。

2. Azure Webアプリのリソース作成

Webページが作成できたらWebサーバを立ち上げます。まずは Azure のホーム画面から「リソースの作成」を選択し、「Webアプリ」を選択します。入力画面が表示されるので、色々記入していきます。ちなみに自分は学生なので Azure for Students のサブスクリプションが使用でき、料金は発生しませんでした。学生以外の人は料金が発生するのでしょうか...?

f:id:takunology:20200326123458p:plain

ここで、インスタンスの名前はURL名になります。また、ランタイムスタックはWebアプリの環境に合わせましょう。今回は ASP.NET Core なので、.NET Core 3.1 を選択します。ちなみにバージョンが 3.1 でアプリが 3.0 であっても問題なく動作しています。
記入内容を確認した後、確定するとデプロイ進行中の表示がでます。

f:id:takunology:20200326124117p:plain

作成には少し時間がかかるのでしばらく待ちます。

f:id:takunology:20200326124352p:plain

こんな画面になればデプロイ完了です。あとはここに自分の作成した Web アプリをデプロイするだけですね。「リソースへ移動」をクリックして次の作業を行います。

3. GitHubと連携してデプロイする

普通は仮想マシン上に Apache やら nginx やらの環境を整えて、そこにリバースプロキシを設定した上で ASP.NET Core のデプロイを行うところですが、そんな作業は必要ないです。

なんと、Github のアカウントを持っていれば連携ができます!
まずは GitHub に Web アプリのリポジトリを作っておきましょう。その中に作成したWebアプリをプッシュしておきます。ちなみにリポジトリはプライベートでも問題ないですが、アクセス許可が必要です。

GitHubでの作業が終わったら再び Azure のリソース画面に戻り、「デプロイセンター」を選択します。

f:id:takunology:20200326131702j:plain

ソース管理は GitHub を選択します。ログインしてアクセスを許可します。

f:id:takunology:20200326131758p:plain

ビルドプロバイダーは App Service のビルドサービスを選択します。

f:id:takunology:20200326132104p:plain

構成ではリポジトリの参照を行うので、先ほどアップロードした Web アプリのリポジトリを選びます。もし、表示されない人はページの更新を試してみてください。もしかするとリンクを反映するのに多少時間がかかっていると思います。あとは概要を確認して設定完了です!

4. Webページへアクセスしてみる

GitHubでのデプロイは少し時間がかかるので待ちましょう。ちなみにデプロイが完了しているかは、デプロイセンターで確認でき、「成功」という表記があればデプロイ完了です。

f:id:takunology:20200326133143p:plain

Azure では インスタンスの名前.azurewebsites.net というURLが割り振られますので、ここにアクセスしてみます。私の場合はこんな感じになりました。

takunology.azurewebsites.net

アクセス履歴やトラフィック等のモニタリングはリソースの「概要」から見ることができます!便利ですね!

f:id:takunology:20200326132825p:plain

5. Webページ更新したいんだけど...

可能です。まずは更新したWebページを GitHub にプッシュします。再びデプロイセンターを開き、「同期」をクリックすると更新したブランチとの同期をとり、Webページも更新されます。

f:id:takunology:20200326133504p:plain

ステータスが保留になっていますが、しばらくすれば「成功」と表示されるはずです。

おわりに

Azure の Webアプリって便利だと思いました。GitHubと連携しておけば、更新するたびに自動でWebページも新しくなるので楽できますね。加えてサーバメンテも必要ないので個人で利用するには良いと思います。あと、Webアプリの勉強をしている学生は無料で使えるのでオススメです。

ちなみに、「たくのろじぃの自習室」はこのまま運用を続けます。ブログだけでなく、Webアプリの勉強もしながら色々な情報発信ができていければと思います。今のところ特に内容が無いので、これからコツコツ作っていきます。一応プログラミングと理学系の分野をまとめていくつもりです。

AIきりたんの凄さと将来

最近何かと話題なAIですが、私はその中でも「AIきりたん」について取り上げたいと思います。

AIきりたん

AIきりたんはニューラルネットワークの技術を用いたボーカロイドです。詳しくはこちらのページに書かれています。

n3utrino.work

ソフトウェアは無料で公開されており、誰でも入手できます。使用するためには Music Score というソフトで音符をつけていき、そのファイルを読み込ませることでボーカルボイスデータを出力します。あとはこのデータを楽曲と合わせれば曲として作ることができます。

何がすごいのか

まず、人間に近い声で違和感がないところです。ボカロ(例えば初音ミク)と言えば、伸ばす音で抑揚がないために音程が一定すぎてロボットっぽく聞こえてしまったり、高音域で独特のシャリシャリ音があったり、音程が変わるところで切れ目を感じたりとあります。これを解決するために調教師さんたちが頑張って人間の声に近づけていたわけです。

しかし、このAIきりたんは人間の手は必要なく、ニューラルネットワークを用いて最適なパラメータを割り当てるようです。残念ながらオープンソースではないのでどのような仕組みでチューニングされているのかまでは分かりません。

歌声を学習するの大変そう...

歌声の学習は結構難しいのではないかと思います。そもそも歌声は時間によって刻刻と変化します。これをそのまま扱うと膨大なデータになってしまいます。これをフーリエ変換して時間から周波数へと変換することで、複雑なデータを周波数成分ごとに分けることができます。加えて時間という連続データから周波数という離散データに変換できるので扱いやすくなりますね。これをどう扱うかがミソになりますが...。

入力データが周波数の数の分だけあり、その分ニューロンを用意したとすれば膨大な数ですね。ただ、すべての周波数成分をサンプリングする必要はなく、多少省いても人間の耳に違和感を感じなければ問題ないと思います。特に高音域は周波数が高いので間を省いても、別の周波数が一瞬にして通過すると考えれば違和感を感じる間もなく耳に入りますね。

公式サイトには「推定」と書いてあるのですが、これは歌詞を学習するときの手法で、元の声の部分は教師なし学習クラスタリングしているのではないかと思います。もし教師あり学習だとすると音すべてをラベリングするのは大変そうですね...。

そんなことより体験して!

いろいろ語ってしまいましたが、とにかく聞いてみるのが一番です!
私の中で最も人間に近い歌い方をしているなと思ったのを選んでみました。

まずは夏祭りです。

www.youtube.com

そしてさくらんぼ。

www.youtube.com

どうですか?AIと言われないと人間が歌っているとしか思えないほどのクオリティですよね。

ボカロの歴史

ボカロと言えば「初音ミク」だと思います。実際、原点にして頂点ですからね...。

製作したのはヤマハです。当初は大学との共同研究でプロジェクトが進められており、日本で製品として発売されたのは2004年です。このとき発売されたのは初音ミクではなくMEIKOというボカロです。初音ミクは2007年に発売されました。

歌手ではなく機械に歌わせるということでオリジナルの歌詞、曲にのせることが可能となり、個人作曲者自身が歌わなくてよくなりました。ここから個人作曲者たちの活躍の場が広がります。例を挙げると米津玄師さんは元々「ハチ」という名前でボカロを使用した楽曲を動画にアップしていました。当時はニコニコ動画が全盛期でランキング上位はほぼボカロだったほどです。

ボカロの進化はさらに続き、何度も改良がなされ、現在では人間の声に近いほどになってきています。また、ライブをはじめ様々なイベントやグッズも登場し、キャラクターとしても人気が出ています。特に3Dホログラムのようなライブ演出は未来を思わせるほどのクオリティだと思います。

現在の「歌ってみた」や「踊ってみた」などの~してみた系はボカロから派生したといわれています。また、VTuberの3Dモデリングや音声変換ソフト、ボイスロイドなんかもボカロをもとにしているものがあるくらいです。それだけボカロが与えた影響は大きいのです。

そして、2020年の今、AIきりたんが新たなブームを巻き起こすと思います。例えば「歌ってみた」が「歌わせてみた」になり、「踊ってみた」が「踊らせてみた」となり、再び黄金時代を迎える可能性もあります。

未来の予想

これだけ歌を人間に近づけられるならばダンスも行けますね。また、画像処理による顔合成で新しいアイドルまで誕生しているくらいですから、3Dモデルにそのアイドル画像のレンダリングも違和感なく行えれば仮想空間で生きるバーチャルアイドルを作ることも可能でしょう。

ちなみに顔合成がどれほどすごいかこれを見れば分かります。

www.youtube.com

現在のバーチャルアイドルは完全にバーチャルではないです。声は本物だったり、ダンスはモーショントラッキングだったりと、現実を仮想に落とし込んでいます。これを1からすべて仮想で用意するプロジェクトなんかも始まりそうですね。

で、完全なバーチャルアイドルの理想像はソードアートオンラインで登場したユナですね。

f:id:takunology:20200325151021p:plain

歌って踊れるようなバーチャルアイドルを作るにはこの3つがあればできそうだと思います。というかあと1, 2年あれば作れそうな気もしますが...。

  • AIきりたんのような人間に近い歌声の生成
  • 踊ってみた系動画から学習したダンスの創作
  • 3Dモデリングレンダリング技術の向上と自動化

ここに喋れるようにしたいなら Siri や Cortana のような音声会話サービスを搭載すればできそうですね。

おわりに

少し話が逸れましたが、とにかくAIきりたんは凄いボカロです。この技術を応用すればアイドルになれるという例を紹介しましたが、他にも応用はできますね。この先どのように変化していくか楽しみです。