2014年10月14日火曜日

VoIPに音声コーデック「Opus」を使いたい

我が家のケータイ運用方法は複雑です。
自宅に置いてあるPHSとAsteriskとを接続して、そこにスマホでアクセスして電話をかけます。

なんだか難しく聞こえますが、普通にスマホで電話をすれば勝手にそのようになります。

スマホはデータ専用MVNOで運用します。
すると、「話し放題」+「MVNO」を、1台のスマホで安価に運用できるようになります。
(この辺りの話は、ここでは割愛します。)




IP電話やひかり電話を外から使う場合、また私のような変則的な運用には、高品質での通信が必須になります。
音声通信における「高品質」とは、音声パケットをいかにコンパクトに、そしてどれだけ低遅延で伝送できるかがポイントになります。

そこで、高圧縮で超低遅延の音声コーデック「Opus」の実用性について考えてみます。



【 Opusについて 】

Wikiから引用 (読み飛ばし可)
Opus(オーパス)とは、IETF によって開発され、主にインターネット上でのインタラクティブな用途に合わせて作られた非可逆音声圧縮フォーマット。RFC 6716によって標準化されたオープンフォーマットとして、リファレンス実装は3条項BSDライセンスの下で提供されている。 Opusをカバーするすべての既知のソフトウェア特許は、ロイヤリティフリーの条項の下でライセンスされている。
Opusは、スピーチ向きのSILK(英語版)と低レイテンシで音楽用途にも使えるCELT の2つのコーデックの技術を組み込んでいる。Opusは、ビットレートの高低を継ぎ目なく調節でき、内部的には、低いビットレートでは線形予測コーデック、高ビットレートでは変換コーデックを使い、途中で切り替えることも可能である(短時間はハイブリッドでオーバーラップさせられる)。Opusは会話、ネットワーク上の音楽公演やライブイベントなどでリップシンクすることができ、低遅延のオーディオ通信リンクの一部として使用するために必須な、非常に小さいアルゴリズム遅延(デフォルトでは22.5 ms)を持つ。Opus は、音声品質を犠牲にすれば、アルゴリズム遅延を最高5msまでに小さくすることができる。MP3, Vorbis, HE-AAC などの既存の音楽用コーデックは100ms以上の遅延があり、Opus はそれらよりも遅延がずっと小さいにも関わらず、ビットレートに対する品質では遜色ないものとなっている。上記の既存コーデックとは異なり、Opus は個々のファイルで巨大なコードブックの定義を必要としないため、短いショートクリップの音声にも適している。


要するに「SILK」と「CELT」の良いとこ取りをした、無料の音声コーデックと言うことです。
どうやら「Opus」を理解するためには「SILK」と「CELT」も理解しなければならないようです。


実は「SILK」に関しては、今までに相当検証をしてきました。(かつてはG-Call050が対応していました。)
結論から言って、これ以上無いというほど高音質です。
(G711μと聴き比べても差がわからないぐらい。)

そして「CELT」。
これは私が今まで知らなかったコーデックです。

CELTは「Vorbis」と「Speex」の中間に位置するコーデックのようです。

「Vorbis」については、「Vorbis」より「ogg」と言った方が知名度が高いでしょうか。その「ogg」に使わるコーデックに多いのが「Vorbis」です。
音声通話のようなリアルタイム性には向かず、音楽鑑賞のような用途に使われる超高音質コーデックです。


「Speex」についても、かつて検証を行ったコーデックのひとつです。
これは「BIGLOBEフォン・モバイル」で採用されているもので、人の声に特化しており、高圧縮にもかかわらず、高音質で聞きやすいものでした。
なお、こちらは「Vorbis」とは異なり、音声通話のようなリアルタイム性に特化しています。

(余談です。音声コーデックというとG729aが有名ですが、SILKもSpeexも、G729aとは比較にならないぐらい高音質です。)

「CELT」を更に調べていくと、このコーデックはとんでもなく低遅延なこともわかります。



