2013年9月23日月曜日

IP電話アプリ頂上決戦「CSipSimple」 vs 「Acrobits Softphone」

SIPクライアントにより、音質が大きく異なることはこれまで行ってきた検証により明らかです。
しかし、今までAndroidアプリしか検証を行っておらず、iPhoneユーザから絶大な評価を得ている「Acrobits Softphone」の検証ができていませんでした。

そこで、Android最良のIP電話アプリ「CSipSimple」と、iPhone(iOS)最良のIP電話アプリ「Acrobits Softphone」の音質比較を行いました。
なお、比較に使用したIP電話サービスは「G-Call050」です。




「G-Call050」についてはこちらの記事をご覧ください。
スマホでIP電話「G-Call050」のすすめ

(IP電話関係についてはこれ以外にもたくさん記事を書いているので、右側のカテゴリ「スマホ 【IP電話・無料通話】」をご覧ください。)

※ ここで言う「Acrobits Softphone」はAndroid版ではなく、iOS版(iPhoneやiPodなど)を指します。



【検証に用いた環境】

[使用した端末]
  • CSipSimple・・・P-06D(Android Ver 4.0.4)
  • Acrobits Softphone・・・iPhone4s(iOS Ver 6.1)

    [回線]
  • 3G回線・・・ドコモ(iPhone4sは下駄使用)
  • Wi-Fi・・・KDDI系 光回線(Ping10~20ms程度)

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

    [遅延測定環境]
  • 「IP電話で音声データを発信してから、携帯電話でそれを受信する」までのタイムラグの測定(※)


    携帯電話同士でも200ms程度は遅延するため、IP電話単体の遅延時間を知りたい場合は、この測定した遅延時間から100msを引いた値が本来の値となります。
    ただし、ここでは実用的なデータを載せたいため、「IP電話→携帯電話」の遅延時間をそのまま掲載しています。



    【各アプリの音質及び遅延時間】

    <音声の元データ>



    SIPクライアント 回線 コーデック 音声データ 遅延時間
    CSipSimple Wi-Fi G.711u

    277ms
    SILK

    285ms
    3G G.711u

    540ms
    SILK

    444ms
    Acrobits Softphone Wi-Fi G.711u

    240ms
    G.729a

    328ms
    3G G.711u

    511ms
    G.729a

    571ms



    【検証結果と考察】

    まず、G.711μと3Gの組み合わせは、「CSipSimple」「Acrobits Softphone」ともに出だしが崩れています。
    これはG711が大きな帯域を使うコーデックのため、低速回線下では最初のバッファリングで問題が出ているためと思われます。しかし、出だし以外は良好です。

    G.711μと3Gの組み合わせだけ避ければ、あとはすべて甲乙つけがたい結果となっています。

    今回のデータを聴き比べて頂くと分かるのですが、「CSipSimpleが絶対に良い!」「Acrobits Softphoneが絶対に良い!」ということがありません。
    両アプリは目指している方向性が全く異なるようです。

    なお、音質自体の良さはコーデックの圧縮率のとおり、以下のようになっています。
    これは、回線への負荷状況もこの順どおりとなりますので、使用環境により適切なものを選ぶ必要があります。
    G.711μ > SILK > G.711a
    (G.711μの音質が良いからといって、どの環境においてもこれが一番というわけではありません。)



    【まとめ】

    今回の検証はまとめられません。
    「CSipSimple」と「Acrobits Softphone」とで目指している方向性が異なるため、あとはユーザの好みでどちらを選ぶかになると思います。

    自分が使っていない環境は気になるものです。異なる環境の方がなんとなく良く見えてしまいます。
    しかし両アプリとも素晴らしい出来なので、自分の使用環境にあったアプリを使えば間違いありません。

    そのため、今回の「まとめ」は次のとおりです。

    Androidユーザは「CSipSimple」が最良です。
    iPhoneユーザは「Acrobits Softphone」が最良です。

    今回はつまらないまとめですが、これが究極的な結論になります。



    【偏見・私見】

    最近、iPhone4sを買ったばかりなので、iPhone寄りのちょっとだけ偏見の入った意見です。

    私の好みとしては「Acrobits Softphone」かもしれません。
    Wi-Fi環境下における「Acrobits Softphone」の音質及び低遅延は凄まじいものがあります。
    携帯電話の遅延時間を200msとして考えると、アプリによる足枷が殆どないということです。

    プッシュ通知による着信も(ちゃんと動作させられれば)便利そうです。
    いずれにしても、もう少しiPhone4s+Acrobitsを使ってみようと思います。
        
  • 10 件のコメント :

    1. はじめまして、色々と参考にさせていただいております。0063時代からの回線G-CALLと新たにfusionを使い始めましたがcsipsimpleにおいてfusionの着信が不安定で会話の遅延が大きいこともあり、G-CALLを貴兄のブログを参考にcsipに設定し使用させていただいております。ただfusionの公式(acrobits)の省電力も捨てがたいが現在は不具合が多すぎる・・・

      ということで 今回アンドロイド版acrobitsを購入し、G-CALL050を設定してみました。有料コーデックも購入してみましたが通話先にはあまり評判が良くないので現在はGSMを使用しております。
      fusion公開版にあった不具合の多くも解消されていますし、自分なりにチューニングしてかなり良い状態になり昼間でも遅延を感じることも有りません。
      環境はOCNモバイルONEで端末はSO-03Cです。
      今回の対比は
      Android「CSipSimple」と、iOS「Acrobits」
      でしたが
      Android「CSipSimple」と、Android「Acrobits」
      とかもされているのでしょうか?もしされているのでしたら公開していただけるとうれしく思います。

      返信削除
      返信
      1. las**howjbさん

        コメントありがとうございます。
        「Acrobits Softphone」+「G-Call050」のご報告、非常に参考になります。

        Acrobitsの省電力(プッシュ通知)は魅力的ですね。
        「CSipSimpleにも実装されればいいのに」と都合の良いことを常々思っています。

        Androidベースの音質比較の件ですが、以下の記事で「CSipSimple」と「Acrobits Softphone」との比較を行っています。(有料コーデックを含む)
        ヘッドフォンなどで音量を大きめに聴いて頂くと、その差がはっきりとわかると思います。

        <スマホでIP電話「各社の音質比較」編(Part2)>
        http://wert44.blogspot.jp/2013/07/ippart2.html

        削除
    2. wertさん、こんにちは。私のacrobits4.02の設定ですがけしてbestではないのでしょうが現在の自分の設定を書いてみます。

      コーデックは
      G-CALL050
      WIF G711u-GSM-G729A
      3G  GSM-G729A-G711u

      FUSION
      WIFi G711u-iLBC-GSM
      3G  GSM-iLBC-G711u

      としておりますがそれぞれ”リモートコーデックを受け入れる”にチェックをいれ、”パッケット時間を強制する”のチェックは外して、時間の設定値はデフォルトにしてます。(他の設定値もほぼデフォルト、android2.3.4なのでレガシーオーディオをONにしています)
      また ”NAT Traversal” Mediaは初期値の”auto”では無く”オフ”(ICEにすると何故かWIFI時に家の無線ルータを超えられません)です。
      以上でWIFI、3G共に安心して着信しますし、音声・遅延は送受ともに携帯と間違えるほどです。
      ただ一つ気になるのは発信者が呼出時に切ってしまってもコールが止まらないこと。
      これは自分でテストしているから気づくのであって我慢はできます。
      当初コーデックはビットレートの低いものを一つに絞って固定するのが良いと勝手に確信しておりましたが私の環境(cpu性能等)では特に高圧縮のG729aの音質は酷いようで 積極的に複数のコーデックを入れ、リモートコーデックを使用するということが良いという結論に至りました。

      自分の試行錯誤で勝手に確信したcsipsimpleの設定と相反する部分があり、少し複雑な心境ですが実情ではあります。

      評価はあくまで感応的であり、実測に基づくものでは無く、信頼性にかけますが是非試していただけるとうれしいです。
      現在ガラゲーと2台持ちですが050の番号が知人に知れ渡ったところで脱キャリアの予定です。



      返信削除
      返信
      1. las**howjbさん

        このような情報を提供して頂けると、同じ環境の人にとても参考になると思います。ありがとうございます。

        他記事のコメントでも頂いたことなのですが、その方もAndroid版AcrobitsではGSMを推奨していました。
        私の考えでは、GSMは理論上「G729aより下」と決めつけていましたが、実はそんなことはなさそうですね。

        なお、十分な端末性能を確保させても、Acrobits+G729aの音質は非常に悪いです。(Android版のみ)
        これと反対に、Android版Acrobits+GSMは相当に相性が良いのかもしれません。
        これは試してみる価値ありですね。

        今度、各コーデックの検証を兼ねて「AcrobitsSoftphone Android版 VS iOS版」を書きたいと思います。

        やる前から言い訳・・・。
        時間が無くて検証はかなり先になってしまうかもしれませんがご容赦ください(>_<)


        >現在ガラゲーと2台持ちですが050の番号が知人に知れ渡ったところで脱キャリアの予定です。

        これほどまでにIP電話の品質が上がってくると、十分に脱キャリアできますね。
        キャリアからG-Call050にMNPできればいいのに(笑)

        削除
    3. wertさん
      コメントありがとうございます。是非「AcrobitsSoftphone Android版 VS iOS版」期待しています。

      実は、複数コーデックを設定していてもリモートコーデックによって実際どのコーデックが使用されているのか知る方法が無いのですよ。
      fusion公式アプリにてリモートコーデックで使用されたコーデックを書いていたブログがどこかにありましたがその方はどうやって調べているのでしょうか?
      でもG729Aのみ他は不可に設定したときは確実に音質は悪いが複数設定時、リモートコーデック機能でG729Aが採用された場合はどうなのかとか。

      さらには、リモートコーデックの意味も勝手な解釈なのです。
      つまり、セッション時の接続速度によってサーバが適切なコーデックを選んでくれるということなのか?或いはありえないとは思うのですが発信者と受信者のコーデックを同一にするリモート操作をしてサーバでの復元を省略してスルーする・・・とか妄想を抱いてしまってます。

      また、これだけ色々な設定要因があると実験するにしても交互作用とかも生ずる可能性がありますから 実験計画法とかを使用しないと誤差を吸収できないかもしれませんね。
      電気・情報関連では無いですが自分も工学出身のはしくれとして原理がわからないで使用しているのは気持ち悪いです(笑)。

      返信削除
      返信
      1. las**howjbさん

        SIPは「Session Initiation Protocol」、その名の通り「音声通信を開始する前のやりとり」です。

        ということは、お互いの求めるコーデックは音声通信を開始する前にお互いがわかっています。
        これにより符号化方法を合わせることができ、サーバ側でデコードと再エンコードを行う必要がなくなります。
        リモートコーデック機能とは、las**howjbさんが抱いた妄想のとおりの動きです。

        ですが、これが本当に機能しているのかは謎です(笑)


        >実は、複数コーデックを設定していてもリモートコーデックによって実際どのコーデックが使用されているのか知る方法が無いのですよ。

        通話中、画面に表示されていませんか。
        しかし、G729aしか選んでいないのに、u-Lawが表示されていたりして信頼性が?ですが・・・。(iOS版)


        >また、これだけ色々な設定要因があると実験するにしても交互作用とかも生ずる可能性がありますから 実験計画法とかを使用しないと誤差を吸収できないかもしれませんね。

        そうなんですよね。
        しかも、通信状態にも左右されるため、いまのところ実験回数をこなすしかないかと思っています。
        何度も何度も検証しているうちにだんだんと傾向はつかめてくるのですが、私の文章力が乏しく、この曖昧なニュアンスを文字にできずに困ります(笑)

        削除
      2. wertさん
        返信ありがとうございます。
        コーデック見えました(笑)、普段呼び出し前から耳に画面が当たっているものですから購入してかなり時間が経過しているのに全く気づきませんでした。ちなみに固定電話にかけるとG711Uが見えるので音質的には納得です。

        リモートコーデックを使用するようになってから飛躍的に音質・遅延とも改善したので機能・動作についてはおっしゃることは間違いなさそうですが条件判定や動作基準が全く説明されていない、私が無知なだけかもしれませんがこのアドバンテージは大きいはずなのですからメーカももっとアピールすべきですよね。
        また、動作としてはどうやらリモートコーデックをONにすると設定画面の”使用するコーデック”、”使用しないコーデック”という設定も無視されるのかも知れません。

        こうなってくるとそういう設定が無いCsipsimpleはリモートコーデック機能を持たないアプリと解釈することになりますが・・・にも関わらず なんて高性能!いうことになるのだとおもいます。それともデフォでリモートコーデックONなのでしょうか?

        最近は安価で何不自由なくIP電話を運用できている優越感から使用するのが楽しくなってます。

        削除
      3. las**howjbさん

        CSipSimpleはデフォルトでリモートコーデック機能ONです。
        数種類のコーデックを選択していれば、その中から相手が求めるコーデックが自動的に選択されます。
        なお、相手からの要求指令がなかった場合や、相手の求めるコーデックがリストに存在しなかった場合は上から順に選択されます。

        相手が求めるコーデックを合わせた場合とそうでない場合とでも、いずれ比較してみたいですね。

        削除
      4. そうなんですか?
        ネットでcsipsimpleで”GSM”一択決め打ち見たいなブログを拝見したとがありますがここ数日、自身の通話時のコーデック表示を見る限り、リモートでGSMが選択されることは一回も無かったのではたしてどうなのでしょう?ちなみに固定電話(kddi・NTT)、携帯(docomo、au)回線での通話でした。
        結局 自身も使用コーデックの確認方法を知らなかったためGSMだと思っていたのがG711uだったというオチです。
        G-CALL050には9000という留守電再生の電話番号ありますよね。ここでG729Aを強制固定してみたら G711uと聞き違えるくらい良い音なのでおどろきました。G729Aの音は悪くない・・・。

        奥が深いというか神秘的・・・or 誤動作(笑) まさに交互作用ですね。

        削除
    4. すみません、マシンが違ったものでべつのIDで書いてしまいました。

      返信削除