Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

その名は karaokestudio RStudio でカラオケするパッケージ作りました kaʀaokestudio https://github.com/Gedevan-Aleksizde/karaokestudio ♬ ♪ https://github.com/Gedevan-Aleksizde/karaokestudio • (配布パッケージの体裁にはなっていない) 6

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

必要なもの 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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

[2] 竹内英世‧保黒政大‧梅崎太造 (2009) 「カラオケ採 点用の高分解能ピッチ抽出法」 , 『電気学会論文誌 C』 , 第 129 巻,第 10 号,1889–1901 頁,DOI: 10.1541/ieejeiss.129.1889. 17