
NHL goal celebration hack: real-time machine learning and hue light show - cotsog
http://blog.francoismaillet.com/epic-celebration/
======
ddcarnage
I'm the guy who did this; really happy this is trending on HN!

Hope everyone enjoys the game tonight! :D

~~~
KeytarHero
Really cool.

What are you doing for away games? Can it still detect Habs goals? You
mentioned you had to train the algorithm not to detect the opponents' goal
horn. Couldn't you just scrape the schedule to detect if you're playing at
home or away and use a different model for each?

~~~
ddcarnage
It's really about the comentator's yell, not the goal horn. So as far as he's
excited for Habs goals and not too excited for the other team's goals, it
works fine.

~~~
bryanlarsen
You watch the French commentary, I presume.

~~~
ddcarnage
Yup, the current model is trained on the TVA sports broadcast

~~~
bryanlarsen
Yes, the English broadcasters at least pretend to be neutral.

------
iwaffles
This is really awesome. I've managed to do something similar, but for the
Washington Capitals. When the game starts the lights change to the color of
the home team, and when they score the flash. I'm using a little web scraper
to pull from nhl.com to get the data, however, sometimes it's quite out of
sync with the actual game (streaming or live tv). Usually about 30 seconds to
a minute delay.

The best part is when I forget that they are playing and the lights start
flashing randomly. Always scares guests :)

~~~
waterlesscloud
I've been using MLB.com's api and Windows' text-to-speech to build a robo-
announcer for baseball games. It builds a little narrative from the ridiculous
amount of data they share. Sure, I could just listen to the streaming audio,
but it's been an excuse to learn some Racket.

I kid about building a robo-color-commentator that tells old stories and bad
jokes.

~~~
spiffytech
That sounds neat! Do you have a link to a demo of it?

------
SG-
I know this post isn't really about the hockey part and more about the ML
part, but I think it would be more practical to analyze and maybe use the
Budweiser Redlight API if possible (I haven't looked into it yet or have one)
to get almost instant goal reporting for your team of choice.

I have seen it in action and it's like ~2 seconds off from a live feed.

[http://www.budweiser.ca/redlight/](http://www.budweiser.ca/redlight/)

Really nice post and I'll be using it implement a few things around the house
(like trying to monitor kids crying, etc).

~~~
W35
I believe their system works by employing a man to push a button, which is
then routed to your light.

They note in their fine print that they may end the service at any point,
which renders it fairly useless.

As you said, you may be able to find a way of spoofing the goal signal. But
now, you are just the man pushing the button.

------
simark1
I am impressed that it's able to work for both when the Habs are at home and
on the road. The only similar thing would be the commentator's reaction. The
ambient sound is reversed (cheers and horns when the Sens score). I would
think you would have to train the algorithm separately for both cases, and
tell it whether the current game is at home or not.

Anyway, this is very good work, the light setup is very clean. I hope that the
(your?) system will get a lot of "true positives" during tonight's game :).

~~~
ddcarnage
Not enough unfortunately :(

------
pragone
You might also have good luck by analyzing the chat data from hockeystreams -
just look for when a few dozen people write something along the lines of
"GOOOOOOOOAAAAAAAALLLLLLLLLL", and take it from there.

Granted, not as much fun as setting up the whole system you did, but another
option.

~~~
DevoAKA
HockeyStreams has an API for scores - for free. I'm not sure how quickly it
updates though:
[https://www.hockeystreams.com/api#scoresapi](https://www.hockeystreams.com/api#scoresapi)

Highly recommended to anyone that have to deal with blackouts from GameCentre.

------
hellskitchendev
This is great. I use a simple IFTTT recipe to blink my hue's at the start of
the Yankees games but the ESPN api hook is always off by 10 minutes or more.

------
comrh
Nerdy Habs fans: combining obsessive love of tech with obsessive love for
hockey.

All the goal horns are on youtube, maybe you could create a training set with
that?

~~~
geedy
Would not work for away games. Could easily use goal horn for home games
though for higher accuracy.

------
dquail
This is awesome. Well done. Wondering if there was any real time speech to
text that could be trained. Seems like these commentators all have their
canned lines when the team scores. "He scores", "Goal", etc. etc. Seems like
you might be able to fairly accurately capture that and add the sentence as an
attribute? Well done. My Oilers need something like this for every time we win
the Draft Lottery! McDavid!!!!!!

------
decisiveness
This is a cool idea, but the light show going off erroneously in my own home
for the opposing team would be disheartening to any die hard fan. Any chance
of this happening, let alone once every 4 games, would be unacceptable. And
the pain of knowing I rigged it up myself would make it that much worse. I
applaud OP for the wherewithal it must've taken to see this project through to
the end.

~~~
ddcarnage
lol well it does go off erroneously sometimes... statistically speaking once
every 4 games. __BUT __... I do have the big USB button ready to cancel the
light show and goal song. Something I did not mention in the blog post is that
it stops the goal song by playing the Fail Trombone sound
([https://www.youtube.com/watch?v=iMpXAknykeg](https://www.youtube.com/watch?v=iMpXAknykeg))
when you use the USB button to cancel light show. Yes really disheartening,
but the one time it happened it made the whole thing pretty funny actually :)

~~~
decisiveness
Nice work, and great mood lightening sound :)

Maybe it would be more accurate to detect when the siren light behind the goal
goes off if it's always viewable on screen.

------
chaosmachine
It seems like analyzing the video would be much easier, as you could basically
just OCR the on-screen scoreboard.

~~~
durbin
Scoreboards will take a bit longer to react than the announcers and goal horn.

~~~
91bananas
Indeed, on our local broadcast sometimes the scoreboard doesn't change until
well after the goal has been reviewed and approved in Toronto.

------
dheera
Nice!

I was playing with the Belleds lights (friend's recent Kickstarter; similar to
Hue but somewhat cheaper), wrote a Python API for it, which worked great, but
then I hit a mental block in coming up with something actually cool to do with
RGB lights.

I hooked it up to a text sentiment analyzer but this just wasn't all that
cool. [https://github.com/dheera/python-
belleds/blob/master/sample-...](https://github.com/dheera/python-
belleds/blob/master/sample-sentiment.py)

Hooking it up to a sports match though, that's definitely cool and useful.

------
tantalor
What happens when a goal is scored by the other team?

~~~
ddcarnage
Usually the commentator is way less excited so the system can make the
difference.

------
ErikAugust
Very cool. Would a Closed Caption feed be superior?

~~~
ddcarnage
Not a bad idea. However it would probably be hard to make the difference
between goals for and against your team without analyzing a lot of what's said
prior to a goal.

------
jtkme
As a fan of both ML and hockey, I love this! Can't wait to beat you again this
year (let's go Rangers)

You can probably get some improved performance using hidden markov models to
place of the voting scheme.

------
hyperbovine
> Being able to see the patterns with the naked eye is very encouraging in
> terms of being able to train a model to detect it.

Would that that were true!

------
robinhowlett
Was playing the goal song through home audio system triggered too? How (or is
it Mac's audio piped through speakers)? Great idea btw

~~~
ddcarnage
Mac Mini is hooked up to speakers and TV and it plays the goal song. I set the
volume of the media player so that it's just right with the game broadcast so
everything sounds good together.

------
circa
Very cool. Lets go Islanders!!!!

