第 1 章、オーディオの基本

音声処理の流れ

オーディオ データ ストリーム処理

音がどのように聞こえるか

  • 音は振動する物体によって生成されます。
  • 音は空気、液体、または固体を介して伝達されます。
  • 音は鼓膜を振動させ、脳に神経信号を生成します。

音に関する人間の生理的特性

音の三要素

  • 口調:早口と遅口 男の子→女の子→子供
  • ボリューム:振動の大きさ
  • 音色:ハーモニック

アナログからデジタルへの変換

アナログオーディオ

連続的な電流または電圧で表される音声信号で、時間と振幅が連続しています。過去には、録音はすべてアナログオーディオであり、機械録音(蓄音機と機械レコードに代表される)、光学録音(フィルムに代表される)、磁気録音(磁気テープ録音に代表される)などのアナログ録音方法がありました。

デジタルオーディオ

サンプリングおよび量子化技術によって取得された個別の (デジタル化された) オーディオ データ。コンピュータの内部処理はバイナリ データであり、すべての処理はデジタル オーディオであるため、サンプリングと量子化によってアナログ オーディオを有限のデジタル表現の離散シーケンスに変換する (つまり、オーディオのデジタル化を実現する) 必要があります。

アナログからデジタルへの変換は、アナログ信号をデジタル信号に変換することです。

ナイキスト定理

在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时(fs.max>2fmax),采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的2.56~4倍;采样定理又称奈奎斯特定理

PCM(パルスコード変調

1.PCMとは?

PCM (Pulse Code Modulation、パルス コード変調) オーディオ データは、アナログ信号のサンプリング、量子化、およびエンコードによって標準のデジタル オーディオ データに変換される非圧縮のオーディオ サンプル データ ストリームです。

PCM データを記述するパラメータ:

  • サンプリングレート:共通サンプリングレート 8k 16k 32k 44.1k 48K
  • サンプリング サイズまたはビット深度: オーディオおよびビデオの生放送シーンのビット深度は 16 ビット (-32768 ~ 32767)
  • チャンネル数: モノラル、バイノーラル、マルチチャンネル

2. PCM ビットレートの計算

PCM のビット レートを計算するには、= サンプル レート * サンプル サイズ * チャンネル数。

例: 16Khz のサンプリング レートと 16 ビットのサンプリング サイズを持つ 2 チャネル PCM のビット レート: 16k*16*2 = 512kbps。

  1. PCMを再生するためのツール

ffplay、使用例は次のとおりです。

//播放格式为f32le,单声道,采样频率48000Hz的PCM数据

ffplay -f f32le -ac 1 -ar 48000 pcm_audio

4. PCMデータフォーマット

モノラルオーディオファイルの場合、サンプリングデータは時系列順に保存され(LRLRLRモードで保存されることもありますが、他のチャンネルのデータは0です)、デュアルチャンネルの場合は次のように保存されます。 LRLRLR も同様に格納され、格納はバイト オーダーに関連しています。リトルエンディアン モードを次の図に示します。

5. FFmpegがサポートするPCMデータ形式

ffmpeg -formats コマンドを使用して、ffmpeg でサポートされているオーディオおよびビデオ形式を取得します。その中には、サポートされている PCM 形式があります。

DE alaw PCM A-law
DE f32be PCM 32-bit floating-point big-endian
DE f32le PCM 32-bit floating-point little-endian
DE f64be PCM 64-bit floating-point big-endian
DE f64le PCM 64-bit floating-point little-endian
DE mulaw PCM mu-law
DE s16be PCM signed 16-bit big-endian
DE s16le PCM signed 16-bit little-endian
DE s24be PCM signed 24-bit big-endian
DE s24le PCM signed 24-bit little-endian
DE s32be PCM signed 32-bit big-endian
DE s32le PCM signed 32-bit little-endian
DE s8 PCM signed 8-bit
DE u16be PCM unsigned 16-bit big-endian
DE u16le PCM unsigned 16-bit little-endian
DE u24be PCM unsigned 24-bit big-endian
DE u24le PCM unsigned 24-bit little-endian
DE u32be PCM unsigned 32-bit big-endian
DE u32le PCM unsigned 32-bit little-endian
DE u8 PCM unsigned 8-bit

s は符号付き、u は符号なし、f は浮動小数点数です。

be はビッグエンディアン、le はリトルエンディアンです。

たとえば、DE s16be は、サンプルが 16 ビットの符号付き整数データで表され、バイト オーダーがビッグ エンディアンであることを意味します。

バイトオーダー

2 バイトで構成される 16 ビット整数の場合、これら 2 バイトをメモリに格納する方法は 2 つあります。もう 1 つの方法は、ビッグ エンディアン (ビッグ エンディアン) バイト オーダーと呼ばれる、開始アドレスに上位バイトを格納することです。

 エンディアンの問題に関しては、2 つの主要な CPU 派閥が必ず関与します。それがモトローラのPowerPCシリーズCPUとインテルのx86シリーズCPUです。PowerPC シリーズはビッグ エンディアンを使用してデータを格納しますが、x86 シリーズはリトル エンディアンを使用してデータを格納します。では、ビッグエンディアンとは何か、リトルエンディアンとは何なのか?

ビッグエンディアン

ビッグ エンディアンとは、下位アドレスに最上位バイト (MSB、最上位ビット) が格納されることを意味します。

リトル エンディアン

リトルエンディアンは、最下位バイト (LSB、Least Significant Bit) を格納する下位アドレスです。

32 ビットの int 型の数値 0x12345678 があり、その MSB (Most Significant Byte、最上位バイト) が 0x12、LSB (Least Significant Byte、最下位バイト) が 0x78 の場合、CPU メモリには 2 つの格納方法があります。 : (ストレージはアドレス 0x4000 から始まると仮定します)

 すべてのネットワーク プロトコルは、ビッグ エンディアンを使用してデータを送信します。そのため、ビッグ エンディアン方式はネットワーク バイト オーダーとも呼ばれます。異なるバイト オーダーを使用する 2 つのホストが通信する場合、データを送信する前に、バイト オーダーをネットワーク バイト オーダーに変換してから送信する必要があります。

参考文献

PCMオーディオデータ

PCMボリュームコントロール

Raytheon: ビデオおよびオーディオ データ処理の概要: PCM オーディオ サンプリング データ処理

av-sample-fmt-s16p と av-sample-fmt-s16 の違いは何ですか

サイズエンドはこちらから参照:サイズエンドとは? サイズエンドの判別方法は?_wwwlyj123321さんのブログ - CSDNブログ_スモールエンド

おすすめ

転載: blog.csdn.net/codemanship/article/details/122716388