AIを使った自動マスタリングAPIを無料で使ってみよう！

## 概要

[音圧爆上げくん](https://bakuage.com)をご存知ですか？
マスタリングが苦手なアーティスト向けの、自動マスタリングサービスです。
AIを使った自動マスタリングをブラウザから行うことができます。

音圧爆上げくんは、
**自動マスタリング機能をオープンAPIとして無料公開しています**。
今回は、Rubyを使って、APIの使い方をご紹介します。
LinuxかMacを想定しています。

※ この記事の情報は、2018/11/20時点の情報です。最新の情報と異なる場合があります
※ 一部、有料の機能もあります。

## 音圧爆上げくんとは？

### 概要

音声の自動マスタリングサービスです。
ワンタッチで音質を整え音圧を上げられます。

以下、詳細資料です。

[仕組みについて](https://docs.google.com/presentation/d/1jTFN68IvaqcyufC-0QzBvzIZzBXtGMB5R63UANIpyxE/edit?usp=sharing)
[Pitch deck](https://docs.google.com/presentation/d/1JyRJwWi-lI5itRvvX5JHl3m0lK4Cd9nrBxPdc1vcRxs/edit?usp=sharing)

### 料金

2分以下の音源は全て無料です。
2分より長い音源は月に一回まで無料です。

詳細はこちらをご覧ください。
https://bakuage.com/pricing_feature/

### 歴史

- 2012 大学で基礎となる研究
- 2015 研究を実用的なものにブラッシュアップ
- 2015 音圧爆上げくんリリース
- 2018/01 有料版リリース
- 2018/07 [AI Mastering](https://aimastering.com)リリース (海外向けにブランド名を変更したもの)

## AI Masteringとは？

[AI Mastering](https://aimastering.com)は、音圧爆上げくんのブランド名を海外向けに変更したものです。
バックエンドのサーバーは音圧爆上げくんと同じです。
APIのドメイン名など、プログラムから扱う名前は全てaimasteringに統一しています。

## 準備

### 音圧爆上げくんに無料登録する

[音圧爆上げくん](https://bakuage.com)にアクセスし、右上のログインボタンから登録してください。登録は無料です。

### APIアクセストークンをコピー

[音圧爆上げくん - 開発者向けページ](https://bakuage.com/developer)にアクセスし、APIアクセストークンをコピーしておいてください。

## とりあえずAPIを叩いてみる

今回は、Rubyで使い方をご紹介します。

### サンプルリポジトリをクローン

以下のコマンドで、[サンプルリポジトリ](https://github.com/ai-mastering/tutorial-ruby)をクローンし、セットアップしてください。

```bash
# リポジトリをクローン
git clone git@github.com:ai-mastering/tutorial-ruby.git

# セットアップ
cd tutorial-ruby
bundle install
```

### APIアクセストークンを設定

以下のコマンドで、アクセストークンを設定してください。

```bash
export AIMASTERING_ACCESS_TOKEN=[さきほどコピーしたアクセストークン]
```

### APIでマスタリング実行

以下のコマンドでサンプルを実行します。
詳細はmastering.jsを見てみてください。

```bash
# test.wavをマスタリングし、結果をoutput.wavとして出力する
bundle exec ruby main.rb --input test.wav --output output.wav
```

output.wavを音楽プレイヤーで聴いてみてください。

## 解説

### API仕様書

Open(Swagger) API Specificationを利用して、API仕様書を書いています。
SwaggerHubや[swagger-codegen](https://github.com/swagger-api/swagger-codegen)で、各言語のAPIクライアントを自動生成することが可能です。

仕様書

- [Open API Specification (json)](https://aimastering.com/api/api_spec.json)
- [SwaggerHub](https://app.swaggerhub.com/apis/aimastering/aimastering)

### 処理の流れ

1. 音源をアップロードし、Audioを作成する
2. 作成したAudioを入力音源として指定し、Masteringを作成する
3. Masteringの完了(status == succeeded)を待つ
4. Masteringに紐づいている出力音源(Audio)をダウンロードする

### リソース

#### Audio

一個の音源を表します。マスタリングの入力音源や出力音源は、Audioリソースです。
アップロードやダウンロードをすることが可能です。

#### Mastering

一回のマスタリング処理を表します。
入力音源と設定を指定し作成後、しばらく待つと、処理が完了し出力音源が作成されます。

## 各言語のAPIクライアントとチュートリアル一覧

|言語|APIクライアント|チュートリアル|
|:-:|:-:|:-:|
|C++|-|-|
|C#|-|-|
|Curl|-|-|
|Golang|[Github](https://rubygems.org/gems/aimastering-go)|[Github](https://github.com/ai-mastering/tutorial-go)|
|Java|-|-|
|Javascript|[npm](https://www.npmjs.com/package/aimastering)| [Node](https://github.com/ai-mastering/tutorial-node) |
|PHP|-|-|
|Ruby|[Gem](https://rubygems.org/gems/aimastering)|[Github](https://github.com/ai-mastering/tutorial-ruby)|
|Scala|-|-|
|TypeScript|-|-|

※ 空になっている言語は準備中です。

## ご意見&ご要望

この言語を優先して欲しいなど、
何かご要望があれば、 
bakuagekun@gmail.com または [Twitter @bakuagecom](https://twitter.com/bakuagecom)から、
お気軽にご連絡ください。

## 自社サービスに組み込みたい！

### 方法1: API

この資料でご説明した方法です。
もっともかんたんに組み込めます。

### 方法2: 実行バイナリ

APIではなく、実行バイナリ/DLL配布 + ライセンシングという形もご用意しています。混雑具合やネットワークの影響を受けないので、安定性が高くなります。
料金、アーキテクチャ、安定性、パフォーマンス、サービスへの組み込みサポートなど、柔軟に対応させてください。

Linux/Mac/Windows 全て対応可能です。

ご相談だけでも結構ですので、
bakuagekun@gmail.com または [Twitter @bakuagecom](https://twitter.com/bakuagecom)から、お気軽にご連絡ください。