【 Opusについて(その2) 】

「Opus」は前述「SILK」と「CELT」の良いとこ取り、すなわち、超高音質で超低遅延であることが期待されます。
期待と言うよりそのままです。

「Opusは、超高音質で超低遅延な無料の音声コーデックです。」

これは音声コーデックマニア(?)な私としては使ってみたくなります。
ただ、CPU負荷に関する文献が見つからず、どの程度スマホに負荷をかけるのかが明らかになっていません。

ネット上の情報によると、「SILKはG729aの3倍程度のCPU負荷である」という数字を見つけました。
と言うことはOpusも似たような数字であると考えられます。
G729aのときは、1GHz程度のCPU(シングルコア)でも、無視できる程度のCPU負荷でした。
それを考えると、最近のクアッドコアであれば「Opus」を使っても、たいしたCPU負荷にならないことが容易に想像できます。

そこで、我が家の複雑なスマホの運用方法の一貫に、Opusを取り入れてみることとしました。



【 スマホでOpusを使うことによるメリット 】

音声通信に必要なデータ量を、それぞれ有名なコーデックと比較してみます。




G.711
G.729
Opus
ビットレート
64 kbps
8 kbps
6~510 kbps(可変)
必要とする
ネットワーク帯域
95.2 kbps
39.2 kbps
31.95~1561.2 kbps(可変)

(※ネットワーク帯域は私の手計算なので、間違っていたらゴメンナサイ・・・)


この比較表を見るだけでOpusへの期待が高まります。
それと同時に、G711ではネットワークに、想像以上の負荷をかけることがわかります。

G711がいくら高音質であっても、帯域を少しでもオーバーすれば、そこでデータは途切れます。
データ通信上、これに問題はなくても、「会話」としてはあってはならないことです。
つまり、これがIP電話における「無音状態」や「ノイズ」、「音声がおかしくなる」などに値します。

話が反れました・・・。元に戻します。

Opusを利用すると、G729よりも高音質でありながら、必要な帯域をさらに抑えられることが期待できます。
また、Wi-Fi接続時には、かなりの高音質も期待できます。



【 まとめ 】

今回はすべて机上の理論です。

現在の日本の電話事情では、最高の音質が出たとしてもG711と同等レベルです。
しかし、私の予想では、圧縮過程で人声以外が除去されるOpusの方が、G711よりも聞き取りやすい音質となるのではないかと思っています。

Opusは低ビットレートでリアルタイム性を重視する、IP電話やVoIPに向いています。
その一方で、音楽鑑賞のような超高音質が必要となる帯域までをカバーしています。

これが、音声通話に特化した「Speex」や「AMR」と比較して、武器となるのか、それとも仇となるのか。
この辺りも気になるところです。

近々、同一条件下において、いくつかのコーデックを検証してみたいと思います。

