LoginSignup
0
0

Amazon Forecastによるビットコインの価格予測を自動化してみた

Posted at

こんにちは、2z(Twitter: @2zn01 )です。

趣味でWebサービスの個人開発をしており、以下のサービスを開発・運営しています!

■AIメーカー
https://aimaker.io/

■ツイレポ
https://twirepo.com/

今回作ったもの

Amazon.com で10年以上取り組んできた時系列データの予測技術がAWS上で「Amazon Forecast」としてサービス化されたので、これを使ってビットコインの価格予測を自動化し、Web上で見られるようにしました。

以下のURLよりご確認頂けます。

■URL
https://aimaker.io/forecast/

「Amazon Forecast」は、モデルの再構築と検証、アルゴリズムの選定などの一連の流れを自動で行うことができ、正確な時系列予測が行えるとありますので、どこまでの精度が出るのか、興味があり、作ってみました。


使用技術

Linux

クラウドのホスティングはAmazon Web Services(AWS)で、EC2でサーバを立てています。
サーバのOSは Amazon Linux2を使っています。

Apache

webサーバはApacheを使っています。
Nginxもありますが、Apacheは普段から使っており、設定も把握していたため、いつも通りの安定の選択としました。

MySQL

データベースはMySQLを使用しています。

PHP

Webサーバ側のプログラムはPHPを使って実装しました。

Python

ビットコインの価格データをとってきて加工する箇所はPythonで作りました。

Amazon Forecast

cron

ビットコインの価格データの取得、Amazon Forecastでのモデルの学習・推論を
cronで一日一回実行するようにしています。

文字起こしの仕組み

モジコ-文字起こしの仕組み.png

画像ファイルから文字起こし

  • Google Compute Engine(サーバ)
  • Google Cloud Storage(ストレージ)
  • Google Cloud Vision API(画像認識)

Google Compute Engine上に立ち上げたサーバからアップロードされた画像ファイルをGoogle Cloud Storage(GCS)上へアップした上で、Google Cloud Vision APIにGCS上の画像URIを送信し、文字起こしされた結果を受け取っています。

音声ファイルから文字起こし

  • Google Compute Engine(サーバ)
  • Google Cloud Storage(ストレージ)
  • Google Cloud Speech API(Speech-to-Text/音声認識)

Google Compute Engine上に立ち上げたサーバからアップロードされた音声ファイルをGoogle Cloud Storage(GCS)上へアップした上で、Google Cloud Speech APIにGCS上の音声URIを送信し、文字起こしされた結果を受け取っています。

動画ファイルから文字起こし

  • Google Compute Engine(サーバ)
  • Google Cloud Storage(ストレージ)
  • Google Cloud Speech API(Speech-to-Text/音声認識)
  • ffmpeg(動画→音声の変換)

Google Compute Engine上に立ち上げたサーバからアップロードされた動画ファイルをffmpegを使って音声ファイルへ変換し、Google Cloud Storage(GCS)上へアップした上で、Google Cloud Speech APIにGCS上の音声URIを送信し、文字起こしされた結果を受け取っています。

YouTubeから文字起こし

  • Google Compute Engine(サーバ)
  • Google Cloud Storage(ストレージ)
  • Google Cloud Speech API(Speech-to-Text/音声認識)
  • ffmpeg(動画→音声の変換)

Google Compute Engine上に立ち上げたサーバで指定されたYouTubeの動画をダウンロードしてffmpegを使って音声ファイルへ変換し、Google Cloud Storage(GCS)上へアップした上で、Google Cloud Speech APIにGCS上の音声URIを送信し、文字起こしされた結果を受け取っています。

有料課金の導入

文字起こしではAPIの利用費がかかってしまうため、100円分までは無料で使えるようにしましたが、それを超える場合はやむなく有料課金にしました。

有料課金は以下のサービスを利用しています。

LINE Payでの課金は以下の流れになります。

img_linepay.jpg

