Opus音声コーデックの再生・変換方法について解説

Opus音声コーデックの再生・変換方法について解説 プログラミング

Opusという音声ファイルの存在を知っていますか?
YouTubeを見ているなら、そのときにOpusファイルを再生しているかもしれません。

本記事の内容

  • Opusとは?
  • Opusの利用環境
  • Opusファイルの作成
  • Opusファイルの再生(WAVファイルとの比較)

それでは、上記に沿って解説していきます。

Opusとは?

Opusとは、汎用性の高いオーディオコーデックです。
そして、完全にオープンで、ロイヤリティフリーとなります。

品質を他のコーデックと比較した結果は、以下。

オープンソースであり、圧縮しても品質は抜群ということのようです。
遅延に関しての比較結果もあります。

遅延がもっとも少なくて、品質の幅も調整可能ということです。
これを見る限りでは、使わない手はありません。

実際、いろいろなところでOpusは使われています。

  • Discord
  • Jitsi
  • YoTube
  • Twilio

YouTubeでは、「詳細統計情報」(動画上で右クリック)で確認できます。

Jitsiは、Web会議用のオープンソースです。
次の記事で解説しています。

また、WebRTCではOpusが標準になりつつあります。
こうして見ると、結構身近にOpusは存在しています。

以上、Opusについての説明でした。
次は、Opusを利用するため環境について確認します。

Opusの利用環境

プレヤーが対応していれば、Opusフォーマットの音声ファイルを利用できるでしょう。
それよりも、対応ブラウザが重要です。

現時点の最新バージョンにおける対応状況は、以下。
主要ブラウザをピックアップしています。

デバイスブラウザバージョン対応
PCChrome89
PCFirefox87
PCEdge89
PCSafari14
PCIE11×
iOSSafari14
AndroidChrome89

IE以外は、対応している状況です。
だからと言って、タグで再生できるかどうかはわかりません。

なお、Safari(IEはもともと対象外)以外は、すべて実際に動くことを確認できました。
Safariは設定を変更したりすれば、動くのかもしれません。

とりあえず、ほぼすべての環境でOpusが利用可能と言えます。
デフォルトで利用可能かどうかが、とても重要ではありますけどね。

以上、Opusの利用環境についての説明でした。
次は、Opusフォーマットの音声ファイルの作り方を説明します。

Opusファイルの作成

音声変換ソフトが対応していれば、Opusフォーマットの音声ファイルを作成できるでしょう。
作成というよりは、変換することの方が多いでしょうけど。

ffmpegは、普通に対応しています。
ただ、オプションの指定がわかりにくいです。

そこで、Opusの開発元が用意した専用ツール「opus-tools」を使います。
これなら、オプションで何も考えなくてもいい感じに変換してくれます。

以下の流れで説明していきます。

  • opus-toolsのインストール
  • opus-toolsの「opusenc」でエンコード
  • opus-toolsの「opusenc」でデコード

opus-toolsのインストール

公式サイト
https://opus-codec.org/downloads/

opus-toolsは、コマンドラインツールとなります。

WindowsやmacOSの場合は、バイナリが用意されています。
Linuxの場合は、各ディストリビューションで用意されているはずです。

Ubuntu・Debianの場合なら、aptコマンドで簡単にインストールできます。

sudo apt-get update -y
sudo apt-get install -y opus-tools

opus-toolsの「opusenc」でエンコード

まずは、WAVファイルを用意します。
ここでは、test.wavを用意。

Opusファイルに変換してみます。

opusenc test.wav test.opus

上記を実行すると、以下のように表示されます。

Encoding using libopus 1.3.1 (audio)
-----------------------------------------------------
   Input: 16kHz 1 channel
  Output: 1 channel (1 uncoupled)
          20ms packets, 33kbit/sec VBR
Preskip: 312

Encoding complete
-----------------------------------------------------
       Encoded: 1 minute and 1.14 seconds
       Runtime: 1 seconds
                (61.14x realtime)
         Wrote: 209967 bytes, 3057 packets, 64 pages
       Bitrate: 26.7445kbit/s (without overhead)
Instant rates: 4.8kbit/s to 42.8kbit/s
                (12 to 107 bytes per packet)
      Overhead: 2.65% (container+metadata)

上手くエンコードできたようです。

opus-toolsの「opusenc」でデコード

OpusファイルをWAVファイルに変換します。

opusdec test.opus test_decode.wav

上記を実行すると、以下が表示されます。

Decoding to 16000 Hz (1 channel)
Encoded with libopus 1.3.1
ENCODER=opusenc from opus-tools 0.1.10
Decoding complete.

上手くデコードできたようです。

まとめ

ファイルの容量を確認してみましょう。

上記の結果では、90%の容量削減を実現できています。
変換時のオプションを工夫すれば、もっと圧縮できるかもしれません。

これで品質に問題なければ全然アリですね。
では、品質をチェックしていきましょう。

以下で、WAVファイルとOpusファイルを実際に再生して比較します。

Opusファイルの再生(WAVファイルとの比較)

WAVファイル
Opusファイル

全く問題ないレベルだと思いませんか?

やはり、こうやって普通にブラウザで再生できるのは強みです。
専用のプレーヤーをインストールしなくて済みますからね。

以上より、Opusを利用することに問題はありません。
Safari(IE含む)とそれ以外で分ければ、特に問題はないでしょう。

ブラウザ音声ファイル形式
Safari(IE含む)WAV
それ以外Opus

ユーザーエージェントにより、音声ファイルを振り分けることになります。
実際は、WAVよりもMP3などの方がよいのかもしれません。

タイトルとURLをコピーしました