今、検証したいと考えているコーデックは以下のものです。
  • G711 (すべての基準。)
  • GSM (IP電話で良く使われる。低音質だが低負荷。)
  • Opus (今回のメイン。)
  • Speex (VoIPでよく使われる。そして私好みの音質。)
  • AMR (ドコモが採用しているコーデック。)


    まだ、全く検証を行っていないため、すべて私の妄想で終わる可能性も高いです。
    そもそも、Asterisk側でこれらのコーデックにちゃんと対応されるのかもわかりません。(私の技量が足りなくて・・・。)
  • 2014年10月7日火曜日

    それでも「W-SIM」を使いたい!(090/080からY!mobileのPHSにMNP)

    このタイトルを見て、「もう、いい加減に諦めろ!」と言う声が聞こえてきそうですが・・・

    イヤです!諦めません!!




    ここに至る経緯は以下をご覧ください。
    ドコモからY!mobile(PHS)にMNPし、W-SIMへの機種変更を試みた

    ドコモからY!mobileにMNPした私ですが、それには理由がありました。
    MVNOで「話し放題」を実現するためです。

    これが実現すれば、2000円ちょっとで、話し放題+データ通信し放題になるわけです。
    さらに、持ち歩く端末は1台のみで済みます。

    これは諦められません!
    と言うより、「壁は高ければ高いほど、乗り越えたくなるものです。」


    「なぜ山に登るのか」
    「そこに山があるから」

    私にも同じことが言えます。

    「なぜ壁を越えるのか」
    「そこに壁があるから」

    うぉ!なんかこれだと、すごいバカっぽい!(;′゚∀゚`)
    いや、まぁ、そのとおりなのですが・・・(T_T)



    【 スマホからPHS回線を使う 】

    前置きが長くなりましたが、スマホからPHS回線を使う方法には、2パターンあります。

    ◆ W-SIM機を用いる方法

    以下の機材が必要になります。
  • WX-WSADP
  • W-SIM
  • TA(VE-IG1など)

    例えば、この組み合わせであれば、スマホから「VE-IG1」にSIPクライアントとして接続すれば、それだけでW-SIMから発着信可能になります。


    ◆ VoIP-Bluetoothゲートウェイを用いる方法

    以下の機材が必要になります。
  • GP-712(GP-710、GP-708) [以降、総称してGP-712と表現します。]
  • Bluetooth対応ケータイ

    この組み合わせの場合では、GP-712にSIPクライアントとして接続すれば、Bluetoothケータイから発着信可能になります。



    【 「W-SIM機」と「VoIP-Bluetoothゲートウェイ」の特徴 】

    これらの接続方法はそれぞれ特徴があります。

    ◆ W-SIM機を用いる方法

    高音質で安定した通信が可能です。
    しかし、3GケータイからのMNPに対応できないところが致命的です。


    ◆ VoIP-Bluetoothゲートウェイを用いる方法

    Bluetoothを用いるため、Wi-Fiや電子レンジの周波数帯と干渉することがあります。(音声にノイズが乗りやすい。)
    また、PHS着信からスマホが鳴動するまでに、若干のタイムラグ(2、3コール分/約2.5秒)が発生します。
    このタイムラグは致命的とまでは言いませんが、かなりの障害となります。


    もしも、これらの特徴の良いとこ取りができれば・・・。

    「VoIP-Bluetoothゲートウェイ」のタイムラグは、着信の時のみに影響し、発信には影響ありません。
    着信の時だけでもW-SIMで受けられれば道はありそうです。



    【 W-SIMで着信し、GP-712で発信する 】

    Y!mobileは「スーパーだれとでも定額」を契約していても、着信転送は有料になります。
    ただし、PHS同士であればプランに関わらず、無料で転送できます。

    そこで、GP-712で受けるはずだった着信を、着信前にW-SIM機に転送します。
    発信時はW-SIM機で発信してしまうと、発信者番号通知が異なってしまうため、GP-712から発信します。

    つまり、メイン番号とは別に、W-SIMでもう1回線新規契約してしまいます。
    そうして、GP-712とW-SIM機の2つとも、1つのスマホにレジストします。
    これにより、双方の弱点がカバーできます。

    しかし、これでは2台分の無駄な料金が・・・。



    【 Y!mobileケータイプラン副回線の利用 】

    無駄な料金はかかりません。
    なぜならば、Y!mobileのケータイ(PHS)は副回線で契約すれば基本料金が無料となるためです。
    また、PHS同士であれば「定額プラン」に加入せずとも、転送は無料です。

    したがって、W-SIM機の維持費はユニバーサルサービス料(3円)すら発生しない、完全な無料になるわけです。



    【 まとめ 】

    090/080からのMNPで「W-SIM」を使うためには、Y!mobileを2回線契約する必要があります。
    1つは「Bluetooth対応機種(WX12Kなど)」、1つは「W-SIM(RX420IN)」です。

    WX12K:090/080の3GケータイからMNP
    W-SIM:新規契約(副回線)

  • WX12KをGP-712とBluetooth接続します。
  • WX12Kへの着信を、0コールでW-SIM機へ転送されるよう設定します。
  • SIPクライアント側(スマホ)では、GP-712とW-SIM機とを2つ登録します。
  • これで着信はW-SIM機から受けられます。発信はGP-712から行います。

    この運用方法ですと、もしWX12KでBTテザリングを行いたいと思った場合でも、柔軟な対応が可能となります。
    WX12Kを持ちだして、BTテザリング親機として使うだけです。
    これでも、着信はしっかりとスマホ側にきます。

    なお、家に帰れば自動的にGP-712とWX12Kは再接続されます。

    注意点は1つだけです。
    WX12Kを持ち歩いている時の発信は、手元のWX12Kから行う必要があります。
    (これは注意点と同時に、メリットでもありますが。)

    本記事の内容はまだ机上の理論なので、近々に実行してみたいと思います。
  • 2014年10月2日木曜日

    ドコモからY!mobile(PHS)にMNPし、W-SIMへの機種変更を試みた

    10月1日、Y!mobileへのMNPが解禁されました。

    私がやりたいことは1つです。
    ドコモで16年間使った今の電話番号を、W-SIM(RX420IN)にMNPすることです。




    16年間使ったドコモに別れを告げて、新生キャリア「Y!mobile」に転入します。
    まずは、持ち込み契約でMNP転入を試みました。

    「ドコモ → Y!mobile」の一部始終を報告します。



    【 ドコモからW-SIM機(Y!mobile)にMNP 】

    「ナンバーポータビリティで転入させてください。」

    Y!「はい。どちらの機種になさいますか?」

    (Y!:私の目の前に、スマホのパンフを開こうとする。)

    「いや・・・、スマホじゃなくて・・・PHSです。しかも持ち込みでお願いします。」

    (私:バッグから古びた端末を取り出す。)

    Y!「ニコ(機種名)ですか。これにはMNPできません。」

    (見た瞬間に約10年前の機種であるnicoを言い当て、さらにそれがMNP可能なのかが頭に入っている。この店員さんは期待大!)

    「1ヶ月前にnicoと、このW-SIMで契約したので、できると思うのですが。」

    Y!「本当ですか!?」

    「はい。ここのお店で契約しました。」

    Y!「うーん、まずはやってみましょうか。センターに問い合わせてみます。」

    「センターには聞かないで欲しいのですが・・・。仮にセンターにできないと回答されても信用できません。」

    Y!「(^_^;) ショップ専用のセンターなので大丈夫です。」

    (センターに問い合わせつつ、作業をする店員さん。しばらくして・・・)

    Y!「申し訳ございません。やはりできません。新規契約ではnicoとW-SIMの組み合わせで間違いなく契約可能です。しかしMNPの場合はこちらの4機種のみとなります。」

    (MNP可能な機種が掲載されたパンフレットを見せられる。)


    しかし、このぐらいで諦めるような私ではありません。



    【 MNP可能な機種にMNPしてからW-SIMに機種変 】

    「わかりました。W-SIMへのMNPは諦めます。では、MNP可能な機種にMNPしてから、W-SIMに機種変させてください。」

    Y!「!? わかりました。理屈としてはできるはずです。しかし、できないかもしれません。」

    「曖昧ではなく、はっきりさせてください。」

    Y!「センターに聞いてみます。」

    (結構長いことセンターとやりとりする。)

    Y!「わかりません。申し訳ありません・・・。」

    「店員さんはできると思いますか?センターよりもあなたの方が、遙かに詳しく思えます。」

    Y!「・・・やはり、システム的にはできるはずです。ですが、前例が全くないため、どうしても断定できません。何せ今日からPHSへのMNPが可能になったので・・・」

    「やってみてください。」

    Y!「よろしいのですか?それでは機種はどれになさいますか。」

    「WX12Kでお願いします。」

    Y!「WX12Kには間違いなくMNPできます。しかし、その後、W-SIMに機種変できなかったとしても、以前お使いのキャリアは解約となり、取り返しがつきません。よろしいですか?」

    「OKです。お願いします。」



    【 WX12K(MNP)→ W-SIM(機種変) 】

    Y!「では、まずはWX12KにMNPします。」

    (1つトラブル発生。連絡先とMNPする電話番号とが同一の場合システム的にエラーとなる。違う番号を指定してクリア。)

    Y!「完了です。この端末にお客様の番号が移りました。」

    (さよならドコモ! 16年間ありがとう!)

    Y!「続いてW-SIMへの機種変に移ります。」

    (Y!:専用PCをいじりつつ、センターと電話している。かなり長い。何かを調べてるようだ。)

    Y!「・・・できませんでした。」

    「え?何でですか!?」

    Y!「nicoでは090番号を取り扱えないようです。」

    「それではどの端末であれば取り扱えるのですか?」

    Y!「W-SIM機では無理です。・・・と言うと語弊がありますね。さきの4機種以外では、元が3G携帯であった電話番号を取り扱うことができません。」

    「抜け道は無さそうですか?」

    Y!「そこまで処理を進めてみましたが、システム的に弾かれてしまったため、いかなる方法でも不可能です。元3G携帯の電話番号、090・080をW-SIMに移すことはできません。」

    「わかりました。」


    【 まとめ 】

    ◆3GケータイからY!mobile(PHS)をする場合は限られた4機種にしか転入できません。
  • 「WX12K」
  • 「LIBERIO 2(WX11K)」
  • 「iiro(WX04S)」
  • 「STOLA(301KC)」

    ◆W-SIM機を使いたい場合は、新規契約をする必要があります。

    ◆W-SIMは白ロム(一度も契約したことがないもの)では新規契約も不可です。灰ロム(一度使って解約したもの)の必要があります。(本内容は、記事には書きませんでしたが確認しました。)



    【 参考 】

    ◆MNPにかかる参考価格
    以下、私が「WX12K」にMNPした際の料金を掲載します。

    <WX12KにMNP>
    機種代金:47,412円
    割賦:1,008円×36回

    分割払いの場合は3年縛りで以下のとおりです。

    [副回線]
    機種代:1317円(機種代)-1008円(ダブルバリューセレクト[割賦])→ 309円×36回=11,124円

    月額維持費:0円(基本使用料)+1620円(スーパーだれとでも定額)+309円(端末代)=1929円(税込)


    なお、機種代金は一括で支払うことも可能ですが、副回線として使用した場合は0円以下の支払いとなる場合があり、分割のほうが失敗は少ないと思います。

    ◆PHSの通信速度について
    WX12KのBluetoothテザリングを利用して、スマホからスピードテストをかけてみました。

    その結果、UP,DLともに概ね250~300kbps程度の速度です。
    しかしPING値が1200~1300ms程度と激遅です。

    ファイルのDLなどはまずまずの速度で行えます。
    しかし、この応答速度ではWEB閲覧にはストレスを感じるかもしれません。



    【 感想・あとがき 】

    予定外、想定外・・・。
    数ヶ月前から綿密な計画を立てていたのですが、パーになってしまいました。

    幾分、まだ混乱中です。
    まさか、WX12Kが私のメイン機種になろうとは思ってもみませんでした。

    と言うことで、しばらく素のままのY!mobile(PHS)で遊んでみたいと思います。
    どちらにせよ、ドコモは転出する予定だったので、良い勉強になりました。


    MNPの手続きを進めている最中、店員さんに『できるかどうか、やってみるまでわからない』なんて言われてしまった時には、もう変な汗が出て来るぐらいのトキメキを感じました。
    Y!mobileに胸キュンです。

    そして、一日経った今でも、トキメキ感と「これからどうしよう感」が途絶えません。
    まさに「トキメキ感」と「脱力感」とのコラボレーション。
    きっと、今の私はキラキラ輝いているはずです。変な汗で。

    久しぶりにケータイに関してスリリングな一時を味わえました。満足です♪