Synthetic Station

saken649 / イチカベサケンの音楽とプログラミングのブログ。それ以外もあるかも。

プリ☆チャン Remix やってみた!

ユメご無沙汰しております。saken649 です。
すっかりここのブログを放置してしまいました。
プリッカソン Advent Calendar 2019 の 20 日目として参加するにあたり、約 1 年ぶりに帰ってきました。
1 日遅刻しました。ユメごめんなさい。

昨日は ダンディ(閣下)@ステキな4コマ さんの 【Adbentar企画】私とアニメ プリパラ【ネタバレあり】 - ステキな4コマ でした。

前書き

去年もこの Advent Calendar 参加させて頂いてて、こんな記事を書いていました。

syn-station.hatenablog.com

syn-station.hatenablog.com

今年もプリッカソン Advent Calendar に参加します!と宣言したはいいものの、現在参画してる案件が絶賛炎上中で終電生活の身。私この案件どころか会社ごと今月中に辞めるんだけどな?
可作業時間も限られているので、お蔵入りにしていたネタを引っ張り出してくることにしました。

すっかり音楽活動とはご無沙汰ですが、これでも以前は作曲とかやってた人間なので、エンジニアネタが多いこの Advent Calendar に音楽方面で攻め込んでみることにします。

それではお聴きください。

キラッとプリ☆チャン」より、桃山みらいちゃんのキャラソンを Remix した「ワン・ツー・スウィーツ (Kiratto☆Mirai Bass Style)」です。


【プリ☆チャン Remix やってみた!】ワン・ツー・スウィーツ (Kiratto☆Mirai Bass Style)

流行りの Future Bass ではありません。桃山みらいちゃんなので Mirai Bass です。*1
プリ☆チャン曲の Future Bass な Remix を Mirai Bass と呼ぶの、せっかくなので流行って欲しいですね。
音楽やっててプリ☆チャン見てる人は、全員一度は作って欲しい。

2019 年初頭くらいに作って、ずっとお蔵入りにしてましたが、陽の目を見ることが出来て良かったです。
夜な夜な気になったところは直しましたが(結果、時間掛かってしまい、遅刻の理由に…)

はやまるの声が良過ぎて、作っててとても幸せでした。
作ってる過程で、何度もはやまるの声が聴き返せるの最高。

ちょっとだけ解説

音楽界隈って、エンジニアと逆で、作った曲の手の内を明かすことって割と無いような気がしています (観測範囲内では)
が、せっかくの Advent Calendar なので、ちょっとだけいろいろ書いてみようと思います。
音楽やってない人でもなるべく分かるように、解説交えながら。

使用機材とか

こんな感じの機材を使っています。

音楽制作ソフト

DAW = Digital Audio Workstation って呼ばれるヤツです。
Steinberg Cubase Pro 10Mac で使ってます。
これまで 3 つくらい他の DAW を渡り歩いてきましたが、Cubase に行き着いて 5 年近く使い続けてます。

Cubase Pro 10

シンセサイザー

シンセサイザーとは、波形を重ねたり、合成したりして音作りをする電子楽器のことです。
この曲だとこの辺使ってます。

サンプラー

サンプラーとは、WAV ファイルや、AIFF ファイルといった音声ファイルを読み込んで鳴らす楽器です。

  • Native Instruments Battery4
    • ドラムパート用。素材はいろんなコレクションから寄せ集めてきました。
  • Steinberg Groove Agent SE
    • 林鼓子さん (以下、はやまる) の声を適当な単位で切り刻んで、コレに読み込んでます。間奏で大活躍。

間奏について

カットアップという手法を用いています。
はやまるの声を適当な単位で切り刻んで、良い感じになるまで、ひたすら並び替えて作ったものです。
かつ、ところどころで音程調節をしたり、音を左右に振ったりしてます。
はやまるの声が良過ぎて、声を切り刻むのが楽しかった記憶。
はやまる、マジミラクルボイス

ボーカル素材の抜き出し方

歌入りトラックに、オフボーカルのトラックを逆位相 *2 にして重ねて鳴らすと、ボーカルを差分として取り出すことが出来ます。
市販のボーカル抽出ソフトとか使うより、キレイに抜けます。

ボーカルの有無で、トータルで行う処理の掛かり方が変わるので、100% 声だけの抽出は無理です。
若干元の伴奏が残りますが、オケに混ぜちゃえば気にならないくらいです。

ただし、曲始まりのタイミングがサンプル単位でズレてることが大半なので、波形を見ながら細かくタイミングを合わせないと、キレイに抜けてくれないので注意です。

せっかくなので

さらに昔に作った「キラッとスタート(Kiratto☆Emo-i MiraiBass Style)」も合わせてお聴きください。シングル発売されて間もない頃に作ったやつです。


キラッとスタート(Kiratto☆Emo-i MiraiBass Style)【プリ☆チャンRemixやってみた!】

最後に

プリ☆チャン 3rd シーズン決定おめでとうございます!!!

次の 21 日目は、 nagait84 さんの「AWS ECSでプリズムの煌めきを感じたい」です。

*1:そうなんだ。

*2:音の波形が、上下逆さまになった状態。ある音に対して逆位相な音を重ねると、互いに打ち消しあって音が消えます。この原理を応用しているのがノイズキャンセリングです。

夢川ゆいのユメ語録を再現してみる続編、Webアプリ化しました

1月も半ばになってしまいましたが、明けましておめでとうございます。
saken649です。
2019年も、どうぞよろしくお願い致します。

12/22に、プリッカソン Advent Calendar 2018の一環として、このような記事を書きました。 syn-station.hatenablog.com

その時に、形態素解析を用いて、アイドルタイムプリパラの夢川ゆいちゃんの独特な喋り方をプログラムで再現する試みをしたはいいものの、Webアプリ化が間に合わず、中途半端な状態になっていました。
リベンジではないですが、Webアプリ化が完了しましたので、公開します。

◯Webアプリ本体 yumegen.herokuapp.com

※朝にアクセスすると見れない可能性があります

GitHub github.com

使い方

