Pivumo が Opus ではなく AAC を出荷する理由
ブリーフは Opus を求めた。それを出荷すれば、すべての iPhone でアプリは無音になっていた。
技術ノート · · 読了 3 分
Pivumo はまだ字を読めない子ども向けの早期学習アプリであり、そのため声はひとつの機能ではなくインターフェースそのものになります。すべての指示、数、色、ごほうびが、二十九言語で、二人のキャラクターによって話されます。音声は素材フォルダではありません。製品の表面です。
製作ブリーフは Opus を指定していました。一見もっともな選択です。音声のビットレートでは AAC よりバイトあたりの品質が良く、二十九のロケールにわたって何千もの音声行を出荷するアプリにとって、二十から三十パーセント小さいというのは実際に意味のある数字です。
問題
iOS では Flutter の音声は AVPlayer を通ります。AVPlayer には Opus も OGG のデコーダーもありません。Opus のみのビルドは iPhone と iPad で品質が落ちるのではなく、無音です。声がインターフェースである製品にとって、無音は重大度の等級がつくバグではありません。アプリが存在しないということです。
これは統合まで見えず、しかもちょうど最悪の瞬間に破滅的になる種類の問題です。多言語パッケージ全体を生成し、QA で聴き、ライセンスを整理し終えたあとに、です。
何を出荷したか
既定のセットとして .m4a の AAC-LC、48 kHz。声はモノラルです。話し声はステレオから何も得られず、サイズが倍になるからです。音楽はステレオです。両プラットフォームでネイティブに再生されます。Opus のセットも引き続き製作され、Android 専用の選択肢として、同一のファイル名、キー、ディレクトリ構成で併せて出荷されます。つまりそれを選ぶことはパスの変更であり、それ以上のものではありません。
一般化した形
形式の決定は、それを生み出すパイプラインではなく、それをデコードしなければならないプラットフォームに属します。それに気づくのに最も安い瞬間は二十九のロケールを生成する前であり、安くするやり方は、仕様を読んで実行環境がそれを守ると仮定することではなく、早い段階で本物の対象端末でファイルを一つ再生することです。
両方のエンコードを同一の構成の裏に保つことはほとんど費用がかからず、不可逆な決定を可逆なものに変えました。この取引はたいてい受ける価値があります。