ほんとのところ
GoogleHome使って、SSMLで歌を歌わせようとしていていたのですが。。。
- Amazon Pollyでピッチを適当にしたSSMLで音声生成
- ピッチ推定からの音程推定を、FFTとか何かしらの方法で行う
- FFTだけでは足りない、自己相関関数あたりを併用するらしい
- pitchfinder(仕組みはYIN?)
- REAPER
- SPTK
- WORLD
- 推定結果からピッチを調整して再度生成
- 推定と調整を繰り返す
- 出来上がったSSMLをGoogleHomeにぶん投げる
全然間に合わなかった
ということで
サイトを作成する必要があったので、
全部サーバレスで作るとしたらどのへんのサービス使うか考えたときのメモです
- 要件
- ログイン機能がある
- ネット上のデータの定期的な収集がある
- ユーザがファイルを上げた時に非同期で変換処理する
- 各種データを一覧でページングする
- APIで提供も行う
- サイトの公開場所
ログイン機能
-
Amazon Cognito
- User Pools
- ID Poolを使うとAWSサービスに直接アクセスできる一時的なAWS認証情報を取得可能
- Amazon Cognito フェデレーテッドアイデンティティ
IAMでユーザロールを変更することも出来るので
API等も作成せずに、直接DynamoDBのリードオンリーのロールを与えてリソースに直接アクセス等もあり
処理
- AWS Lambda
- S3、DynamoDB、Kinesis、SNS、CloudWatchからのイベントで起動させる
- 作成、変更、削除など
- AWS Step Functionsをつかえば、処理のフロー構築も可能
- 100ms単位で課金
- 稼働時間の上限(タイムリミット)指定可能、最大5分
S3にファイルアップ→イベント伝搬→Lambdaでファイル処理
- AWS Batch
- 定期的な処理
- ログ集計とか
データの永続化
-
Amazon DynamoDB
- NoSQL, KVS
RDSを使ったほうがいいパタンもあるが殆どの場合、DynamoDBで行けそうな気がする
定期実行
- AWS Lambda
- CloudWatchのスケジュール起動からのイベントで起動させる
- 最小単位1分
- 秒単位で稼働させるには、独自実装必要
API
-
Amazon API Gateway
- 処理部分はAWS Lambdaにつなげる
公開
価格
無料枠は考えずに
-
Amazon Cognito
- 月間アクティブユーザー(MAU)で従量課金
- 0.00550USD/MAU
- 10000ユーザで55USD(月間)
-
Amazon DynamoDB
- 0.000742USD/WCU 1時間当たり 1秒1回書き込み
- 0.0001484USD/RCU 1時間当たり 1秒1回読み込み
- 書き込みも読み込みも5ユニット(初期設定)の場合
- (0.000742+0.0001484)2430*5 = 3.2USD(月間)
-
AWS Lambda
-
0.0000002USD/Request
-
0.000000208USD/128MB100ms
-
一ヶ月動かしっぱなし
- (0.0000002602430)+(0.0000002081060602430) = 5.4USD(月間)
-
Amazon API Gateway
- 4.25USD/100万Request
- 0.14USD/GB 転送量
-
Amazon S3
- 保存容量 0.025USD/GB
- 転送量 0.140USD/GB
マイクロインスタンスの方が安い場合があるけれども
サーバ管理なしに完全マネージドのメリットは大きいかと思います