何か文言を入れて「ゆめかわっ!」ボタンを押下すると、 ゆめかわになって返ってくる 、というものです。
…もう少しちゃんと言うと、アイドルタイムプリパラの夢川ゆいちゃんの独特な喋り方を再現するべく、特定の言葉の前に「ユメ」を付けて返します。
「夢川ゆいはかわいい」→「夢川ゆいはユメかわいい」といった感じです。

ブラウザからだけでなく、外部からの呼び出し可能なAPIとしても使えます。

詳細は先述の記事「形態素解析を用いて、夢川ゆいのユメ語録を再現してみる試み」をご覧ください。

使用言語など

  • Nuxt.js
    • Vuetify.js
  • Node.js v11.5.0
  • MeCab v0.996
  • Docker

概要

ざくっとやったことを書いていきます。

yumegen-apiの整備

形態素解析を用いて、夢川ゆいのユメ語録を再現してみる試み - Synthetic Station で適当にAPI的なものを作っていましたが、ExpressのAPIとしてちゃんと整備しました。
https://github.com/saken649/yumegen/blob/master/server/yumegen.js

名付けて yumegen-api 。POSTで叩ける単独のAPIとしても使用可能です。外部アプリからでもユメ使ってあげてください。
需要があるのかは知りません。

$ curl -X POST \
  https://yumegen.herokuapp.com/api \
  -H 'Content-Type: application/json' \
  -d '{
    "text": "夢川ゆいはかわいい"
}'

Response

{
    "text":"夢川ゆいはユメかわいい"
}

yumegen-feを作成

Webアプリ化するにあたり、フロントエンドも簡易的にですが作りました。
せっかくなので、この程度のアプリには大仰過ぎますが、Nuxt.js + Expressで作りました。
CSSのFWも、これまた大仰ですが、Vuetify.jsを採用しました。

あまりに小規模過ぎて、Nuxt.jsならではの機能などはほとんど活用出来ていませんが、有名どころのCSS FWがテンプレから選べるのは、下準備の手間が省けて意外と助かりました。

結果的にyumegen-apiが、単独でAPIとしても使えるようになったので結果オーライですが、Nuxt.jsでなくても、Vue.jsのままでも規模的には問題無いと思います。

Heroku Hosting with Docker

固定のURLが欲しかったので、アレコレ考えてHerokuでホスティングすることにしました。
このちょっとしたアプリのためにAWS EC2でホスティングしてドメインや固定IP取るか。。。?というと微妙だったので。

普通のNode.jsのアプリであればHerokuにデプロイするのは、そう難しくない(はずな)のですが、今回はMeCabをインストールしないといけない、という問題がありました。
Heroku上に直接MeCabをインストールすることは出来ないので、MeCabをインストールしたLinuxコンテナを丸ごとDockerイメージ化して、それをデプロイすることにしました。
https://github.com/saken649/yumegen/blob/master/docker/Dockerfile

なんでAlpine Linuxとか使わないで、よりにもよってAmazon Linuxなのか、というと、単純にRedHat系以外のLinuxに慣れていないからです。。
普通にCentOSで良くね感はあるのですが、そこは 気分で 。それで良いのか。
MeCabがちゃんと動くか、というかそもそも楽にインストールが出来るのか、の検証が取れれば、Alpine Linuxに移し替えるのは十分アリですね。

Herokuのアプリは何もしないでおくと、すぐsleepに入ってしまってアプリの立ち上がりが遅くなる、という問題がありますが、以下の記事を参考にして、sleepしないようにしてあります。
qiita.com

ただ、無料版の限界で、朝は落ちてます。これは許容範囲ですね。
(そういえばsleep中のエラーページの設定してませんでした)

複数アプリをsleep対策した上で公開しようとすると無料枠足りなさそうですが、とりあえずでやるにはちょうど良さそうです。

結構ハマりどころが多かったのですが、それについてはまた後日別記事で。
いざ書いてみたら、文量が多くなり始めたので。。

ひとまずは、yumegen-feを使ってあげてください。

形態素解析を用いて、夢川ゆいのユメ語録を再現してみる試み

ユメークリスマス。saken649です。
プリッカソン Advent Calendar 2018の22日目です。

プリッカソンのアドベントカレンダー記事2つ目となりました。
7日目にプリパラ ULTRA MEGAMIXのレビューをやりましたので、ご興味ある方はこちらも合わせてどうぞ。

syn-station.hatenablog.com

また2018年のアドベントカレンダーとしては3つ目の記事となります。
先日会社のアドベントカレンダーに参加させて頂いて、こんな記事を書いてましたので、ご興味ある方はこちらも合わせてどうぞ。

qiita.com

今回は、技術系かつプリティーシリーズに関連する記事を書いてみます。


【やる気!元気!もくじ〜】


テーマ

テーマは「形態素解析を用いて、夢川ゆいのユメ語録を再現してみる試み」です。

毎回プリッカソンに参加させて頂くたびに、個人プロジェクトである「プリスタグラムのパクリ」を進めているのですが、今回は趣向を変えてみました。
プリスタグラムのパクリについては、いずれ改めて記事にしてみようと思います。 ずっとこればっかりやってると疲れるから、というわけではありません

本題に戻りまして。

今回は、文章を入力したら、アイドルタイムプリパラの主人公の片割れである「夢川ゆい」ちゃんのあの独特な喋り方っぽく変換して返す、というちょっとしたアプリを作ってみます。
何かと言葉の頭に「 ユメ 」を付けて喋る、アレです。
夢川ゆい (ゆめかわゆい)とは【ピクシブ百科事典】

