了解了音声およびビデオに関する関連知識を了解したら、以下の 2 つの記事を読むことができます:
- 音声およびビデオの開発基礎
- オーディオフレーム、ビデオフレーム、およびその同期
- Camera2、MediaCodec による mp4 の録画
- Android ネイティブエンコーディングおよびデコーディングインターフェース MediaCodec の詳細
この記事では、音声の基礎知識についてまとめ、以下の項目について説明します:
- 音声の生成
- 音声の 3 要素
- アナログ - デジタル変換
- 生のオーディオデータ
- PCM と Wav
- 音声処理の流れ
音声の生成#
音声は物体の振動によって生成され、空気、固体、液体などの媒体を介して伝達される音波です。人の耳で聞こえる音波の範囲は 20Hz〜20000Hz であり、これを可聴音波と呼びます。この音波は、周波数によって主に次のように分類されます:
- 可聴音波:20Hz〜20kHz
- 超音波:> 20kHz
- 超低音: < 20Hz
また、人の声の範囲は通常 85Hz〜1100Hz です。
音声の 3 要素#
音声の 3 要素は音高、音量、音色です。具体的には次のようになります:
- 音高:音の周波数の高さを指し、音を聴覚的に識別するための音の高さの程度を示します。物体が速く振動すると、発する音の音高は高くなり、遅く振動すると音高は低くなります。
- 音量:音強度または音量とも呼ばれ、音の振幅の大きさを指し、人の耳に聞こえる音の大きさの主観的な感覚を表します。
- 音色:音品とも呼ばれ、異なる音が波形の側面で常に異なる特性を持つことを指します。異なる物体の振動には異なる特徴があり、各物体が発する音の固有の品質を反映します。音色は具体的には高調波によって決まります。魅力的な音は単なる正弦波ではなく、高調波を持っています。
アナログ - デジタル変換#
音声はアナログオーディオ信号であり、音声をデジタル化するには、アナログオーディオ信号をデジタル信号に変換する必要があります。これがアナログ - デジタル変換です。主なプロセスにはサンプリング、量子化、エンコードが含まれます。以下の図に示すようになります:
- サンプリング:連続信号を離散信号に変換するプロセスであり、一定時間ごとの信号値が元の連続時間内の信号値を代替するものです。1 秒あたりのサンプリング回数をサンプリングレートといいます。たとえば、8kHz は電話信号のサンプリングレートであり、通話には十分です。オーディオ CD は通常 44.1kHz であり、デジタルテレビは通常 48kHz です。サンプリングレートが高いほど、音声の再現度が高くなります。
- 量子化:サンプリング後のアナログ信号をデジタル信号に変換するプロセスであり、均等量子化と非均等量子化に分けられます。上記の図では均等量子化が使用されていることが明らかです。量子化レベルは 8 です。
- エンコード:量子化された信号を対応するバイナリコードに変換するプロセスです。最も単純な方法はナチュラルバイナリコードですが、他のエンコーディング方法に興味がある場合は、自分で調べてください。上記の図では、エンコードは信源エンコードを指していますが、信道エンコードなどもあります。
生のオーディオデータ#
PCM(パルスコード変調)はアナログオーディオ信号をデジタルオーディオ信号に変換するものであり、音声およびビデオの PCM は圧縮されていないオーディオサンプルデータを指します。PCM データの主要な量子化指標は次のとおりです:
- サンプルサイズ:サンプルサイズまたは量子化レベルは、1 つのサンプルを格納するために使用されるビット数を示します。一般的には 16 ビットが使用されます。
- サンプルレート:サンプリングの頻度を表し、単位は Hz です。一般的なサンプルレートには 8k、16k、32k、44.1k、48k などがあります。
- チャンネル数:チャンネル数は、現在の PCM データに含まれるチャンネル数を表します。例えば、モノラル、ステレオ、マルチチャンネルなどです。
- バイトオーダリング:バイトオーダリングは、PCM データのバイトオーダリングがビッグエンディアンまたはリトルエンディアンであるかを示します。データ処理の効率を高めるために、通常はリトルエンディアンです。
- 符号:PCM データに符号ビットがあるかどうかを示します。
- 整数または浮動小数点:PCM データが整数型または浮動小数点型で表されるかを示します。
PCM データの量子化指標を理解したら、ビットレートはどのように計算されるのでしょうか。ビットレートは、1 秒あたりのサンプルデータの量を表します。計算方法は次のとおりです:
サンプルレート * サンプルサイズ * チャンネル数
例を挙げましょう:
サンプルレートが 44.1kHz、サンプルサイズが 16 ビット、ステレオの PCM エンコードされた WAV ファイルの場合、ビットレートは 44.1K *_16 *_2 = 1411.2Kb/s です。上記のオーディオを転送する場合、1 秒あたり 1M を超えるデータ量が必要になります。さらに、データ転送中に上り速度が下り速度よりもはるかに低い場合、オーディオデータを圧縮する必要があります。
PCM と WAV#
PCM については前のセクションで説明しましたが、WAV は非圧縮の音声ファイル形式であり、音声のエンコードには厳密な規定がありません。PCM または他のエンコーディング方式(MP3 エンコーディングなど)である場合があります。簡単にまとめると次のようになります:
- PCM:エンコーディング方式であり、音声およびビデオ領域では、生のオーディオデータのことを指します。
- WAV:音声ファイル形式であり、PCM データを保存できます。PCM のヘッダーが追加されたものと考えることができます。
最後に、WAV のヘッダーのイメージを示します:
詳細は後で研究して追加します。
音声処理の流れ#
音声の処理フローについて簡単に説明します。1 つは音声ファイルの生成です。Android では、AudioRecord
、MediaRecord
などを使用して取得した音声データは PCM データであり、これはデジタルオーディオ信号であり、生の PCM ストリームです。PCM データはエンコードされ、対応するオーディオファイルが生成されます。2 つ目は音声ファイルの再生です。デマルチプレクサ、デコーダを経て PCM に変換され、再生されます。