2015年2月28日土曜日

カケホを契約していない端末でカケホを利用する【つなぐ】

Bluetooth-VoIPゲートウェイから始まった【つなぐ】ですが、いまやその種類が増え、開発中のものを含め、4種類となりました。
種類が増えることは良いことなのですが、それだけ一つ一つが分かり辛くなってきます。




そこで、複数ある【つなぐ】について整理をしたいと思います。


【 「つなぐ」とは何か? 】

以前は、『話し放題を契約したガラケーを、スマホから利用できるようにすること』と、説明していました。
しかし、現在は3G版【つなぐ】や、アプリ版【つなぐ】があることから、その説明が合わなくなってきました。
今の【つなぐ】は、次のような説明がしっくり来ると思います。

『話し放題を契約してない端末から、話し放題を利用すること』


なお、今までの【つなぐ】に関する記事は、ブログ右側(スマホサイトの場合は一番下)のメニュー「つなぐ」からご覧ください。



【 4種類の異なる「つなぐ」 】

現在は以下の4種類の【つなぐ】が存在します。

  • BT-GW版【つなぐ】
  • 3G版【つなぐ】
  • BT版【つなぐ】
  • アプリ版【つなぐ】


    「BT-GW版」、「3G版」、「BT版」【つなぐ】は、VoIPを利用します。
    アプリ版【つなぐ】はキャリア回線(PSTN)を利用します。
    まずは、これが大きな違いとなります。

    各【つなぐ】は、それぞれ特徴が異なりますので、簡単に説明していきます。
    なお、金額の紹介では、月々サポートや各種キャンペーンは除外した料金としています。


    ◆ BT-GW版【つなぐ】
    Bluetooth-VoIPゲートウェイとIP-PBXにより構成されます。
    これと、話し放題を契約したケータイをBluetooth接続することで実現します。
    常時持ち歩く端末はスマホ1台のみです。
    なお、発信者番号は、話し放題回線の番号が通知されます。


    <メリット>
  • 理屈上、PHS含めどのキャリアでも収容できる。

    <デメリット>
  • 高価

    <月額費用>
    話放題回線料(¥1500~2200)
    MVNO料金(¥1000程度から)

    例)1人で利用した場合
      2200+1000=¥3200

    例)5人が個々に使った場合(カケホを2200円として計算)
      (2200+1000)×5=¥16000

    例)5人でシェアした場合
      2200+(1000×5)=¥7200


    ◆ 3G版【つなぐ】
    3Gモデム(話し放題SIM入り)が接続されたIP-PBXのみで構成されます。
    常時持ち歩く端末はスマホ1台のみです。
    なお、発信者番号は、話し放題回線の番号が通知されます。


    <メリット>
  • 音声SIMカードをUSBモデムに直接差し込むため、別途ケータイを必要としない。
  • 導入費がBT-GW版【つなぐ】の約半額。

    <デメリット>
  • 使えるSIMはドコモとソフトバンク(Y!mobileの3G含む)のみ。

    <月額費用>
    話放題回線料(¥2200)
    MVNO料金(¥1000程度から)

    例)1人で利用した場合
      2200+1000=¥3200

    例)5人が個々に使った場合(カケホを2200円として計算)
      (2200+1000)×5=¥16000

    例)5人でシェアした場合
      2200+(1000×5)=¥7200


    ◆ BT版【つなぐ】
    話し放題ケータイとBluetooth接続されたIP-PBXで構成されます。
    常時持ち歩く端末はスマホ1台のみです。
    なお、発信者番号は、話し放題回線の番号が通知されます。

    <メリット>
  • 理屈上、PHS含めどのキャリアでも収容できる。
  • 導入費がBT-GW版【つなぐ】の約半額。

    <デメリット>
  • 非常に相性が強く、そのケータイを収容可能かどうかはやってみるまで分からない。(高確率で収容できない。)
  • LinuxとケータイとをBTペアリングさせる知識を要する。

    <月額費用>
    話放題回線料(¥1500~2200)
    MVNO料金(¥1000程度から)

    例)1人で利用した場合
      2200+1000=¥3200

    例)5人が個々に使った場合(カケホを2200円として計算)
      (2200+1000)×5=¥16000

    例)5人でシェアした場合
      2200+(1000×5)=¥7200


    ◆ アプリ版【つなぐ】
    今までの【つなぐ】とは異色の存在。
    話し放題回線の転送先を変更することにより、別の端末から無料発信が可能。
    家族間無料通話と話し放題回線とを組み合わせることにより実現する。
    上記操作をアプリで自動化することにより、シームレスな発信を行う。
    なお、発信者番号は話し放題回線の番号ではなく、アプリを入れた端末の電話番号が通知される。


    <メリット>
  • キャリア回線を使うため、安定した通話が可能。
  • 初期導入費が安価。
  • 発信者番号を自分の持つ(話し放題ではない)ケータイの電話番号にできる。
  • 着信時は話し放題回線を経由しない。

    <デメリット>
  • 発信するまでに少し時間がかかる。
  • 2台持ちになる。(通信不要であれば、ガラケーのみで1台持ち可)
  • ソフトバンク未対応。
  • (開発中のためまだ利用できない。)

    <月額費用>
    話放題回線料(¥2200)
    au最安料金プラン+Eメール(ガラケー:¥1043 スマホ:¥1234)
    MVNO料金(¥1000程度から)
    アプリ利用料(¥84)

    例)2人で利用した場合(1人で利用は無意味なので2人を掲載)
      2200+(1043~1234+1000+84)×2=¥6454~¥6836

    例)5人でシェアした場合
      2200+(1043~1234+1000+84)×5=¥12835~¥13790



    【 「つなぐ」の選び方 】

    まず、理解して頂いきたいのが、音質についてです。
    音質と言っても、音のキレイさではありません。
    「音声が途切れない」などの品質になります。

    「BT-GW版」、「3G版」、「BT版」はすべてVoIPと呼ばれる技術を用いて通話します。
    VoIPでの通話は、9割は完璧です。
    しかし、残りの1割(電波の弱い場所など)は通話相手がかなり聞き取りづらい状況となります。

    よって、この1割をも網羅するためには「アプリ版【つなぐ】」が必須となります。『VoIP版【つなぐ】』(※)は向きません。

    まず、以上が大前提となります。それを踏まえた上で、以降の導入編をお読みください。


    【つなぐ】を選ぶ上でまず必要なことは、導入費及び月額料金、そして用途です。

    導入費などの金額は、キャリアの施策によって大きく変動します。
    よって、ここでは金額については触れず、用途別に【つなぐ】の選び方の一例を紹介します。
    なお、それぞれの【つなぐ】で何ができるか?ではなく、「○○にはどの【つなぐ】が向いているか?」の形式で紹介したいと思います。


    ※ ここでは「BT-GW版」、「3G版」、「BT版」【つなぐ】を総称して、『VoIP版【つなぐ】』と言います。



    ◆ スマホの2台持ちになっても構わない。・・・アプリ版【つなぐ】

    ◆ 2台持ちは嫌だ、1台持ちにしたい。・・・VoIP版【つなぐ】

    ◆ 回線をシェアして且つ、発信者番号をそれぞれ異なるものとしたい。・・・アプリ版【つなぐ】

    ◆ キャリアの契約を極力減らしたい。・・・VoIP版【つなぐ】

    ◆ 家の固定回線が遅い、もしくは不安定。・・・アプリ版【つなぐ】

    ◆ 利用は自分一人。用途はプライベート。・・・VoIP版【つなぐ】

    ◆ とにかく安くすることが目的。安ければ大抵のことは許容できる。・・・VoIP版【つなぐ】



    【 まとめ 】

    スマホの2台持ちになっても構わない人や、VoIPが嫌な人は、アプリ版【つなぐ】がお勧めです。
    スマホやケータイの2台持ちから開放されたい、スマホ1台に集約したいという人は、VoIP版【つなぐ】がお勧めです。

    しかし、アプリ版【つなぐ】は現在まだ開発中です。(BitBadOldMan氏による)
    開発が完了した時点であらためて紹介するとともに、BitBadOldMan氏への利用申込手段も考えたいと思います。


  • アプリ版【つなぐ】オーダーフォームへ(未設置)

  • VoIP版【つなぐ】オーダーフォームへ(提供終了)



    VoIP版【つなぐ】は多少の英語とLinuxの知識さえあれば、自分でも製作可能です。
    上記のVoIP版【つなぐ】オーダーは自分で作れない人のために、私が一式製作してお送りするものです。
    可能であれば、自分で楽しみながら作ることをお勧めします。

    なお、アプリ版【つなぐ】も、プログラムが書ける人(スマホアプリが作れる人)であれば制作可能です。
    しかし、学生時代に友人の書いたプログラムを、丸写しして提出していたような私にはさっぱりわかりません\(^o^)/
  • 2015年2月26日木曜日

    IP電話(VoIP)に最適なSIPクライアント「Zoiper」

    行き着くところまで行き着いた気がする【つなぐ】ですが、まだまだ満足できず、いまだに色々と検証をすすめています。
    先日は電子レンジにスマホ入れて、電波の遮断試験なんてこともしていました。

    そのようなテストも、SIPクライアントの中では最強だと思っていたAcrobits社の「Groundwire」で行っていました。
    しかし、Android環境においては圧倒的なまでに、「Zoiper」の方が高音質であることがわかりました。




    今回は、その「Zoiper」(正式名称:Zoiper IAX SIP VOIP Softphone)について紹介したいと思います。

    ※【つなぐ】については以下の記事をご覧ください。
    ガラケー(話し放題)と、スマホ(MVNO)を【つなぐ】>(概要説明)
    MVNO(データSIM)で「話し放題」を実現する 【つなぐ】>(設定紹介)



    【 SIPクライアントについて 】

    SIPクライアントとは、IP電話などのVoIPを使う際には、必須となるアプリです。
    このアプリの性能が、音質や使い勝手に大きく影響します。

    高音質なSIPクライアントとしては以下の2つが有名です。
  • CSipSimple
  • Acrobits社製品全般(SoftphoneやGroundwireなど)

    この他にも、もちろん高音質なSIPクライアントもあるのですが、大抵何かが足りません。
    電池持ちだったり、使い勝手だったり・・・。
    すべてを兼ね備えたものとしては、やはり先の2アプリが最高で・・・した。“いまの”「Zoiper」を知るまでは。



    【 Zoiperについて 】

    「Zoiper」(正式名称は「Zoiper IAX SIP VOIP Softphone」)

    これはAndroid版からiPhone版、Windows版まであるかなり有名なアプリです。
    このブログでも今まで、幾度も「Zoiper」を検証してきました。
    検証している中、高音質なアプリだとは思っていましたが、それでも「CSipSimple」や「Acrobits Groundwire」には及びませんでした。

    しかし、「Zoiper」の更新頻度は早いです。
    積極的に開発を行い、不具合解消とともに高音質化にも務めていたようです。
    私の知らぬ間に、「Zoiper」はものすごい高音質なSIPクライアントへと変貌していました。

    また、高音質なだけでなく、電話帳からの発信も可能で、かつ面倒な回線の切替作業も必要としません。
    発信時に使用回線が選べるタイプなので、非常に使い勝手が良いです。



    【 音質の検証 】

    これ以上Zoiperについて語っても仕方がありませんので、早速、音質の検証を行います。

    音質については自分がどう聞こえるかより、自分の声が相手にどのように聞こえているかが重要なため、それを掲載します。
    なお、実際の使用環境に近づけるため、エアコンの音やパソコンの風切音など、環境ノイズのある状態で試験しています。
    また、パソコンのスピーカから出る音をスマホのマイクで拾っていますので、どうしても音質は悪くなります。

    そのあたりを考慮して音声データは聞いてください。
    (それでも、各SIPアプリの傾向は掴めるため、参考になると思います。)

    検証対象は以下のSIPクライアントとします。
  • Zoiper IAX SIP VOIP Softphone
  • Acrobits Groundwire
  • CSipSimple


    [検証環境]
  • WX12K(GP-712とBT接続済)
  • L-01F(Asteriskに接続)
  • SH-07D(遅延計測用 ドコモ音声SIM使用)

    [回線種別]
  • Wi-Fi(光回線)
  • LTE(ドコモ)

    [使用コーデック]
  • iLBC

    [録音環境]
  • 「FUSION IP-Phone SMART」の留守電(128kbps RIFF-WAVE)

    [遅延測定条件]
  • 「L-01Fから音声を発信してから、SH-07Dがそれを受信する」までのタイムラグの測定

    [音声の元データ]


    [検証結果]

    SIPクライアント 音質 遅延時間
    Wi-Fi LTE
    Zoiper

    353ms 423ms
    Acrobits Groundwire

    301ms 392ms
    CSipSimple

    478ms 369ms



    ◆ Zoiper の検証

    [音質]

    ザラザラした音の中に、さらに若干のノイズが混じっています。
    お世辞にも「高音質」とは言えません。
    実際にリアルタイムに耳で聞いてみても、あまり良い音質とは言えませんでした。

    遅延時間については問題ありません。Groundwireには及びませんが、十分高速です。

    ただ、やはり音が汚いのが気になります。
    これは同一環境で何度試験しても、このような結果となりました。

    しかし、なぜか通常の音声通話においては、非常にスムーズな会話が可能です。
    また、ゲームセンターのような騒々しい場所での通話も可能でした。


    [使い勝手]

    最高に使いやすいです。
    電話帳との連携も完璧で、VoIPを使っていることを意識しません。

    また、自前でSTUNサーバを持っているため、NAT超えの設定も非常にシンプルです。
    「STUN」にチェックするだけです。

    なお、3G/LTEとWi-Fiとで、いちいち発信アカウントを切り替える必要もありません。
    発信時に現在接続中のアカウントが簡単に選択できます。



    ◆ Acrobits Groundwire の検証

    [音質]

    バックミュージックが聞こえなくなるぐらいに、元の音質から変化します。
    そのぐらいに「音声部分のみ」取り出そうとしていることがわかります。

    独特の音質なのですが聞き取りやすい音声で、ノイズもありません。
    しかし、なんとなく声が震えているような、文節の始まりと終わりに波があるような、そんな印象はあります。(しかし、実際の会話ではそのようなことは一切ありません。)

    (騒々しい場所での通話は未検証です。)


    [使い勝手]

    電話帳との連携は完璧です。

    しかし、3G/LTEとWi-Fiとでいちいち発信アカウントを切り替える必要があり、これがかなり煩わしく感じます。
    「あれ?なんで発信できなんだ?」と思うと、アカウントの切替を忘れているためだったりします。



    ◆ CSipSimple の検証

    [音質]

    音は若干こもった感じに聞こえますが、一番忠実に音声を再現しているのは、やはりこれです。
    ただし、音声は忠実に再現すれば良いというわけではないため、音質については好みが分かれると思います。

    なお、騒音下においては、その騒音も忠実に再現され、話が聞き取りにくくなります。
    しかし、音声と環境ノイズとが混ざって、消去されてしまうようなこともありません。


    [使い勝手]

    電話帳との連携は完璧です。
    完璧どころか、電話番号によって利用先回線を切替えたり、別途プラグインによりコールバック機能を持たせたりと、様々なことができます。

    まさに、かゆいところに手が届く使い勝手となっています。
    これについては文句なしです。

    しかしネットワークの詳細設定をアカウントごとに変えられない不思議な仕様となっています。
    これが原因で「3G/LTE」と「Wi-Fi」をシームレスに使うことができません。
    (3G/LTEだけかWi-Fiだけかの運用になってしまいます。)



    【 まとめ 】

    今回は「Zoiper」を推奨したくて、本記事を書き始めたのですが、実際に検証してみると、結局は「Acrobits Groundwire」の音質が、頭一つ抜けていることがわかります。

    しかし、「Zoiper」はなぜだか使いやすく感じます。
    まず、相手から自分へ届く音声のクリアさにびっくりします。

    これは、「Groundwire」など比較にならないぐらい高音質です。
    今まで検証したSIPクライアントの中で、最も高音質に感じます。

    実は、Zoiperはこれが理由で「素晴らしく感じているだけ」のプラシーボなのかも知れません。



    なお、今回は取り上げませんでしたが、どんなSIPクライアントを使っても低音質になってしまう「SC-01F」(Galaxy Note3)が、唯一「Zoiper」では高音質で安定させられました。
    この機種が高音質で使えるとなると、他のどんな機種でも安定して使えそうな気がします。

    また、NAT越えもチェック一つで簡単にできます。


    Zoiperの良い所をまとめると以下のとおりです。

  • どんな機種でも高音質になる。(と予想する。)
  • NAT越えに悩まない。
  • 3G/LTEとWi-Fiの切り替えがない。
  • バッテリー消費量が少ない。

    以上のことから、「Zoiper」も「Groundwire」に負けないぐらい優れたSIPクライアントと言えます。
    さらに、これほどの性能を持っていながら、無料であることも非常に評価できます。

    今まではずっと「Groundwire」を使っていましたので、これからはしばらく「Zoiper」を使ってみて、その評価を確実なものにしていきたいと思います。



    [2015.03.02追記]

    【 Zoiperの設定について 】

    本記事を書いてからしばらく「Zoiper」を使っていました。
    結論として、私は「Groundwire」ではなく、「Zoiper」を常用しようと思います。

    なお、「Automatic Gain Control filter」という項目をOffにすることにより、音質が激的に改善しました。
    本記事の検証結果はこの項目が「On」(デフォルト)です。
    これだと音が汚いだけでなく、相手に届く音量が極めて小さくなります。

    以下に理屈ではなく、私の実使用環境において最適であった設定を紹介します。
    (音質やネットワーク及び使い勝手に関する部分のみ抜粋。赤字は音質に影響する部分。)


    <Accounts>
    Enable on start : ON (アカウント有効)
    Audio Codecs Settings : iLBC30 (高速回線であってもこれのみ)
    Network Settings → NAT : キャリアSIMとプライベートIP付与のMVNOは「Use STUN」 それ以外は「No」

    <Audio>
    Echo cancellation : Off (エコーがかからない状況ではOffが良い。)
    Automatic Gain Control filter : Off (On→Off必須)
    Incoming Call Vibration : On (マナーモード以外でもバイブを有効)
    Speaker Gain : 0dB (受話音量調整)
    Use Less CPU(Lower Quality) : Off (低速スマホでもOffで良い。)

    <Connectivity>
    Keep alive WiFi : On (WiFi切断防止)
    Stay awake : On (常時起動)
    Run in background : On (常時着信可能)

    <Advanced>
    Strip .-()[]{}/ in caller-id : On (電話帳から不要な文字列を削除して発信する。)
    Start with Android : On (スタート時起動)
    Dialer integration : On (電話帳連携)
    Use default account : Off (Offにしていると発信時にアカウントが選べる。)
  • 2015年2月22日日曜日

    インストールディスクを無くした「Windows7」をインストールする方法

    PCが不安定になってきたため、Windows7を再インストールすることにしました。

    どうせ再インストールするならということで、元々4GB積んでいたメモリを16GBまで増設します。
    さらに、Windows7の32ビット版から64ビット版に鞍替えすることにしました。

    しかし、私が持っているWindows7は32ビット版のみです。
    32ビット版のWindows7を所持しているにもかかわらず、64ビット版のWindows7を再度購入しなければならないのでしょうか。




    ・・・そういえば、妻が紅茶をこぼしてお亡くなりになったノートPCが「Windows7 Pro」の64ビット版でした。

    しかし、Windowsのインストールディスクなんてとっくに無くしました。
    もう、どこにあるのかわかりません。

    もしかするとHDDの中にリカバリ領域があり、そこから復旧するタイプだったのかもしれません。
    しかし、いずれにしても、そんな領域も妻のこぼした紅茶とともに流れ去りました。



    【 Windows7のプロダクトキーを探す 】

    とりあえず、Windowsのプロダクトキーさえあれば何とかなるだろうと考え、ミルクティーの香りが漂うノートPCを裏返します。
    数か月経ったにもかかわらず、ミルクティーの芳しい香りがします。
    これはアールグレイだな、などと思いつつ、プロダクトキーのシールを探します。

    プロダクトキーのシールは非常にわかりやすい場所に貼り付けられていました。
    まずはこれをメモします。


    ※ プリインストール版のWindowsを他のPCで使うことはライセンス違反となりますのでご注意ください。
      (このあたりの話は難しいので、わからない場合はMicrosoftに聞いてみてください。)



    【 Windows7のイメージを入手する 】

    単純に考えて、Windows7のインストールディスクなんて1枚1枚オリジナルであるはずがありません。
    ということは、何らかの手段でWindows7のイメージさえ入手できれば、先ほどメモしたプロダクトキーでインストールできるはずです。

    Google先生に聞いてみます。
    『Windows7 ダウンロード』っと・・・。

    いっぱい出てきます。
    以下、各種Windows7のイメージファイルのダウンロード先です。

    詳細はわかりませんが、イメージをダウンロードするだけなら合法らしいです。
    不正なライセンスキーの入手、及び使用は違反になります。

  • Windows 7 Home Premium x86 SP1

  • Windows 7 Home Premium x64 SP1

  • Windows 7 Professional x86 SP1

  • Windows 7 Professional x64 SP1

  • Windows 7 Ultimate x86 SP1

  • Windows 7 Ultimate x64 SP1


  • なお、Windows8やWindows8.1であっても、似たような方法で簡単に且つ合法的にインストールディスクが作成可能です。



    【 Windows7をインストールする 】

    Windows7は、Ultimate版以外は標準で日本語に対応していません。
    (通常利用でUltimate版なんて使いません。)

    普通の方法では、Ultimate版以外は日本語化できません。

    そこで、普通ではない方法でUltimate版以外の「Home Premium」及び「Professional」を日本語化する方法を考えます。
    なお、この方法で日本語化されたWindows7は、通常の日本語版のWindows7と全く同一のものになります。


    まずは、上記リンクよりダウンロードしたWindows7を、DVDメディアに焼くなどして、普通にインストールします。
    なお、プロダクトキーには、先ほどメモしたものを使います。

    インストール中のキーボード選択や時間設定は日本の環境に合わせます。


    ※ インストールメディアには何種類かあるようで、持っているプロダクトキーが通らない場合もあります。
    そうした場合は、上記インストールイメージ以外を探して試してみてください。
    実際、上記イメージでは、私の所有するWindows7のうちの1つが、通りませんでした。



    【 Windows7を日本語化する 】

    ここでは「Windows7 Professional x64」を例にして話を進めます。
    まず、前述の手順によりWindows7がインストールできていることを前提とします。

    まずは、日本語言語データを用意します。

    これはMicrosoftからDLできるものなのですが、多言語パックをダウンロードして、そのイメージでインストールメディアを作って、それから日本語部分だけを抽出して・・・
    と、かなり面倒くさい作業が必要になります。

    そのため、自分用として抽出済みのものを作成したので、もし使いたい方がいたらこれを使ってください。
  • Windows7用日本語言語パック


    管理者権限でコマンドプロンプトを開きます。
    スタートメニュー → All Programs → Accessories → Command Prompt  右クリック Run as administrator



    以下のコマンドを入力します。
    「E:\langpacks\ja-jp\lp.cab」には先程の「Windows7用日本語言語パック」の保存先を指定します。

    dism /online /add-package /packagepath:E:\langpacks\ja-jp\lp.cab


    以下のような画面になり・・・



    このように表示されれば成功です。

    The operation completed successfully.
    Restart Windows to complete this operation.
    Do you want to restart the computer now (Y/N)?


    ここでは「N」を選んで、まだ再起動しません。


    Winキー+R(ファイル名を指定して実行)から以下コマンドを入力します。

    regedit


    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MUI\UILanguages\en-US
    を削除します。(※)

    ※ 上記の意味がわからない場合は、以下を保存・実行してください。
    なお、これはレジストリの該当部分のサブ・キーを削除する命令ですので、ご利用は自己責任にてお願いします。
  • en2jp.reg

    再起動します。


    スタートメニュー → すべてのプログラム → アクセサリ → コマンド プロンプト  右クリック 管理者として実行
    (すでにしっかりと日本語になっています。)

    以下コマンドを入力します。
    bcdedit /set {current} locale ja-jp
    bcdboot %WinDir% /l ja-jp


    以上で完成です。



    【 余談 】

    (数ヶ月前の話)

    紅茶をこぼした妻は、かなり切羽詰まった顔をしながら私のところに来て言いました。
    (この時、私はまだ妻が紅茶をこぼしたことを知りません。)


    「PCの電源がつかなくなったよ。」

    「え?なんでだろう?」

    「何度電源を入れても画面が付かないの。」

    「うーん・・・。見てみるよ。」

    「・・・さっきね。PCに紅茶がかかったの。そしたら電源が切れたみたい。」

    「えーと・・・?」

    「・・・・ちょっとキーボードの上に紅茶がこぼれたみたいなんだけど、そうしたら電源が切れたの。それからは何度も電源ボタンを押しても動かないよ。」

    「ちょっとこぼしたぐらいなら、乾けばまた動いたりするよ。どっちにしても見てみるね。」


    ノートPCの場所へ移動
    (ああ、確かにちょっと紅茶がこぼれてるわ・・・。)

    私がノートPCを持ち上げてみると、通風口やコネクタの隙間から紅茶が流れ出てきました・・・。
    (ちょっとどころじゃないし!)


    「“ちょっと”こぼしたの?」

    「ちゃんと拭いたよ?」

    「いや、そーじゃなくて・・・、もう一回聞くね。“ちょっと”こぼしたの?」

    「キーボードの上にコップが勝手に倒れたみたい。」

    「コップって勝手に倒れるの?」

    「・・・・倒れるよ?」



    私は一体、何歳児とお話をしているのだろうか・・・。
    ちなみに、この後、ちゃんと妻の「ごめんなさい」が聞けたわけですが、妻の「ごめん」はかなりレアなので、それだけでよしとします(笑)



    余談の余談ですが、ほとぼりが覚めた妻は、
    「ゲームができない。即日中にPCが必要だから何とかせよ。」
    との命令を私に下し、その日のうちにマウスコンピュータ(元本社)でPCを1台買ってきました・・・。

    余談ついでにひとつ、マウスコンピュータのPCはなかなかお勧めです。
    見た目にこだわらなければ、日本で一番コストパフォーマンスが高いと思います。
  • 2015年2月15日日曜日

    Asteriskに最強コーデックの「Opus」を対応させる

    Asteriskに「Opus」を対応させました。
    これにより、超高音質で低遅延な環境が出来上がりました。
    「Opus」については、以前書いた記事<VoIPに音声コーデック「Opus」を使いたい>をご覧ください。




    毎度のことですが、ここに至るまでにはかなりの時間を費やしました。
    しかし、成功してしまうとあっけないもので、難易度はそれほど高くありません。

    今回は、AsteriskにOpusを対応させた備忘録を残します。



    【 環境 】

    ハードウェアには「Raspberry Pi B+」を用い、Linuxディストリビューションには「Raspbian」(Debian)を使いました。
    同様の手順でArchLinuxやFedoraなどにも対応できると思いますが、今回は未確認です。

    また、CuBox-i2(Debian+Asterisk)でも、全く同じ手順でOpusに対応させられました。
    なお、後述する検証結果については、この「CuBox-i2」によるものです。



    【 Asteriskのインストール~Opus対応手順 】

    私はものぐさなのでsudoなどは使わず、すべてrootで作業します。
    
    ●元々Asteriskがインストールされている場合は、まずはそれを削除します。
    apt-get --purge remove asterisk
    rm -r /usr/lib/asterisk/modules
    
    ●パッケージリストを更新します。
    apt-get update
    
    ●開発に必要なパッケージ類などをインストールします。
    apt-get install autoconf automake pkg-config
    apt-get install libncurses5-dev
    apt-get install uuid-dev
    apt-get install libjansson-dev
    apt-get install libxml2-dev
    apt-get install libsqlite3-dev
    apt-get install libssl-dev
    apt-get install libopus-dev
    
    
    ●Asterisk Ver11.9.0をダウンロードして、解凍します。
    cd /usr/src
    wget http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-11.9.0.tar.gz
    tar zxvf asterisk-11.9.0.tar.gz
    
    ●AsteriskにOpus対応パッチを当てて、makeします。
    cd asterisk-11.9.0
    wget https://raw.githubusercontent.com/netaskd/asterisk-opus/master/asterisk-11.5.0_opus+vp8.diff patch -p1 -u < asterisk-11.5.0_opus+vp8.diff ./bootstrap.sh ./configure make menuselect (Codec TranslationsにOpusがあることを確認するだけ。省略可。) make make install make samples make config ●再起動後、自動でAsteriskが立ち上がります。 reboot


    【 Asterisk実行ユーザの変更 】

    インストールした直後のAsteriskは、root権限で稼働します。
    これは、セキュリティ上好ましくないため、ユーザに「asterisk」を追加し、そのユーザ権限でAsteriskを実行させます。
    (root権限のまま実行していても、実用上の問題はありません。)
    
    ●「asterisk」というユーザを追加し、権限などの調整をします。
    groupadd -g 5060 asterisk
    useradd -g 5060 -u 5060 -d /var/lib/asterisk -s /sbin/nologin asterisk
    chown -R asterisk:asterisk /var/run/asterisk
    chown -R asterisk:asterisk /var/lib/asterisk
    chown -R asterisk:asterisk /var/log/asterisk
    chown -R asterisk:asterisk /var/spool/asterisk
    chown -R asterisk:asterisk /usr/lib/asterisk
    chown -R asterisk:asterisk /etc/asterisk
    chmod -R u=rwX,g=rX,o= /var/run/asterisk
    chmod -R u=rwX,g=rX,o= /var/lib/asterisk
    chmod -R u=rwX,g=rX,o= /var/log/asterisk
    chmod -R u=rwX,g=rX,o= /var/spool/asterisk
    chmod -R u=rwX,g=rX,o= /usr/lib/asterisk
    chmod -R u=rwX,g=rX,o= /etc/asterisk
    
    ●Asteriskの設定ファイルを編集します。
    nano /etc/asterisk/asterisk.conf
    
    ・以下のコメントアウトを外す。
    [options]
    ;runuser = asterisk
    ;rungroup = asterisk
    ↑
    この2ヶ所の「セミコロン」を削除
    
    ●リブート
    reboot
    
    ●リブート後、ユーザ「asterisk」でAsteriskが稼働しているか確認します。
    asterisk -vvvvr
    
    次のように表示されていれば成功です。
    Running as user 'asterisk'                       
    Running under group 'asterisk'
    
    
    
    【 Opusを使う 】
    
    ●sip.confでOpusの使用を許可します。
    allow=opus
    
    
    これでAsteriskでOpusが使えるようになります。
    
    
    ●「Opus」に対応したSIPクライアントを使います。
    
    Acrobits製の「Softphone」や「Groundwire」、また、フリーでは「CSipSimple」が「Opus」に対応しています。
    


    【 音質の検証 】

    今まで幾度となくチャレンジしてきた「Opus」ですが、やっとその実力を検証できます。
    ただ、今回は音声の録音と遅延の測定ができませんでした。

    これは、何か理由があってできなかったわけではなく、単純に時間的な制約です。
    詳細の検証結果を挙げる前に、まずはAsteriskのOpus対応化を記事にしたく、先行しての投稿です。


    録音や遅延の計測は、また後ほど行いたいと思います。
    まずは言葉だけで「Opus」の音質を説明します。


    「Opus」を扱えるSIPクライアントはあまり多くありませんが、幸いなことに「CSipSimple」と「Acrobits Groundwire」が対応しています。
    この2つのアプリがあれば、他は要りません。この2アプリで十分です。

    まず、これらアプリの比較です。
    同じ「Opus」であっても、「CSipSimple」と「Groundwire」とで音質がかなり異なりました。

    さらに「Groundwire」では使うスマホによっても、かなり音質が異なりました。
    たとえば、SC-01Fでは音質はあまり良くなく、L-01FやSH-07Dはなかなかの音質でした。

    一方、「CSipSimple」はどんな機種を使ってもメリハリのある音質で、音声データから綺麗にノイズが除去されてクリアな音と言うか・・・なんて言うかドライな音質でした。
    これはかなり私好みで、文句のつけようがないレベルでした。


    続いて、トランスコーディングの検証です。

    発信側と着信側で要求するコーデックが異なる際は、リアルタイムに音声変換されます。
    これをトランスコーディングと言いますが、「Opus」からのトランスコーディング(またはその逆)はかなりCPU負荷がかかってしまうのではないかと懸念しました。

    しかし、「Raspberry Pi」と同じARM系CPUを積んだ「CuBox-i2」で、10%程度のCPU負荷となりました。
    ということは「Raspberry Pi」では20%程度の負荷に収まると思われます。
    最近発売された「Raspberry Pi 2」であれば5%程度ではないでしょうか。


    さて、肝心な音質についてですが、「発信側→着信側」の順に、
  • 「Opus」→「Opus」:非常に綺麗で文句なし。
  • 「G711u」→「Opus」:非常に綺麗で文句なし。
  • 「Opus」→「G711u」:非常に綺麗で文句なし。
  • 「Opus」→「iLBC」:宇宙人がしゃべっている感じ

    「Opus」→「iLBC」のトランスコーディングがNGです。
    あまりにもひどい音質で、遅延も3秒ぐらいあります。
    不思議に思い、Asterisk側から確認してみると、それもそのはずで、トランスコーディングに失敗していました。

    これ以外にも、いくつかトランスコーディングに失敗するケースがありました。(自動応答による音声案内など)
    コーデックを「Opus」にして、天気予報を聞くと、ひどい音質となりました。
    なお、この現象はSIPクライアントに依存する部分があるようでしたが、これについては検証しきれませんでした。


    続いて、遅延の計測ですが、これはいつもの様に波形から遅延時間を計測したわけではありません。
    あくまでも体感です。そのため、あまり当てになりませんので、参考程度としてください。

    まず、トランスコーディングに失敗しない限り、今までにないぐらい低遅延です。
    SH-07Dという超低スペック機種でも遅延に影響しないぐらい、スマホへの負荷も少ないです。

    ただ、SC-01F(ギャラクシーノート3)だけはあまり低遅延とは思えませんでした。(この機種だけはiLBCのほうが高音質・低遅延でした。)


    最後に使用帯域について触れたいと思います。

    Linuxの機能(iftop)を用いて主要コーデックの使用帯域を測定しました。
    Opusを使った場合は、26~30kbpsの回線速度を必要としました。

    《主要コーデックによる使用帯域一覧》
    コーデック 使用帯域
    G711u : 78kbps
    iLBC
     : 23.6kbps
    Opus
     : 26~30kbps(可変)
    GSM
     : 28.7kbps

    やはりG711uはかなりの帯域を必要とします。
    これを見ると、やはり3G/LTE回線下では「Opus」や「iLBC」などの音声コーデックの必要性を感じます。


    今回の検証はこれで終わります。



    【 感想 】

    「Opus」自体は現時点で間違いなく最強の音声コーデックです。
    しかし、Asteriskは最新バージョンの13であっても「Opus」に正式対応していません。
    そのためか、トランスコーディングに失敗するケースがあったりと、まだまだ不安定な一面もあります。

    正直な感想としては、どんなに「Opus」が素晴しかろうが、周りがそれを活かせていないように感じました。


    今後Asteriskが「Opus」に正式対応することがあれば、必須になるコーデックだと思います。
    しかしながら、現時点では、不安定な一面もあることから、まだ「マニア向けコーデック」という位置付けでしょうか。

    音質は最高であることは保証します。
    しかし、安定動作させるためには、もう少し検証が必要だと感じました。


    私はこの「Opus」と【つなぐ】(※)は最高の組み合わせになると考えています。
    そのため、なんとしても安定動作させたいところです。

    ※ 【つなぐ】とは何かは、以下の記事をご覧ください。
    ガラケー(話し放題)と、スマホ(MVNO)を【つなぐ】>(概要説明)
    MVNO(データSIM)で「話し放題」を実現する 【つなぐ】>(設定紹介)


    今回の検証はここで終わりますが、今後、ハードとOSを変えて、さらなる検証を進めていきたいと思います。