なんで急にそんなテーマを?というと、単純に、アイドルタイムプリパラを見終えて数ヶ月経った今になって、非常にクセになってきてしまったからです(理由になっていない

How To ユメ

さて、南みれぃちゃんの「ぷり」のように、語尾に特定の言葉を付ける娘っぽくするのは、言ってしまえば語尾に「ぷり」を付ければ簡単に真似出来ます。*1
ところが、夢川ゆいちゃんの喋り方は、単純に語頭に「ユメ」を付ければいい、という簡単なものではないのが若干大変です。一例を挙げてみましょう。

「お兄ちゃんなんかユメ大嫌い!」

ユメ お兄ちゃんなんか大嫌い!」ではなく「お兄ちゃんなんか ユメ 大嫌い!」なのがポイントです。
もう一例挙げてみましょう。

「誰1人寂しかったり、悲しかったりしない、ユメハッピーでユメスマイルなプリパラ!」

「ユメ」ハッピー、「ユメ」スマイルな、となっているのがポイントです。

ここから分かることは、 「ユメ」は品詞分類上「副詞」であること です。

kotobank.jp

一例目では、「ユメ」は「大嫌い」を修飾する言葉になっています。「大嫌い」という言葉は品詞としては形容動詞に該当します。

もう一例では、「ハッピー」と「スマイルな」を修飾しています。「ハッピー」は、幸せである様、なので品詞はやはり形容動詞。
「スマイル」は単独だと名詞になってしまいますが、ここでは「プリパラ」という名詞を修飾する「スマイルな」という形で使われていることを考えると、形容詞に分類するのが正しいと思われます。

例が少ないのでこれだけで言い切るのは無理があるかもですが、形容動詞や形容詞を修飾する品詞って何よ、と考えると「副詞」として考えるのが妥当であると考えます。

つまり、夢川ゆいちゃんのあの喋り方を再現するためには、最低限 「動詞・形容動詞・形容詞の前に『ユメ』を差し込む」 ことが必要になります。

というわけで、それをプログラムで再現してみます。

やってみた

品詞分類

プログラム的に品詞分類を行うためには、形態素解析というものを行えば良さそうです。

形態素解析 - Wikipedia

形態素解析エンジンにはいくつか種類があるようですが、とりあえずいろいろ調べてみてよく名前を見かけた「MeCab」を使用してみることにしました。
Node.jsから呼び出して使えるのも有り難い。

言語類

以下の環境で、まずは文章をユメ変換する「ユメAPI」を作ってみます。

linqを入れたのは、Node.jsでもLINQ使えないのかなーと思って調べてみたらあったので、試しに使ってみただけです。

qiita.com

インストールの方法などは割愛。
MeCab周りだけリンク貼っておきます。

github.com

書いてみた

こんな感じでまずは書いてみました。

const MeCab = new require('mecab-async')
  , mecab = new MeCab()
;
mecab.command = 'mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd/'

const express = require('express')
const app = express()
const bodyParser = require('body-parser')
const Enumerable = require('linq')

// yume convert target
const targetTypes = ['形容動詞語幹', '動詞', '形容詞', '副詞']

// init
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))

app.post('/api', (req, res) => {
  const body = req.body

  // check "text" exists
  if (body.text === undefined) {
    res.status(500).send({ msg: "'text' param is required"})
    return
  }

  // mecab process
  mecab.parse(body.text, (err, parsedList) => {
    try {
      if (err) throw err

      // yume hantei
      console.log(parsedList)
      const yumed = Enumerable.from(parsedList)
                              .select(parsed => {
                                const res = Enumerable.from(targetTypes)
                                                      .any(type => type === parsed[1] || type === parsed[2])
                                if (res) {
                                  parsed[0] = 'ユメ' + parsed[0]
                                }
                                return parsed[0]
                              })
                              .toArray()
                              .join('')
      res.send({ text: yumed })
    } catch (e) {
      res.status(500).send({ msg: 'text processing error'})
    }
  })
})

app.listen(3000, () => console.log('listen port 3000'))

3000番ポートで待ち受け、 /api にPOSTでリクエストを投げると、ユメ語変換して返すAPIです。
やってることは大したこと無く、

  • MeCab形態素解析させる
  • 解析された単位ごとに、副詞が修飾する対象(形容動詞、形容詞、副詞、動詞)であるか判定する
  • 修飾対象であれば「ユメ」を言葉の手前に足す

これだけです。

リクエストボディはJSONで、 textValueとして、変換したい文章を指定します。

$ curl -X POST \
>   http://localhost:3000/api \
>   -H 'Content-Type: application/json' \
>   -d '{
> "text": "お兄ちゃんなんか大嫌い!"
> }'
{"text":"お兄ちゃんなんかユメ大嫌い!"}

こんな感じになりました。良い感じ。
MeCabさんはこんな感じで形態素解析をしてくれています。

[ [ 'お兄ちゃん',
    '名詞',
    '固有名詞',
    '人名',
    '一般',
    '*',
    '*',
    'お兄ちゃん',
    'オニイチャン',
    'オニーチャン' ],
  [ 'なんか', '助詞', '副助詞', '*', '*', '*', '*', 'なんか', 'ナンカ', 'ナンカ' ],
  [ '大嫌い', '名詞', '形容動詞語幹', '*', '*', '*', '*', '大嫌い', 'ダイキライ', 'ダイキライ' ],
  [ '!', '記号', '一般', '*', '*', '*', '*', '!', '!', '!' ] ]

いろいろ試す

夢川ゆい語録から 「ユメ」を取り除いた文章APIに投げてみて、どこまで再現されるか試してみます。
なお、語録はアイドルタイムプリパラ キャラ感想&名セリフ集を参照させて頂きました。
U-NEXTでの配信が終わってしまったので見れないのです。おのれ。

誰1人寂しかったり、悲しかったりしない、ハッピーでスマイルなプリパラ !

期待値: 誰1人寂しかったり、悲しかったりしない、ユメハッピーでユメスマイルなプリパラ !

$ curl -X POST \
>   http://localhost:3000/api \
>   -H 'Content-Type: application/json' \
>   -d '{
> "text": "誰1人寂しかったり、悲しかったりしない、ハッピーでスマイルなプリパラ !"
> }'
{"text":"誰1人ユメ寂しかったり、ユメ悲しかったりしない、ユメハッピーでスマイルなプリパラ!"}

ユメ過剰でユメ微妙。 MeCabさんがどのように形態素解析したのかを見てみます。

