カテゴリー
データ可視化

バスケットボール中継のハイライト動画をPythonで作る

Python で NBAハイライト動画を自動生成するという記事が面白かったのでご紹介。

ゲームをまるごと観戦する暇がない時、ハイライト動画を見て済ますスポーツファンは多いでしょう。ハイライト動画は球団やテレビ局などが編集して出してきますが、必ず見られるわけでも、自分が見たい粒度のハイライト動画が必ずあるわけでもないかもしれません。

ノーム・エフラットさん(Noam Ephrat)が自分だけのハイライト動画を自動で作るために使ったのは、Python、NBA公式のAPI、録画したゲーム動画、OCRライブラリ。

NBAのAPI(参考) では何分何秒にどちらのチームの誰がどういうプレイをして、シュートが入ったとか外れたとかいうプレイバイプレイ(play-by-play, PBP)の情報が公開されています。日付、ゲームID、ピリオド(クオーター)を指定するとJSONが返ってきます。これが一つ目の要素。

https://data.nba.net/data/10s/prod/v1/20220201/0022100784_pbp_1.json

そして、録画した動画をフレームごとに切り出して、中継中に表示されたゲーム時計の部分を OCR ライブラリの Tesseract でピリオドやゲーム時間を抽出します。これが二つ目の要素

あとは、プレイバイプレイの重要シーンの発生した時刻に合わせて、動画のフレームを切り出し、切り出したところをつなげていくと、ゲームが動いたところだけがまとまったハイライト動画を作ることができたということ。

ざっと見てみて、プレイバイプレイのデータにあるところだけだと、どうしても点が増えたシュート成功の場面が多くなるのかな、とも思いましたが、人間が編集したハイライト動画でも成功シーンが多いので気のせいかもしれません。

作ったハイライト動画を公開するのは著作権的にだめだと思いますが、個人でハイライトを作って観るのは問題なさそうでは。

自分の基準で抜き出すところを選べるからには、

  • ひいきチームの得点シーンばかりを集めたり
  • 応援する特定の選手の絡むシーンだけを集めたり
  • 点差や時間を考えて、より劇的にゲームが動いたシーンだけを集めたり(これは人が編集する時と似た結果になるかも)
  • 自分の使える時間に応じてハイライト動画の長さを指定して変えたり

など、よりパーソナライズされたハイライト動画を作れる可能性もありますね。

バスケットボールという競技が特に時計が重要で、常時正確な時刻が中継に表示されていることや、APIで提供されるゲームログにも時刻情報がふんだんに含まれているという点も、うまく自動生成にマッチしているというのもありそうですね。

カテゴリー
fun

Alien Scapes – どこか別の惑星の風景をランダム生成するウェブサイト

Alienscapesは、どこかの架空の惑星の風景を合成して表示してくれるウェブサイト。

いくつもの太陽やいくつもの月、それも地球から見た月とはサイズも色も違う。

クリックするたびに新しい別の惑星の風景を作ります。星空や流星、山々の稜線なども毎回変わります。

天空の描写はかなり良さそう。手前の地形は特に、もっとリアルになる余地がありそうです。

via Hacker News

カテゴリー
ネットのサービス

Noisy – discordで自動生成された音楽を聴ける bot サービス

Noisy は、discord のボイスチャットで自動生成音楽を聴けるという bot です。

音楽の生成は OpenAI の MuseNet を使っています。MuseNet では、ジャンルを指定してそのジャンルっぽい音楽をAI生成できるので、bot はまあ、ジャンルの指定をコマンドで受けて生成した音楽を流しているだけではあるんですが。

discord チャンネルに noisy bot を招待し、

!play tchaikovsky

とメッセージを送ると、チャイコフスキー風楽曲がボイスチャットに流れてきます。指定できるジャンルはnoisyのウェブサイトにあるヘルプに列挙されています。

曲自体は MuseNet で生成されたものをサーバに置いているだけですが、bot を使ってボイスチャットで配信するという考えはありませんでした。Spotify など音楽アプリで聴くのはよくあるかと思うのですが、discord などに入り浸っているとその中で音楽も完結してうれしい人もいるのかもしれません。

chatコマンドと音声のレスポンス、で他にも有用なサービスを考えられるかも。

botサーバーのソースコードはGitHubで公開されています。