[Debian] [Ubuntu] SiriProxy

スポンサーリンク

環境

Soft-float Debian “wheezy” + Raspberry Pi
ARM (OMAP4) Ubuntu 11.10 を 12.04 にアップグレードしたもの on PandaBoard
iPhone 5 (iOS 6.1)

必要なパッケージのダウンロード

$ sudo apt-get install curl gcc make git zlib1g-dev g++ libssl-dev

Ruby のインストール

Raspberry Pi への RVM を使用した Ruby のインストール方法はこちら

SiriProxy のダウンロード

GitGub から入手します.
ホームディレクトリ下に SiriProxy 用の隠しディレクトリを作成し,そこに設定ファイルをコピーします.

$ git clone https://github.com/plamoni/SiriProxy.git
$ cd SiriProxy
$ mkdir ~/.siriproxy
$ cp ./config.example.yml ~/.siriproxy/config.yml

gem install bundler

$ gem install bundler

結果,

Fetching: bundler-1.2.3.gem (100%)
Successfully installed bundler-1.2.3
1 gem installed
Installing ri documentation for bundler-1.2.3...
Installing RDoc documentation for bundler-1.2.3...

rake install

$ rake install

結果,

siriproxy 0.4.0 built to pkg/siriproxy-0.4.0.gem
siriproxy (0.4.0) installed

証明書

証明書を作成します.

$ siriproxy gencerts

結果,

Creating CA directory
Generating 'SiriProxyCA' CA request
Self-signing 'SiriProxyCA' CA
Generating guzzoni.apple.com certificate request
Generating 'SiriProxyCA' CA request
Generating guzzoni.apple.com certificate
Removing passphrase from guzzoni.apple.com key
Cleaning up...
Done! (For details on any errors, check '/Users/user/.siriproxy/cert.log')
-------------------------------------------------------------

Please install /Users/user/.siriproxy/ca.pem onto your phone!
(Note: You can do this by emailing the file to yourself)

-------------------------------------------------------------

ca.pem を電子メールに添付し,iPhone へ送信します.

iPhone で電子メールを受信し,ca.pem をインストールします.

bundle install

$ bundle install

結果,

Fetching gem metadata from http://rubygems.org/..........
Fetching gem metadata from http://rubygems.org/..
Using rake (10.0.3) 
Using CFPropertyList (2.1.2) 
Installing geocoder (1.1.6) 
Installing cora (0.0.4) 
Using eventmachine (1.0.0) 
Using uuidtools (2.1.3) 
Using siriproxy (0.4.0) from source at /home/lovely/Downloads/SiriProxy 
Using siriproxy-example (0.0.1) from source at ./plugins/siriproxy-example 
Using bundler (1.2.3) 
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

SiriProxy の起動

$ rvmsudo siriproxy server

下記のようなワーニングが表示されます.
このワーニングは,export rvmsudo_secure_path=1 を環境設定することで出なくなります.

Warning: can not check `/etc/sudoers` for `secure_path`, falling back to call via `/usr/bin/env`, this breaks rules from `/etc/sudoers`. export rvmsudo_secure_path=1 to avoid the warning.[sudo] password for user:

—– ここから Raspbbery Pi のみの場合 —–

sudo パスワード実行後,下記のようなエラーとなります.

/home/user/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/psych.rb:297:in `initialize': No such file or directory - /root/.siriproxy/config.yml (Errno::ENOENT)
	from /home/user/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/psych.rb:297:in `open'
	from /home/user/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/psych.rb:297:in `load_file'
	from /home/user/.rvm/gems/ruby-1.9.3-p385@SiriProxy/gems/siriproxy-0.4.0/lib/siriproxy/command_line.rb:143:in `parse_options'
	from /home/user/.rvm/gems/ruby-1.9.3-p385@SiriProxy/gems/siriproxy-0.4.0/lib/siriproxy/command_line.rb:33:in `initialize'
	from /home/user/.rvm/gems/ruby-1.9.3-p385@SiriProxy/gems/siriproxy-0.4.0/bin/siriproxy:6:in `new'
	from /home/user/.rvm/gems/ruby-1.9.3-p385@SiriProxy/gems/siriproxy-0.4.0/bin/siriproxy:6:in `'
	from /home/user/.rvm/gems/ruby-1.9.3-p385@SiriProxy/bin/siriproxy:23:in `load'
	from /home/user/.rvm/gems/ruby-1.9.3-p385@SiriProxy/bin/siriproxy:23:in `'

rvmsudo で実行しているので,ユーザのホームディレクトリではなく root のホームディレクトリを見ている?ようです.
rvmsudo で実行しつつ,設定ファイルはユーザのホームディレクトリを使用する方法がわからないので,ひとまずユーザのホームディレクトリ下の .siriproxy を root のホームディレクトリにコピーすることにします.

$ sudo cp -r ~/.siriproxy /root/

再度,rvmsudo で SiriProxy を起動します.

$ rvmsudo siriproxy server

—– ここまで Raspbbery Pi のみの場合 —–

SiriProxy が TCP:443 ポートで起動します.

Starting SiriProxy on 0.0.0.0:443..
SiriProxy up and running.

DNS サーバの設定

SiriProxy の名前解決を行うために DNS サーバを立ち上げます.
今回は,dnsmasq を使用しました.
dnsmasq を起動させます.

Debian + Raspberry Pi の場合のインストール,設定方法,起動方法はこちら

Ubuntu + PandaBoard の場合のインストール,設定方法,起動方法はこちら

iPhone のネットワーク設定

iPhone の DNS サーバの設定で,dnsmasq が起動しているマシンの IP アドレスを指定します.

iPhone から SiriProxy へ接続

iPhone の Siri に対して,何か喋ってみます.
SiriProxy を起動しているコンソールに反応があれば,恐らく正常に動作しているはずです.

iOS の 設定 – 一般 – 言語環境 – 音声コントロールを英語(アメリカ合衆国)に設定すると,https://github.com/plamoni/SiriProxy/blob/master/plugins/siriproxy-example/lib/siriproxy-example.rb に記述されているテストパターンを試すことができます.
例えば,Where am I? と Siri に話しかけると,現在地の地図が表示されます.

rb ファイル編集後

Ruby アプリケーションについてはさっぱり分からないですが,rb ファイル編集後,その内容を反映させるためには,
SiriProxy を終了させ,SiriProxy のプロセス (bash /Users/user/.rvm/bin/rvmsudo siriproxy server) を kill し,rake install 実行後,再度 rvmsudo siriproxy server を実行すればよい模様.

SiriProxy のアップデート

この部分は必要無いかもしれないですが,アップデートする場合は下記のように行うようです.

$ siriproxy update .