[ [ '誰', '名詞', '代名詞', '一般', '*', '*', '*', '誰', 'ダレ', 'ダレ' ],
  [ '1', '名詞', '数', '*', '*', '*', '*', '1', 'イチ', 'イチ' ],
  [ '人', '名詞', '接尾', '助数詞', '*', '*', '*', '人', 'ニン', 'ニン' ],
  [ '寂しかっ',
    '形容詞',
    '自立',
    '*',
    '*',
    '形容詞・イ段',
    '連用タ接続',
    '寂しい',
    'サビシカッ',
    'サビシカッ' ],
  [ 'たり', '助詞', '並立助詞', '*', '*', '*', '*', 'たり', 'タリ', 'タリ' ],
  [ '、', '記号', '読点', '*', '*', '*', '*', '、', '、', '、' ],
  [ '悲しかっ',
    '形容詞',
    '自立',
    '*',
    '*',
    '形容詞・イ段',
    '連用タ接続',
    '悲しい',
    'カナシカッ',
    'カナシカッ' ],
  [ 'たり', '助詞', '並立助詞', '*', '*', '*', '*', 'たり', 'タリ', 'タリ' ],
  [ 'しない', '名詞', '一般', '*', '*', '*', '*', 'しない', 'シナイ', 'シナイ' ],
  [ '、', '記号', '読点', '*', '*', '*', '*', '、', '、', '、' ],
  [ 'ハッピー', '名詞', '形容動詞語幹', '*', '*', '*', '*', 'ハッピー', 'ハッピー', 'ハッピー' ],
  [ 'で', '助動詞', '*', '*', '*', '特殊・ダ', '連用形', 'だ', 'デ', 'デ' ],
  [ 'スマイル', '名詞', '一般', '*', '*', '*', '*', 'スマイル', 'スマイル', 'スマイル' ],
  [ 'な', '助動詞', '*', '*', '*', '特殊・ダ', '体言接続', 'だ', 'ナ', 'ナ' ],
  [ 'プリパラ', '名詞', '固有名詞', '一般', '*', '*', '*', 'プリパラ', 'プリパラ', 'プリパラ' ],
  [ '!', '記号', '一般', '*', '*', '*', '*', '!', '!', '!' ] ]

「寂しい」「悲しい」が形容詞なので、足されるのは当たり前ですね。これは仕方ないとして。
逆に「スマイルな」ではなく「スマイル」として解析されて、名詞扱いになっていますね。まあ、普通に考えればそうですよね。

アイドルをやめる事なんてできない!

期待値: アイドルをやめる事なんてユメできない!

$ curl -X POST \
>   http://localhost:3000/api \
>   -H 'Content-Type: application/json' \
>   -d '{
> "text": "アイドルをやめる事なんてできない!"
> }'
{"text":"アイドルをユメやめる事なんてユメできない!"}

「ユメやめる」が過剰ですが、それくらい。「やめる」も動詞ですから、これも仕方ない。解析結果は以下の通り。

[ [ 'アイドル', '名詞', '一般', '*', '*', '*', '*', 'アイドル', 'アイドル', 'アイドル' ],
  [ 'を', '助詞', '格助詞', '一般', '*', '*', '*', 'を', 'ヲ', 'ヲ' ],
  [ 'やめる', '動詞', '自立', '*', '*', '一段', '基本形', 'やめる', 'ヤメル', 'ヤメル' ],
  [ '事', '名詞', '非自立', '一般', '*', '*', '*', '事', 'コト', 'コト' ],
  [ 'なんて', '助詞', '副助詞', '*', '*', '*', '*', 'なんて', 'ナンテ', 'ナンテ' ],
  [ 'でき', '動詞', '自立', '*', '*', '一段', '未然形', 'できる', 'デキ', 'デキ' ],
  [ 'ない', '助動詞', '*', '*', '*', '特殊・ナイ', '基本形', 'ない', 'ナイ', 'ナイ' ],
  [ '!', '記号', '一般', '*', '*', '*', '*', '!', '!', '!' ] ]

らぁらがパパラ宿に来てから、ずっと一緒だったもん!

期待値: らぁらがパパラ宿に来てから、ユメずっと一緒だったもん!

$ curl -X POST \
>   http://localhost:3000/api \
>   -H 'Content-Type: application/json' \
>   -d '{
> "text": "らぁらがパパラ宿に来てから、ずっと一緒だったもん!"
> }'
{"text":"らぁらがパパラ宿にユメ来てから、ずっと一緒だったもん!"}

大外れでユメがっかり。「ずっと」は副詞のはずなので、ユメっても良いのですが。MeCabさんの解析結果は以下の通り。

[ [ 'らぁら', '名詞', '固有名詞', '人名', '一般', '*', '*', 'らぁら', 'ラァラ', 'ラァラ' ],
  [ 'が', '助詞', '格助詞', '一般', '*', '*', '*', 'が', 'ガ', 'ガ' ],
  [ 'パパラ', '名詞', '一般', '*', '*', '*', '*', '*' ],
  [ '宿', '名詞', '一般', '*', '*', '*', '*', '宿', 'ヤド', 'ヤド' ],
  [ 'に', '助詞', '格助詞', '一般', '*', '*', '*', 'に', 'ニ', 'ニ' ],
  [ '来', '動詞', '自立', '*', '*', 'カ変・来ル', '連用形', '来る', 'キ', 'キ' ],
  [ 'て', '助詞', '接続助詞', '*', '*', '*', '*', 'て', 'テ', 'テ' ],
  [ 'から', '助詞', '格助詞', '一般', '*', '*', '*', 'から', 'カラ', 'カラ' ],
  [ '、', '記号', '読点', '*', '*', '*', '*', '、', '、', '、' ],
  [ 'ずっと一緒',
    '名詞',
    '固有名詞',
    '一般',
    '*',
    '*',
    '*',
    'ずっと一緒',
    'ズットイッショ',
    'ズットイッショ' ],
  [ 'だっ', '助動詞', '*', '*', '*', '特殊・ダ', '連用タ接続', 'だ', 'ダッ', 'ダッ' ],
  [ 'た', '助動詞', '*', '*', '*', '特殊・タ', '基本形', 'た', 'タ', 'タ' ],
  [ 'もん', '助詞', '終助詞', '*', '*', '*', '*', 'もん', 'モン', 'モン' ],
  [ '!', '記号', '一般', '*', '*', '*', '*', '!', '!', '!' ] ]

