iOSで音声圧縮

 iOSで音声通信なアプリを作ってた時のこと。音声データを生のPCMのまま送るのは、サンプリングレートを落としても大変なデータ量なので、音声圧縮をどうするかという話。

  オープンソースVOIPアプリ/関連ライブラリには音声通信部分はもちろん、いろんな音声圧縮コーデックの実装コードも含まれているので、とても参考になります。色々眺めてみた結果、実装が簡単かつ圧縮率と音声品質的に効果が高そうな G.711 と GSM-FR と ADPCM あたりに目をつけてみました。参考にしたのはsipdroidとかpjsipとかlinphoneとかsnapdspとか。中でもsnapdspは色んなコーデックをCで実装してくれているので読みやすいです。

 snapdspのコードはここからダウンロードできます。

 http://www.soft-switch.org/downloads/

 

 最終的にはGSM-FRのコーデックの部分だけiOSアプリとVC++に移植しました。音声通信のデータ量がPCMの1/8以下になって、満足。

 

基礎からわかるTCP/IP SIPによるVoIPプログラミング―Linux対応

基礎からわかるTCP/IP SIPによるVoIPプログラミング―Linux対応