Opusコーデック
目次
概要
OpusコーデックはAsteriskで利用可能な音声コーデックの1つ。技術的特徴はWikipediaの記事を参照のこと。
可変ビットレートであり、ビットレートに比して高音質で、低遅延とのことです。
注意事項
インストール前に、提供元のREADMEをお読みください。
使用状況の統計を24時間ごとにコミュニティサーバーに送信する旨が記載されています。
また、バイナリパッケージの提供であり、x86またはx86_64のみの提供であるため、Raspberry Pi等のARMプロセッサ環境に対してはインストールできません。
了解された上で、インストールを行ってください。
インストール
Asterisk 16
Asterisk 16では、ビルド時にmake menuconfigでインストールするかどうかを選択します。
インストールするを選択した場合、make install時にOpusコーデックのバイナリがダウンロードされ、インストールされます。
make menuconfig
Codec Translators → 下の方「External」の更に下 → codec_opusを選択肢、Enterキーで*マークをつけ、Save & Exitし、makeします。
もし
XXX codec_opus
とXXXが表示されていて選択できない場合、何らかの依存ソフトウェアがインストールされていないためインストールできないようです。 codec_opusを選択した状態で、下の方の「Depends on」に記載されているソフトウェアをインストールします。
CentOS 8ではxmlstarletが不足していましたが、何故かdnfからインストールできなかったので、RPMパッケージを手動でインストールしました。
依存ソフトウェアをインストールしたら、./configureからやり直します。その場合make menuconfigで設定した内容は消去されるので、必要な場合設定内容を手元にメモしてから./configureをやり直し、再度make menuconfigを実行します。
make menuconfigが完了したら、makeでビルドを行います。続いて、sudo make installまたはrootユーザーでmake installを行います。Opusの追加のみの場合は、上書きインストールをしても問題は発生しませんでした。
設定
Asterisk設定ファイルのmodules.confに次の2行を追加します。
load = codec_opus.so load = res_format_attr_opus.so
追加しなくても動く場合もあるようですが、他コーデックとの変換に失敗する場合は上記の追加で改善します。(他コーデックと変換については下記「CLIでの確認」も参照。)
続いて、pjsip.confのendpoint等でallow=opusと記載します。使用するクライアントでもOpusを使用する設定を行います。
CLIでの確認
Opusが使用可能かどうかは、Asterisk CLIで次のコマンドを実行するとわかります。
CLIコマンド:
core show codecs
結果(抜粋):
29 audio opus opus (Opus Codec)
CLIコマンド(コーデック同士の変換にかかるミリ秒を表示):
core show translation
結果:
Translation times between formats (in microseconds) for one second of data Source Format (Rows) Destination Format (Columns) ulaw gsm slin8 slin12 slin16 slin24 slin32 slin44 slin48 slin96 slin192 g722 testlaw opus ulaw - 15000 9000 17000 17000 17000 17000 17000 17000 17000 17000 17250 15000 23000 gsm 15000 - 9000 17000 17000 17000 17000 17000 17000 17000 17000 17250 15000 23000 slin8 6000 6000 - 8000 8000 8000 8000 8000 8000 8000 8000 8250 6000 14000 slin12 14500 14500 8500 - 8000 8000 8000 8000 8000 8000 8000 14000 14500 14000 slin16 14500 14500 8500 8500 - 8000 8000 8000 8000 8000 8000 6000 14500 14000 slin24 14500 14500 8500 8500 8500 - 8000 8000 8000 8000 8000 14500 14500 14000 slin32 14500 14500 8500 8500 8500 8500 - 8000 8000 8000 8000 14500 14500 14000 slin44 14500 14500 8500 8500 8500 8500 8500 - 8000 8000 8000 14500 14500 14000 slin48 14500 14500 8500 8500 8500 8500 8500 8500 - 8000 8000 14500 14500 6000 slin96 14500 14500 8500 8500 8500 8500 8500 8500 8500 - 8000 14500 14500 14500 slin192 14500 14500 8500 8500 8500 8500 8500 8500 8500 8500 - 14500 14500 14500 g722 15600 15600 9600 17500 9000 17000 17000 17000 17000 17000 17000 - 15600 23000 testlaw 15000 15000 9000 17000 17000 17000 17000 17000 17000 17000 17000 17250 - 23000 opus 23500 23500 17500 17500 17500 17500 17500 17500 9000 17000 17000 23500 23500 -
他コーデックとの変換については、Opusと変換する他方のコーデックのモジュールについてもmodules.confに記載する必要があるようで、必要な場合、上記のmodules.confへの追加例に倣って記載してください。
使ってみる
ulawではVoicemailmainで各音声の末尾が切れているような感じ(「メッセージ」の「ジ」が聞こえる前に次の音声に移ってしまう)でしたが、Opusにしたら改善しました。