Upgrade to Pro — share decks privately, control downloads, hide ads and more …

karaokestudio

S-Katagiri
April 04, 2020
270

 karaokestudio

April Fool Project

https://github.com/Gedevan-Aleksizde/karaokestudio

UPDATE
2020/4/4: 要件にffmpeg追加, 参考文献の表記を修正

S-Katagiri

April 04, 2020
Tweet

More Decks by S-Katagiri

Transcript

  1. 2020 年エイプリールフール企画
    ill-identified
    2020-04-04
    1

    View full-size slide

  2. 自己紹介
    • twtiter ID: ill_identified
    • 主語の大きい話が好き
    •『計量経済学と機械学習の関係』(80th Tokyo.R)
    •『今更だが, ベイズ統計とは何なのか.』
    •『R とパンデミックの数理モデル新型コロナウィルス
    (COVID-19) 研究を例に』(エア Tokyo.R Feb. 2020)
    • 主語の変な話も好き
    •『三国志で学ぶデータ分析』(Japan.R ’19)
    •『飯野山は正規分布らしいのでパラメータを推定する』
    2

    View full-size slide

  3. 勤務先の求人
    https://n.fancs.tech/recruitment/
    3

    View full-size slide

  4. これまでのあらすじ
    • 六角形ステッカーで痛スーツケースを作成できた
    • 発表者のくせに遅刻したらついに在宅発表することに
    4

    View full-size slide

  5. 本題
    R 使ってるとカラオケしたくなるときありますよね
    今のご時世カラオケボックスは行きづらいですよね
    5

    View full-size slide

  6. その名は karaokestudio
    RStudio でカラオケするパッケージ作りました
    kaʀaokestudio
    https://github.com/Gedevan-Aleksizde/karaokestudio


    https://github.com/Gedevan-Aleksizde/karaokestudio
    • (配布パッケージの体裁にはなっていない)
    6

    View full-size slide

  7. 謝辞
    • @kazutan 氏に感謝!
    • 氏のtubeplayRで遊んでたら思いついた
    • 以前は Mac か RStudio Server でしか使えなかった
    • 今は Qt が更新されて使える
    • R でカラオケする時が来た!
    • https://github.com/Gedevan-
    Aleksizde/karaokestudio
    7

    View full-size slide

  8. 必要なもの 1: 基本
    • Linux OS (Ubuntu)1
    • RStudio
    • マイク
    • 外部ライブラリ
    • portaudio19-dev + python pyaudio
    • ffmpeg
    • mecab + mecab-ipadic-neologd
    1docker 使えば他の OS でも動く? サウンドデバイスの設定は未確認
    8

    View full-size slide

  9. 必要なもの 2: GCP のアカウント
    • GoogleCloudPlatform への登録
    • 以下の API の許可
    • YouTube Ads Reach API
    • YouTube Anlytics API
    • YouTube Data API
    • YouTube Reporting API
    • Google Cloud Storage JSON API
    • Google Translation API
    • Google Speech-to-Text API
    9

    View full-size slide

  10. 必要なもの 3: R パッケージ
    • shiny, shinyJs - アプリケーション開発
    • tubeR - YouTube API を操作する
    • googlelanguageR - 音声認識 API の操作
    • googleCloudStorageR - 音声ファイルアップロード
    • zipangu - テキスト処理に使う
    • reticulate - サウンドデバイス操作
    • R のパッケージではうまくいかなかった
    • hexSticker - 六角形アイコン作成
    • その他よく使う tidyverse 系いろいろ
    10

    View full-size slide

  11. 設計の概要
    1. shiny, shinyjs で UI 表示
    2. 動画再生イベントを監視
    • Youtube Player API を使うため javascript も必要
    3. Youtube API で動画の再生時間とキャプションを取得
    4. 再生と同時に録音開始
    5. Google Cloud Speech API へ送って文字に起こす
    • ファイルサイズのため一旦 Google Cloud に上げ
    る必要
    6. キャプションを mecab で読みに変換
    7. キャプションと録音テキストの類似度で採点 11

    View full-size slide

  12. 得点の計算方法
    • 採点方法には研究‧特許いろいろある ([1], [2])
    • 音声の教師データは用意不可
    • キャプションも音声も開始‧終了時刻の情報しかない
    0 5 10 15
    second
    lyrics voice
    12

    View full-size slide

  13. 得点の計算方法 1: 開始時刻でマッチング
    • キャプション開始時刻に最近のものとマッチング
    • 間隔が空きすぎるものはマッチなしと判定
    開始 8.82S 11.18S
    終了 11.166S 13.68S
    正解 テラシダシテグリーンライツ ヒロガルミライヲ
    歌声 チラシダシテルグリーンライツヒロガル ミライオキット
    • Omoi 作詞「グリーンライツ‧セレナーデ」の場合
    13

    View full-size slide

  14. 得点の計算方法 2: 編集距離で採点
    • 対応するキャプションと音声のテキストで類似度計算
    • 編集距離 (レーベンシュタイン距離) を使う
    •「何文字修正すれば一致するか」を表す距離
    • 100 点満点になるよう文字数で正規化
    14

    View full-size slide

  15. 注意点
    • 著作権は大事
    • キャプションは絶対
    • 全て読み上げないと満点にならない
    • 動画の権利者が許可してない動画あり
    • 外部サイトでの利用を許可しない場合も
    • そもそもキャプション登録されていない動画
    読みを推理するのが無理ゲー
    ここは裏切りの
    ティル‧ナ‧ノーグ
    楽園 さ迷う心の
    はて
    涯に
    (茅原実里, 畑亜貴作詞/菊田大介作曲『Paradise Lost』)
    15

    View full-size slide

  16. References
    [1] Tsai, Wei-Ho and Hsin-Chieh Lee (2012) “Automatic
    Evaluation of Karaoke Singing Based on Pitch,
    Volume, and Rhythm Features,” IEEE Transactions
    on Audio, Speech, and Language Processing, Vol.
    20, No. 4, pp. 1233–1243, May, DOI:
    10.1109/TASL.2011.2174224.
    16

    View full-size slide

  17. [2] 竹内英世‧保黒政大‧梅崎太造 (2009) 「カラオケ採
    点用の高分解能ピッチ抽出法」

    『電気学会論文誌 C』

    第 129 巻,第 10 号,1889–1901 頁,DOI:
    10.1541/ieejeiss.129.1889.
    17

    View full-size slide