StreamLine ~ツイートを分析し類似した歌詞を持つ曲を提案し、感情抽出を行いSongleを用いて曲をアレンジするソフトウェア~ を作った
明けましておめでとうございます。
実は、2016年一発目の投稿です。
色んな、ジャンルのいろんな物を作っていこうと思いますので、今年もよろしくお願いします。
StreamLine概要
グループで「Twitterのツイートを分析し類似した歌詞を持つ曲を提案し、感情抽出を⾏いSongleを用いて曲をアレンジするソフトウェア」StreamLineというちょっと変わったシステムを年末から年明けにかけて約一ヶ月弱、で開発しました。
↑のデモビデオはtell your worldを例に取ってますが、実際は以下のように動きます。
事前準備として複数のボーカロイドの歌詞を形態素解析してデータベースとして保存しておく
1. 自分の最新20ツイートを取得する
2. Yahooの形態素解析APIに投げる(テキスト解析:日本語形態素解析 - Yahoo!デベロッパーネットワーク)
3. さらに、高感度ネガポジAPIにも投げてツイートの感情を取得する(メタデータ株式会社)
4. 形態素解析されたツイートとデータベースと照らしあわせて、ツイートの単語を歌詞として最も多く含んでるボーカロイド楽曲を探し出す
5. 楽曲を探しだしたら、Songle(Songle)のAPIより楽曲情報を取得する
6. 取得した楽曲情報を元にネガポジ判定の結果に応じて、アレンジを加えてmidi出力する
7. 音楽を流しながらTwitterのタイムラインとスペクトルアナライザ的なのを表示する
という感じです。
主に、音楽アレンジとSongleAPI周辺以外を作りました。
工夫した点・苦労した点
- クラスの統合
ゴチャゴチャしすぎて、死ぬかと思った。。。ちゃんと動くクラスならまだいいけど.....
はじめに一番書くとなるmainプログラムを作ってそこからみんなで作ったほうが良かった。
管理が大変すぎた。
発表五分前にしか完成しなかったのもクラスの結合によってバグの発見が遅れた。
- 形態素解析の文字列制限
yahooにpostするときに「loadStringsで開けない」的なエラーがでた、URLエンコードかける前の文字数で100文字ぐらいに収めたらエラー吐かなくなった。
- データベースの管理と検索
オリジナルで組んでみた。
曲のごとに「tell your world.txt」ようなファイルをつくり、行ごとに「単語@品詞」の形にして歌詞全部を保存する。
検索の時は一行づつequalsで比較した。
- 検索の評価
単純にやると助詞などが多くてバランスが悪くなるので、重複している単語は削った。
名詞と動詞がマッチングした場合の評価点を高く設定した。
- ニコ動コメント風のTL流し
コメント同士が被らない+長い文字列は速く流すように、とやろうとしたらすごく難しくて大文字小文字を分けて文字列の画面上での長さを計算して流すようにはした。
それっぽく見えるからいいかなと思ってる。
一度に大量のツイートが来ても最大表示数を決めており、古いやつから消えるように実装した。
デバッグ中にやった負荷テストが最高に楽しかったwww
FMSB1発表会
上記の成果物は↓の発表会で発表しました。
プログラミング演習2発表会&コンテンツメディアプログラミング実習2発表会 – 先端メディアサイエンス 〜未来を予測するために未来を創る〜
後期に習ったprocessingの技術を使ってチームで開発して発表というものです。
ただし、条件があって
#p演習
テーマ発表 pic.twitter.com/5VKNl5J5Ez
— 又@春休み~! (@matatsuna) 2015, 11月 23
はっきり言って、テーマはなんとかなるから面白い物を作ろうってことでホワイトボードに案を書きまくって意見を出し合って決めました。
メンバーに音楽ガチ勢がいたことが何よりも心強かったです。
KPT
また、P演習の発表会が終了したら、KPTを書こうと思います。
今年のP演2の作品をみて、来年のP演習2を考える。 - matablo
ってことで書きます。
_個人的な意見です_
Keep
- 慣れてない人がいるならLINE+Google Drive(本当はやだ)
Problem
これからについて
StreamLineで作った、ツイートからの音楽提案システムについては分離させてwebサービスにできないかこれからゴニョゴニョするつもりです。
あと、テストも終わって自由になったので、2月中に何かしら記事かけるように頑張ります。
P演習で周りにビビらせられたので、何かしないと・・・・・・
P演習お疲れ様でした!!!