「モジコ」のLINE上では以下のような形で出しています。

モジコ-ペイメント.png

なお、Stripeは最低利用金額は日本円で50円からだったため、合計金額が50円に達した場合のみ利用できるようにしました。

LINE BotとLINE Payの課金導線はスムーズなため、LINE Botのマネタイズ化にすごく相性が良いと思います!


ちなみに、LINE Payを本番で利用するには、加盟店加入申請が必要です。

LINE Payの加盟店申請の際は、個人事業主の場合は以下の書類を用意します。

<事業者証明書>
以下のいずれか
 ・国税・地方税の領収書または納税証明書
 ・個人事業開業届出書(控):税務署受付印が押印されたもの
 ・確定申告書(控):直近の税務署受付印が押印されたもの
 ・青色申告承認申請書(控):税務署受付印が押印されたもの
 ・個人事業開始申告書(控):都道府県税事務所や市区町村役場の受付印が押印されたもの

<本人確認書類>
以下のいずれか
 ・運転免許証:変更事項があれば裏面含みます。
 ・健康保険証:表裏必要です。

<商品・サービス説明資料(任意)>
必須ではありませんが、審査を円滑に進めるには提出した方が無難です。
僕の場合はサービスの概要資料とあわせて、どのようにLINE Payを導入・利用するかを示した資料を提出しました。


僕の場合は個人事業主として申請し、3週間ほどで審査が完了し、利用できるようになりました。

LINE Bot化で工夫(苦労)したところ、など

処理時間が長い場合の対処

文字起こしの処理時間は画像の場合は数秒で終わるため、すぐに応答メッセージ(message/reply)を返すことができました。
しかし、音声や動画の場合は再生時間の1/4程度の時間が文字起こしにかかるため、一旦応答メッセージ(message/reply)で変換待ちである旨を返すようにし、文字起こしの進捗を確認できるようにしました。

モジコ-変換待ち.png

そして、文字起こしがすべて完了した後にプッシュメッセージ(message/push)で文字起こし結果を返すようにしました。

なお、プッシュメッセージはフリープランの場合は月に1000通までのため、注意が必要です。

line-messaging-plan.png

僕はLINE Botの開発とは、いかに応答メッセージ(message/reply)で済ませるかが勝負だと思っています。

今回もなるべくLINE Botは応答メッセージ(message/reply)で済ませたいところでしたが、ユーザビリティも考えて、苦肉の策でプッシュメッセージ(message/push)を使用しています。

LINEのファイルアップロード上限

LINEでは明確なファイルサイズの上限が見当たらず、10MBを超えるような大きなファイルサイズだとアップロード中にロード中のまま止まってしまうことがありました。
(なぜかグループで追加した場合はアップロードできるようでしたが、、)

また、動画ファイルは5分以内でなければならず、それを超える場合は動画を5分以内に切り取らざるを得ませんでした。

そのため、苦肉の策として、別途アップロードするためのアップローダー画面を用意することにしました。

モジコ-アップローダー.png

LINEでのファイルの取り扱い

LINEからアップロードされたファイルは、画像はjpg、音声はm4a、動画はmp4に変換されるようです。
APIからファイル(コンテンツ)を取得する際にはその点に注意する必要がありました。

サービス紹介動画の制作

今回はサービス紹介動画を作成しました。
以下のURLより見ることができます。

・文字起こしAIコンシェルジュ「モジコ」
https://www.youtube.com/watch?v=zof9OH9BOxE

この動画は「Canva」というデザイングラフィックツールのWebサービスを活用して作りました。

「Canva」は基本的に画像を作成するツールですが、Canva Proの有料版だとスライドを作るとそれをイイ感じにアニメーションとして出力することができます。
出力したアニメーションを組み合わせて動画として作成しました。

最後に

苦肉の策を講じながらも、何とかサービスをリリースすることができました。
このサービスに少しでも興味をもって頂けましたら、ぜひフォローやいいね、リツイートで応援お願いします!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0