HABIFY 〜オンリーワンな Happy Birthday to You をお届けします〜

October 30, 2021 · View on GitHub

HABIFY Logo

公開URL: http://habify.herokuapp.com

製品概要

HABIFY 〜オンリーワンな Happy Birthday to You をお届けします〜

背景(製品開発のきっかけ、課題等)

  • コロナ禍で弱まってしまった友人や家族とのつながりを再び深めたい
  • 年に一度の誕生日に新しい祝い方を提案したい
  • 日本全国誰に対しても同じバースデーソングはつまらない

このような課題を解決したいという思いと,

  • メンバー全員の音楽のスキルを活かしたものを作りたい
  • メンバー全員がPythonの関係者(?)なので, スキルアップや実践経験を積みたい

このようなチームメンバーの思いから, 特別なバースデーソングによる新たな誕生日の祝い方を提案します.

製品説明(具体的な製品の説明)

Twitterの投稿を元にその人の趣味趣向や性格を分析し, その人のためのHappy Birthday to You のアレンジを生成します.(その際, 相手のTwitterアカウントが鍵垢でない必要があります)

使い方は簡単. http://habify.herokuapp.com にアクセスして, あなたのメールアドレスと, 誕生日を祝いたい相手のTwitterのIDを入力して開始ボタンを押すだけ!! 曲が完成したら, メールに

  • 動画の再生
  • Twitterでのシェア
  • ダウンロード

をできるページのURLが送信されます. あとはページ上からTwitterで送るも良し, 動画をダウンロードして他のツールで送るも良し. 盛大にお祝いしてください.

ローカルで動かしたい場合などは, wikiを参照してください.

特長

  1. 生成される曲のパターンは64bit(2642^{64}≒1.8x191919^{19})通り以上! その中から, アナタが祝いたい相手に最適なHappyBirthdayToYouをお届けします.
  2. ロゴやアイコンなどの画像素材は全てチーム内のデザイナーが作成しました.
  3. DockerとGitHubActionsを用いたことで, 快適な開発環境とデプロイを実現しました.

解決出来ること

  1. コロナ禍で失われてしまった, 人との交流を再開するきっかけとなる.
  2. 面と向かって「誕生日おめでとう」と言いにくい時や相手に対してお祝いを伝える手段となる.

今後の展望

  1. 曲調をより多彩な特徴に対応させる.
  2. イントロやアウトロも生成できるようにする.
  3. メロディーのアレンジのバリエーションを豊かにする.
  4. 動画生成の間などでの広告収入を追加する.
  5. SNSでの拡散を狙う(特に, 講義のオンライン化で友人との交流が減った大学生を対象にする).

注力したこと(こだわり等)

  • 祝いたい相手に合わせた曲を生成するための自然言語処理や編曲の独自の組み合わせやロジックを開発したこと.
  • 人名抽出を使ってキーワードの単語の誤抽出を防いだ.
  • 単語のイメージと乖離しないように, 楽器からリズムまで, 曲の全ての構成要素を検討したこと.
  • 音楽理論の上で破綻しておらず, 不自然にならないコード進行を生成できるようにしたこと.
  • 静止画とBPMからテンポに合わせて動く動画を生成したこと.

開発技術

活用した技術

  • 開発環境: Docker
  • 使用言語: python3.9
  • デプロイ先: Heroku
  • デプロイ管理: GitHubActions
  • mongoDB
  • OpenCV
  • gunicorn

API・データ

フレームワーク・ライブラリ・モジュール(主要なものを抜粋)

  • flask
  • pretty_midi(MIDIデータ加工)
  • librosa(音声ファイル入出力)
  • midi2audio(音声出力)
  • moviepy(動画出力)
  • OpenCV

独自技術

ハッカソンで開発した独自機能・技術

  • 独自で開発したものの内容をこちらに記載してください
  • 特に力を入れた部分をファイルリンク、またはcommit_idを記載してください。
  • 伴奏のコード進行の生成
  • キーワードとなる単語リスト