Elan tweeted about this earlier…all I can say is wow (and rumor is that Siri will be the interface for the mythical Apple TV (not ATV) forthcoming…
Siri controlling Plex
and using the kinect proof of concept together with Siri would make the experience an ultimate way of using ur AV
I saw this from a plexapp tweet last night, its awesome.
I thought about downloading the siri proxy kit from github, but thought it would be too complicated to setup. I hope this guy or the plex team puts together a simpler package because I think anyone with a 4S like myself will want to play with this!
No disrespect henk, but I’m not interested in waving my hands around or having extra messy kit like xboxes dumped in my lounge, being able to simply ask siri is like another massive leap frog over kinect
its more a less the 1+1 idea.
i dont think when your in a movie volume all the way up, that siri will understand what you want, but when you can stop the movie while ‘waving’ your hands, siri is their at your command todo whatever you want.
sure, extra hardware would be a hassle, but having the kinect camera directly hooked to the macmini (in my case) would be a nice way to dissolve the whole remote situation.
i see this going further than just plex, in way you can replace a whole remote buddy setup with the 2 systems.
sure it depends on the user, if its good enough.
Cool project, thanks for sharing. I wonder how well this works with the regular Speech Recognition available in the OS itself?
That's exactly what I have in mind too. Turn on the tv, mini etc with voice commands, navigate with your hands, for complex navigation grab a keyboard, pause the movie automatically when you get up for a beer, etc.
Hi,
I think the Kinect hack is very cool. Love the idea of auto pausing when you leave the room.
Anyway, the Siri Remote is still very much work in progress. I hope to add more functionality and have Siri ask for episodes and seasons if you don’t state that explicitly.
All comments wecome.
Cheers!
Hjalti
Great work guys!
Could someone post a beginner tutorial here, maybe, for setting up dns, ruby and SiriProxy with Plex?
Is is possible to make some kind of .app for this (for the ruby/SiriProxy stuff)?
I think a lot of people would like to try this out, even though it’s a bit advanced
Well, you basically made my head explode with this one. Awesome work!
I can just imagine asking Siri: **"Show me recently added horror movies i haven't watched"**. With the capability of PMS that should be doable I assume, but I guess it will take quite awhile to build that in. Colored me impressed with what you have managed so far, and I will be keeping an eye on this thread daily :)
Kudos!
The step by step instructions on the github page are pretty good but again it's a bit advanced. Creating an app for this might be possible but since it needs a dedicated DNS running it's easier said than done.
I'm also maintainer of the SiriProxy project and we'll be discussing next steps soon.
I'll keep you posted.
Hi Hjaltij,
Great work so far, I bit the bullet and had go at getting this up and running and to my surprise I have the Siri Proxy up and running but I’m having problems with the plex plugin.
First of all, I got this error which seemed to suggest the code on line 109 was having trouble with the “port” reference.
<br />
<br />
[Recognized Speech] Play the latest episode of The Simpsons <br />
./plugins/plex/siriPlex.rb:109:in `speech_recognized': undefined local variable or method `port' for #<SiriPlex:0x1084392f8> (NameError)<br />
from ./tweaksiri.rb:84:in `speech_recognized'<br />
from ./tweaksiri.rb:83:in `each'<br />
from ./tweaksiri.rb:83:in `speech_recognized'<br />
from ./interpretSiri.rb:46:in `call'<br />
from ./interpretSiri.rb:46:in `speech_recognized'<br />
from ./siriProxy.rb:182:in `prep_received_object'<br />
from ./siriProxy.rb:102:in `process_compressed_data'<br />
from ./siriProxy.rb:72:in `receive_binary_data'<br />
from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/em/protocols/linetext2.rb:94:in `receive_data'<br />
from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine'<br />
from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run'<br />
from ./siriProxy.rb:245:in `initialize'<br />
from ./start.rb:17:in `new'<br />
from ./start.rb:17<br />
zlib(finalizer): the stream was freed prematurely.<br />
I'm no coder, so I had a stab at editing SiriPlex.rb and adding an "@" sign to port, similar to "@host" earlier on in the same line.
I got a different error, so I'm guessing my correction was wrong:
<br />
<br />
[Recognized Speech] Play the latest episode of The Simpsons <br />
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:277:in `open_http': 404 Not Found (OpenURI::HTTPError)<br />
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:616:in `buffer_open'<br />
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:164:in `open_loop'<br />
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:162:in `catch'<br />
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:162:in `open_loop'<br />
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:132:in `open_uri'<br />
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:518:in `open'<br />
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:30:in `open'<br />
from ./plugins/plex/plex_library.rb:17:in `xml_doc_for_path'<br />
from ./plugins/plex/plex_library.rb:22:in `all_shows'<br />
from ./plugins/plex/plex_library.rb:84:in `find_show'<br />
from ./plugins/plex/siriPlex.rb:110:in `speech_recognized'<br />
from ./tweaksiri.rb:84:in `speech_recognized'<br />
from ./tweaksiri.rb:83:in `each'<br />
from ./tweaksiri.rb:83:in `speech_recognized'<br />
from ./interpretSiri.rb:46:in `call'<br />
from ./interpretSiri.rb:46:in `speech_recognized'<br />
from ./siriProxy.rb:182:in `prep_received_object'<br />
from ./siriProxy.rb:102:in `process_compressed_data'<br />
from ./siriProxy.rb:72:in `receive_binary_data'<br />
from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/em/protocols/linetext2.rb:94:in `receive_data'<br />
from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine'<br />
from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run'<br />
from ./siriProxy.rb:245:in `initialize'<br />
from ./start.rb:17:in `new'<br />
from ./start.rb:17<br />
zlib(finalizer): the stream was freed prematurely.<br />
Hi, yeah some typos slipped in when I pushed it yesterday =). It should be fixed now (I pushed some changes this morning).
If you cloned my repo you can cd into that directory and do:
git pull origin master
- H
Thanks for the tweet Hjaltij, I just checked out your latest SiriPlex.rb and that @ sign was present, so it looks like I was on the right track.
I’m still getting the 404 error, but I think it could be because my 4S is connecting to my iMac (via WiFi Sharing on the 10.0.2.x range), the iMac is running SiriProxy and dnsmasq but my Plex Media Server is on a MacMini which resides on my normal network running on a 192.168.1.x range, so even though I have added my PMS details to SiriPlex.rb, I’m guessing it doesn’t know how to route from 10.0.2.x to 192.168.1.x ??
That might be a problem. Haven't tried it with WiFi sharing. I'm guessing you don't have WiFi on your home network?
My setup is the following.
Mac Pro -> Wired at 10.0.1.2, running DNSMasq and SiriProxy
iPhone 4S -> Connected to same network through WiFi with DNS set to 10.0.1.2
Mac Mini -> Wired at 10.0.1.75 (I'm connected to it through remote desktop in the video I made)
- H
Actually thinking about it, it should work fine as long as your iMac can connect to the Mac Mini. Did you make sure to put the 192.168.1.x address in siriProxy.rb?
- H
ok, I’m not getting the 404 anymore, it seems to try to do it, I get the following, but the episode never starts and siri spins around the Mic forever:
<br />
<br />
[Info - Guzzoni] Object: SpeechRecognized<br />
[Recognized Speech] Play the latest Simpsons episode <br />
[Info - Guzzoni] Object: AddViews<br />
[Info - Dropping Object from Guzzoni] AddViews<br />
[Info - Guzzoni] Object: Search<br />
[Info - Dropping Object from Guzzoni] Search<br />
[Info - Guzzoni] Object: AddViews<br />
[Info - Dropping Object from Guzzoni] AddViews<br />
[Info - Guzzoni] Object: AddViews<br />
[Info - Dropping Object from Guzzoni] AddViews<br />
[Info - Guzzoni] Object: RequestCompleted<br />
[Info - Dropping Object from Guzzoni] RequestCompleted<br />
Yeah it's work in progress =)
I still have to add different variations. It does only recognize specific phrases because the interpretation is handle by me instead of Apple (which has Siri trained for different combinations/different wording).
Try something like "Play the latest episode of Simpsons"
- H
Ah, that was me, I thought I was formatting the expression correctly, I’m back to the 404 error when I use the expression “Play the latest episode of Simpsons”.
<br />
<br />
[Recognized Speech] Play the latest episode of Simpsons <br />
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:277:in `open_http': 404 Not Found (OpenURI::HTTPError)<br />
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:616:in `buffer_open'<br />
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:164:in `open_loop'<br />
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:162:in `catch'<br />
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:162:in `open_loop'<br />
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:132:in `open_uri'<br />
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:518:in `open'<br />
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open-uri.rb:30:in `open'<br />
from ./plugins/plex/plex_library.rb:17:in `xml_doc_for_path'<br />
from ./plugins/plex/plex_library.rb:22:in `all_shows'<br />
from ./plugins/plex/plex_library.rb:84:in `find_show'<br />
from ./plugins/plex/siriPlex.rb:110:in `speech_recognized'<br />
from ./tweaksiri.rb:84:in `speech_recognized'<br />
from ./tweaksiri.rb:83:in `each'<br />
from ./tweaksiri.rb:83:in `speech_recognized'<br />
from ./interpretSiri.rb:46:in `call'<br />
from ./interpretSiri.rb:46:in `speech_recognized'<br />
from ./siriProxy.rb:182:in `prep_received_object'<br />
from ./siriProxy.rb:102:in `process_compressed_data'<br />
from ./siriProxy.rb:72:in `receive_binary_data'<br />
from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/em/protocols/linetext2.rb:94:in `receive_data'<br />
from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine'<br />
from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run'<br />
from ./siriProxy.rb:245:in `initialize'<br />
from ./start.rb:17:in `new'<br />
from ./start.rb:17<br />
zlib(finalizer): the stream was freed prematurely.<br />
zlib(finalizer): the stream was freed prematurely.<br />
sh-3.2#<br />
Damn, could be a bug on my part. Have you tried any other shows?
Also, put this line below uri = "... in line 17 in plex_library.rb
puts uri
Then you can see the url it's trying to call in the console.
Ps. Please watch my repo as well since I'm pushing small updates steadily and I don't want to post about it everytime. So just make sure you're always running the latest version. I just fixed one bug now when the show is not found.
Ah, I wonder if the different way people have their library sources setup will throw it out??
I have two TV sources in my Library, one for “TV (Adults)” and one for “TV (Childrens)” to save us having to scroll through all the kids TV shows and visa-versa for them.
The URL its attempting is “http://192.168.1.140:32400/library/sections/2/all” which indeed gives a 404 when I try it in the browser.
My Library is reported as:
<br />
<br />
MacMini2:Databases MacMini2$ sqlite3 com.plexapp.plugins.library.db SQLite version 3.6.12<br />
Enter ".help" for instructions<br />
Enter SQL statements terminated with a ";"<br />
sqlite> SELECT name,id FROM library_sections;<br />
TV (Kids)|5<br />
TV (Adults)|6<br />
Fitness|8<br />
Movies|9<br />
sqlite><br />
Yeah that makes sense. I need to find a way to have it work for different sections, this is kinda hard coded for my needs =)
Try http://192.168.1.140:32400/library/sections/ this in your browser and either paste the output here or find the key for your TV Shows section and replace the "2" with that.
- H