「ずっと一緒」で一括りにされて名詞の扱いにされています。
「ずっと」単独であれば想定通りになるので、これはいかんとも。

$ curl -X POST \
>   http://localhost:3000/api \
>   -H 'Content-Type: application/json' \
>   -d '{
> "text": "ずっと"
> }'
{"text":"ユメずっと"}

まとめ

なんともユメ微妙な結果で終わってしまいました。
MeCab形態素解析に依存しているので、解析結果が想定通りにならないと結果が芳しくならないようです。

ユメって欲しいのにユメらなかったパターン

「ずっと」「一緒」だと思っていたのが「ずっと一緒」で一括りにされたり、「スマイルな」で解析して欲しいのに「スマイル」「な」となっていると発生するパターンです。
MeCabの解析は、いくつかの解析パターンから最適解っぽいものを出力しているようなので、公式に載っている「N-Best 解の出力」機能を併用することで、ユメるパターンを複数作ること自体は出来そうです(未検証)
ただ「スマイル」「な」を「スマイルな」と解釈した上で形容詞と見なすためには、文脈から判断しないといけないところもあるので、形態素解析でそこまで解析させるのは難しそうな気もしています。

あと、複数パターン出したところで、ではユメるパターンとしてどれが最適解か?という判断は難しそうです。 というかどれが最適解なんて誰が分かるんだ。

ユメ過剰なパターン

これはちょっと考えどころです。
というのも、元のセリフで、副詞の修飾対象でありながら、ユメったりユメらなかったりしてるのは 脚本のさじ加減 としか言えないので、その法則を割り出すのは難しそうです。

考えうる改善案

  • 複数の解析結果から、出来るだけユメらせるように結果をマージする
    • 「N-Best 解の出力」機能にて、複数の解析結果を取得
    • それぞれの結果をユメらせる
    • 複数結果から、出来るだけユメった状態になるよう、結果をマージして返す
    • ユーザー側で、よしなに「ユメ」を取り除く
  • 別の形態素解析エンジンを使用 or 併用してみる
    • 特に理由なくMeCabを使用していたため、他のエンジンを使ってみる手はある
    • ただしエンジンを変えたところで、その解析結果に依存することは変わらない
  • 機械学習を併用してみる?
    • 夢川ゆいのセリフを取り込んで学習させる
    • 学習結果を元に、ユメるかユメらないか判断させる?
    • 形態素解析結果の学習は出来るのか?

機械学習はまだ手を付けたことが無いので、全く頓珍漢なことを言っているかもしれません。
ただ、一定のルールがありつつも、さじ加減 でユメったりユメらなかったりするのを、機械学習でよしなにやってくれ、というアプローチは、アリなのかもしれません。

とりあえずで実現可能そうなのは、「複数の解析結果から、出来るだけユメらせるように結果をマージ」するパターンになりそうです。

結論、 ユメ語録を再現するのは、意外とユメ大変。

GitHub

本当はNuxt.js + ExpressなWebアプリにしたかったのですが、いざデプロイしてみたらExpressのAPIが呼び出せず、タイムアップになってしまいました。
この記事で載せているコードは、Nuxt.jsに組み込む前に単独で書いてた時のコードです。

GitHubリポジトリは一応晒しておきますので、各種ご指摘あればよろしくお願い致します。

github.com

今回公開出来なかったNuxtのフロントアプリは後日公開します。

ユメくやしい。

※2019/01/16 公開しました。

syn-station.hatenablog.com

*1:「語尾アイドルなめるんじゃないわよ」「ぷりが抜けてるぞ、ぷりが」「ぷり〜!!」

アイドルタイムプリパラ ULTRA MEGAMIX COLLECTIONのレビュー

プリッカソンAdvent Calender の7日目です。

クラブミュージック好きな女児であるところの私にとって超タイムリーなことに、11/28に「アイドルタイムプリパラ ULTRA MEGAMIX COLLECTION」が発売されたばかりなので、そのレビューでもしてみようかと思います。

アイドルタイムプリパラ ULTRA MEGAMIX COLLECTION とは

以下、長いので メガパラ と略します。誰もそんな略し方してない。

TVアニメ/筐体ゲーム「プリパラ」の楽曲を、第一線で活躍する気鋭のトラックメイカーたちがカッコいいクラブミュージックにアレンジするRemixアルバムです。プリパラでは過去に3作出ており、今作が4作目。
プリパラシリーズはアイドルタイムで 一応 終結してしまったので、今作がメガパラの最終作(になるはず)です。

こういうアニメ作品の楽曲のRemixアルバム自体は珍しくないですが、それがシリーズ化して、4作最後まで全部出し切る、というのは、なかなか気合いが入ってます。
どれだけ気合いが入ってるかというと、4作全部、クラブ仕様のExtendバージョン、つまりは CDとは微妙に展開を変えて長くしたバージョン も配信限定で発売するほど。

アルバムの後ろで数曲Extendにする、というのはよく見ますが、 全作かつ、全曲Extendは頑張り過ぎ でしょう。

全曲Extendの頑張りに応じて、私も全曲レビューしたいのですが、悪いクセが発動して文量がヤバいことになるので、以下の感じで行きます。


やる気!元気!もくじ〜


TL;DR

めっちゃ長いです。 気合入り過ぎましたごめんなさい。なので要約をおいておきます。

  • Remixアルバムとしては比較的大人しめだが、それは狙ってやってる
    • 幅広い年代に楽しんでもらえるようにした結果と推察
  • ユメPickupした曲はハズさないよ!
  • それ以外にも良い曲ユメたくさんなので、 みんな買って聴こうのゆめかわ。

全体傾向

まず、アルバムを通しての印象ですが、ブチ上がる系のパーティーチューン揃いというよりは、聴いていて気分が少し高揚するような、Remixアルバムとしては 比較的大人しめな印象 を受けます。
と思いきや、 DJ ShimamuraやDJ Norikenが爆弾を最後にブチ込んで盛り上げて終わる という、ある意味でクラブの雰囲気をそのまま体感出来るような、そんな構成にもなっているのは、地味にポイントです。

さて、 比較的大人しめな印象 と書いたのはなぜか。
例えば、同じ女児アニメコンテンツとして何かと対比されるアイカツ!のRemixアルバムと比べてみます。

のっけからEDM全開 でアゲてきます。Everybody fxxkin' jump!
他にもエッグいDubStepやTrap、kawaiiといった流行りのジャンルを押さえた、 女児を泣かせる ブチ上げ系パーティーチューンが揃ってます。

確かにそれと比べてしまうと、大人しく聴こえちゃうんですよね。さてなんででしょう。

ジャンルから紐解くメガパラ

その謎を解くために、まずは全13曲を超大雑把にジャンル分けしてみます。

  • Eurobeat
    • あっちゃこっちゃゲーム(DJ BOSS SEB Remix)
    • Miss.プリオネア(DELACTION Remix)
    • Dear My Future ~未来の自分へ~(DJ BOSS 90'S Eurobeat Remix)
    • Memorial(Y&Co. Eurobeat Remix)
  • Trance
    • ブランニュー・ハピネス!(DJ BOSS Hard Trance Remix)
    • チクタク・Magicaる・アイドルタイム!(Francisco Gaitán Remix)
  • Bass系
    • Get Over Dress-code(Blacklolita Bit Future Remix)
    • リンリン♪がぁらふぁらんど(KAZBONGO Drumstep Remix)
  • UK Hardcore
    • ハートフル♡ドリーム(DJ Noriken Hardcore Mix)
    • Believe My DREAM!(DJ Shimamura's Hardcore Rave Mix)
  • EDM
    • Giraギャラティック・タイトロープ(DJ BOSS EDM Remix)
  • Future Pop
    • GOスト♭コースター(Y&Co. Dance Mix)
  • Disco
    • 快打洗心♡カッキンBUDDY(DJ BOSS DISCO STYLE)

異論は認めます。若干ジャンル分けに困る曲があったりする。*1

こうして見ると、Eurobeatの絶対曲数は多いものの、ジャンルだけで見ると、意外とバランスの良いアルバムになってます。
ただ、モダンなジャンルであるところのEDMやBass系が少ないので、流行りモノを追っているとちょっと物足りなさを覚えるのも事実です。
このご時世にEurobeatォ?古臭くない?とドロシーのモノマネをしたくなるのが正直なところ。*2

もっともこの傾向は、今作に限った話ではなく、メガパラシリーズ通してずっとこうなので、今更感はありますが、それにしたって。

しかしプリパラ公式のことです。絶対狙ってやってます。
2つの理由があるのではないか、と私は勝手に推測しています。

1. 方向性の問題

クラブミュージックといっても、大体3つくらいに大別出来ると私は思っています。

  • 1 電子音に浸って、トリップする感覚を楽しむ音楽
    • Trance
    • Future Pop
    • (Bass系)
  • 2 思わず身体を動かしたくなる、踊りだしたくなるような音楽
  • 3 フロア全体でブチ上がって、飛び跳ねたり叫んだりするパーティー音楽
    • UK Hardcore
    • Bass系
    • EDM
    • (Trance)

この仕訳に当てはめてみると、8曲と半分以上の曲が、1か2に当てはまります。*3
半分以上がそう、ということは恐らく方向性としては、ブチ上げ系というよりは、ちょっと身体が揺れるような、軽く気分が高揚する、そういうものを目指しているのだと思われます。

確証にはなりませんが、その1つの材料として、「DJタイムプリパラ!における親子ゾーンの存在」があります。

2018年4月に開催されたプリパラのクラブイベント「DJタイムプリパラ!」は、クラブイベントでありながら日中の開催、そして 親子・女性優先ゾーン が存在していました。*4

こうしたところから考えられるのは、プリパラ公式の前提として「 幅広い年代に、楽しんでもらいたい 」というものが徹底されているということ。
そしてそれは、Remixアルバムというニッチなアイテムであっても根付いている、ということです。
そのためには、Eurobeatくらいの少しライトに、小さなお子様とかでも何となく分かりやすくノれるくらいの方が良くて、あんまりニッチでエグいのはNGなのかもしれません。
DubStepとかやったら女児が泣く。*5

2. avexの影響

プリティーシリーズ通して、音楽のプロデュースにはavexが関わっています。
avexサウンド というと、音楽に詳しくない方でも何となく電子音楽を思い浮かべる方が多いのではないでしょうか。*6
そのavexお家芸とも言えるのが、このメガパラシリーズで大半を占めている Eurobeat というジャンルです。
80〜90年代に流行ったダンスミュージックで、いわゆる「パラパラ」ってやつです。 プリパラ?

この辺avex

SUPER EUROBEAT」という、1990年にVol.1が出て、売れに売れた結果2018年12月時点で Vol.250 が出ているEurobeatのコンピレーションがあるのですが、このシリーズを仕掛けているのがavexであり、このメガパラシリーズの大半のRemixを行っている Y&Co.とDJ BOSS です。*7

頭文字Dの作中BGMや長州小力のネタで「Night of Fire」を、DA PUMPが「U.S.A」を取り上げて、定期的にブームが来ているとはいえ、世界的なEDMブームの潮流に流されてEurobeatが下火な感は否めません。
それもあってなのか、プリティーシリーズはavexの息がかかったシリーズだけに、そのRemixアルバムでお家芸であるEurobeat推しになるのは自然なのかもしれません。

ユメPickup

さて、 勝手な仮説 をガンガン立てたところで、それを踏まえて数曲ユメPickupしてレビューしてみようと思います。

Memorial(Y&Co. Eurobeat Remix)

Eurobeat曲から、まずはこの曲。先程の話を見て、EurobeatとY&Co.に触れないわけには行かないのがお分かり頂けると思います。
Eurobeatって比較的速いテンポの方が映えるジャンルだと思っているのですが、それがMemorialの軽快なテンポに見事にマッチしています。

「HAPPYぱLUCKY(DJ BOSS LUCKY EUROBEAT Remix)」や「純・アモーレ・愛(Y&Co. Eurobeat Remix)」といった、原曲が比較的速いテンポだと、Eurobeatになった時の印象がだいぶ良い印象で、この曲もその類でしょう。
Eurobeatの最大の特徴であるリードシンセが、特にイントロに合いますね。

こんだけEurobeatのこと書いておきながら、個人的には好き嫌いがかなり激しいのですが、これは好き。

Miss.プリオネア(DELACTION Remix)

「Miss.プリオネア(DELACTION Remix)」を取り上げたのは、華園しゅうかというキャラクターの特性と、この曲の持つ特性がマッチし過ぎてて、ちょっと感動すら覚えたためです。

しゅうかと言えば「セレブ」であり、超努力家である一面は外に見せず、ともすればバブリーな成金にも見えるような演出が印象的です。
いや、努力家だと思われたくないから、わざとそう見せていたのかもしれません。

さて、この曲もEurobeatです。
ジャンル的には同じながら、このDELACTIONのRemixがY&Co.のRemixと違うのは、声ネタを多用していて、Y&Co.より派手で陽気な印象を受けること。
「Go!」「Are you ready?」「Hey!」「Ho!」こんな声が至るところに入ってます。
過去のメガパラでも同氏は声ネタを多用しています。

この「ホゥ!」という声ネタ、有名過ぎてかなりいろんな曲で使われてます*8が、私はどうしても真っ先にコレが出てきます。

バブル期の象徴として伝説となってるディスコ「ジュリアナ東京」についてTVで触れられる時、必ずセットで掛かってる曲です。曲の中で飽きる程ホゥホゥ言ってます。
このせいもあってか、この声ネタを聴くとどうしてもバブリーでパーリナイな印象しか出てきませんw

このRemixもそのせいか、だいぶバブリーな印象を受けます。

キラキラなディスコを彷彿とさせる、バブリーなアレンジと、バブリーで成金的な印象を演出する華園しゅうか。
どうです。ぴったり過ぎませんか。
ミラーボールが輝く中、ファーの付いた扇子を片手に舞って、高笑いしながら客からお金を巻き上げるしゅうか様の画が浮かびませんか!

10年くらい前に、姫トランスというキラキラなダンスミュージックを集めたシリーズがあったのですが、DELACTIONというチームはそのシリーズに結構曲を出してたらしく、こういうキラッとしてイケイケな曲は得意なようですね。

これ、狙ってDELACTIONをこの曲に指名したのだとしたらユメナイス過ぎる人選だと思います。
原曲が軽くEDMだったので、もっと派手にEDMに寄せてくると思ってたら、まさかEurobeat化して、しかも刺さってくるとは思ってなかったので、思わぬ しゅうかの 収穫でした。

Believe My DREAM!(DJ Shimamura's Hardcore Rave Mix)

メガパラシリーズが楽しみだった理由の1つに、DJ Shimamuraの存在があります。
プリパラを名前しか知らなかった頃にプリパラを気になった理由の1つが「女児アニメでRemixアルバム?しかもDJ Shimamuraいるの?!」だったので、要は 女児アニメ沼に落ちた元凶 でもあるのですが、それはさておき。

こちらはジャンル的にはUK Hardcoreに該当します。*9
先に紹介したEurobeatよりも断然テンポが速く、サウンドも全体的に激しいのが特徴です。

クラブミュージック自体、DJ Shimamuraから足を踏み入れたクチなので、個人的にはEurobeatよりも、こういう速くてハードな方が好みだったりします。

一言で言うと YA BA I 。…感想になってないのでもう少し書きます。

YA BA I理由は主に3つ。

  • 強制的にブチ上げさせられる絶妙な展開
  • この曲単体でも過激な方なのに、周りが全体的に大人しいのでより激しく聴こえるせい
  • またしても光る公式の人選の上手さ

普段イヤホンで音楽を聴いてるから良いものの、スピーカーで掛けたら高まって暴れるしかない←
それくらい強制的にノせられる、恐ろしい曲です。

この曲はぜひExtendで聴いて欲しい のですが、DJ Shimamuraは本当に展開付けるのが上手いです。
この曲、1番のサビが来るまでずっとBuildUp、つまりはサビで一気にブチ上がるためにずっと溜め込むタイムになっているのがポイントです。
でも一番のピークは、サビの次に来るリフです。クラブだったらここでもう暴れます←

かと思ったら2番は落ちサビにしてきたり、たまにベースを抜いてきて勢いを意図的に止めたり、と緩急が非常に豊か。
得てしてこの手の曲は単調になりがちなのですが、こう展開が豊かだと安心出来ます。

前述で考察したように、ブチ上げ系というよりは、ちょっと身体が揺れるような、軽く気分が高揚するようなものが多いこのアルバムの中で、明らかにこの曲はブチ上げに掛かる系の曲です。
程よくノれる曲が多い中にコレは相当目立ちますね。
とはいえ、これが最後の曲なので、これも明らかにわざとでしょう。

しかも選曲が「Believe My Dream!」。最後に持ってくるしか無い曲ですね。
それをDJ Shimamuraに担当させる、ということは最後にユメど派手に締めて欲しい、という意図があるんだろうことは明白です。
人選と選曲がここまで分かりやすい、そしてそれが実に狙い通りになった、これも公式とDJ ShimamuraユメGJな案件でした。

早くクラブで聴きたいので、DJタイムプリパラ!第二弾を何卒。。。

蛇足ですが、DJ Shimamuraは先日11/20の真中らぁらちゃんの誕生日の日にこんなことをしてくれたり、

DJタイムプリパラ!」では何を思ったか「いすゞのトラック」を選曲して、プリパラ1期を再現したかの如く 反応に困るカオスな空気 を作り出した事件を起こしたり*10と、なかなかプリパラのことを分かってるDJでもあるので、ぜひ動向を追って欲しいDJです。

Get Over Dress-code(Blacklolita Bit Future Remix)

最後のユメPickupはこの曲。
これまでのメガパラシリーズではDressingPafe曲を多く担当し、「DJタイムプリパラ!」では 自分のRemix曲を差し置いて 「Twin mirror ♥ compact(Taku Inoue Future Remix)」で締めるなど、最早ドレシ担当の地位を確立していたBlacklolitaですが、予想通り今作でもドレシ担当でした。

これまで3作通してずっとFuture Bassという、キックを4つ打たないミドルテンポなジャンルで統一してきていました。
ちなみにFuture Bassは、ポストEDM的な立ち位置にいるかなりモダンなジャンルで、日本だと中田ヤスタカPerfumeの曲に取り入れてたりしてます。
…メガパラ曲の中で一番モダンじゃないか。

ところがこのBlacklolitaという人は、本来はこんな大人しい(いや別に大人しくはない)曲は作っていなくて、もっと過激なDubStep曲を作ってる人だったりします。

先程の勝手な推察を元にすると、メガパラでこんなのやったら出禁ですね←

それを踏まえた上での、今回のGODのRemix。 ついに本性を表したか というのが第一印象でした。

ジャンルは、前述のジャンル分けで一応Bass系としましたが、ぶっちゃけいろんな要素が入り過ぎててよく分かりません。
Drum'n'Bassを主軸にしながら、お得意のDubStepをしれっと混ぜ込みつつ、ChipTune的な要素も…
とにかくベースがかなりの存在感を放っているいるので、Bass系であることは間違いないと思います。

これもExtendでぜひ聴いて欲しい。 のっけからベースがゲロゲロ しててもうヤバいです。

一方で、全体的にギターなど原曲のパーツを結構そのまま使っていて、原曲の印象を壊し過ぎないようかなり苦心したのが伺えます。
ドレシ担当ともなれば、GODのRemixはかなりのプレッシャーだったのではないかと。
サビは4つ打ちでも良かったのでは感もありますが、そうすると単調になるかもしれないので難しいところ。
結果これで良かったのだと思います。

イントロもですが、Cメロにおける突然のワブルベース*11。Blacklolitaついにやってくれたな、と初聴時は笑ってしまいました。
これくらいやってくれないかな、とも期待していたので、非常に嬉しい限り。テンションMAXゥ〜!です。曲が激しいのでリラックス〜は出来ない。残念無念。

メガパラ曲の中ではだいぶ極北にいるこの曲、しかもGODなので評価は分かれそうですが、個人的にはかなりツボです。

最後に

Remixアルバムってなかなか人気無いのですが、原曲の隠れた魅力や一面を引き出してくれる側面もあって、実はなかなか面白いものだったりします。
もちろん どうしようもないくらいにダメ *12なRemixアルバムもあるので、そういうのを引き当ててしまうと頭抱えますが。

そういう意味では、この「プリパラ ULTRA MEGAMIX COLLECTION」シリーズは外さないです。
もう少しモダンなラインナップが欲しかったナーという気がしなくもないですが、これはこれで1つの完成形だと思っています。

アレコレと口上を垂れましたが、別にクラブミュージックのことを何も知らなくても、何となく楽しくなる、そんなアルバムです。
逆に、このレビューを読んで、少しでもクラブミュージックが気になったようなら幸いです。

それにしても、TL;DRが要約の体を成してなかった件。ユメわざと。

*1:GODをBass系に振ったのはBlacklolitaだから。

*2:もっと言えば、GiraギャラのEDMアレンジは、EDMと名乗ってますが、声ネタの使い方がジュリアナっぽい、つまるところDiscoっぽいので、あまりモダンさは感じなかったり。

*3:今作におけるTrance曲はどれにも当てはまるので難しいところですが。

*4:結果としては、ガラ空きのゾーンと化していて、あまり目論見通りにはなってなかったですが。

*5:だから普段エグいDubStepばかり作ってるBlacklolitaが、シリーズ通して比較的大人しかったのかもしれません。

*6:小室哲哉のせい。

*7:あっちゃこっちゃゲーム(DJ BOSS SEB Remix)の「SEB」は「Super Euro Beat」の略。

*8:元ネタはJames Brown辺りだったような

*9:Happy Hardcoreともはや判別が出来ないので、UKじゃねえハピコアだ、というツッコミはご容赦

*10:フロア全体でトラックのCM曲を大合唱する、ヤバい空間と化してました。DJタイムプリパラ!って何のイベントだったっけ。。。

*11:例のゲロゲロ言ってるベースのことです

*12:原曲ボーカルですら無いとかね…

ブログ、やってみた

ごあいさつ

多くの皆様、初めまして。saken649と申しますです。
エンジニアとして、仕事ではガリガリプログラムを書いてる傍ら、週末は作編曲家イチカベサケンと名乗って曲を書く。
そんな生活をしている、ただのオタクです。

私の自己紹介はaboutに記載したので、そちらで。

Qiita以外でアドベントカレンダーを書く機会を頂いたは良いものの、そういうものをつらつら書いておける場というものが、そういえば無く。

あと自分で言うのも変ですが、割といろいろやってます。

  • エンジニア業
    • 技術ネタ
    • プログラミング備忘録
  • 音楽関連
    • 作編曲
    • 既存楽曲のRemix
    • バンドのサポート (鍵盤, ドラム)
    • 楽曲分析
    • 音楽機材ネタ
    • 独断と偏見に満ちた音楽関係レビュー
    • ライブ・コンサート (非アニメ・ゲーム系)
  • オーディオ
    • イヤホン
  • オタク
    • 女児アニメ
    • エロゲ
    • ライブ・イベント (アニメ・ゲーム系)
    • 遠征兼ねた小旅行

これだけやってるのに全然まとまった形で記録に残してないなー、ともったいなく感じたので、アドベントカレンダーを機にブログを開設することにしました。
どれだけ需要があるのか、そして いろいろ手を伸ばし過ぎてネタに統一感が無い ことが見え透いているので、一体何のブログなんだ感もありますが。

私の好きなコンテンツである「キラッとプリ☆チャン」という作品があるのですが、とても大好きなセリフがあります。

やってみなくちゃ分からない!分からなかったら、やってみよう!

ということで、

ブログ、やってみた!

お気に召しましたら、今後ともどうぞよろしくです。