From 032d7e1d2457f8c97d98b9648011b68b6d2f23cb Mon Sep 17 00:00:00 2001 From: syx-413 Date: Wed, 4 Sep 2024 06:02:17 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20main=20from=20@=20syx-413/nota?= =?UTF-8?q?blog-starter@f55273713ecdabb43bfe7ef41764299f49fe456b=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Rust15.html | 4 ++-- Rust3.html | 10 +++++----- Rust4.html | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Rust15.html b/Rust15.html index cbfafba..7ac8e22 100644 --- a/Rust15.html +++ b/Rust15.html @@ -236,7 +236,7 @@

-

1 音频格式 #

PCM:脉冲编码调制(英语:Pulse-code modulation,缩写:PCM)是一种模拟信号的数字化方法。 A PCM stream has two basic properties that determine the stream’s fidelity to the original analog signal:

  1. the sampling rate, which is the number of times per second that samples are taken;
  2. and the bit depth, which determines the number of possible digital values that can be used to represent each sample.

The compact disc (CD) brought PCM to consumer audio applications with its introduction in 1982. The CD uses a 44,100 Hz sampling frequency and 16-bit resolution and stores up to 80 minutes of stereo audio per disc. stereo audio 是通过 two-channel 提供的。

  • The audio contained in a CD-DA consists of two-channel signed 16-bit LPCM sampled at 44,100 Hz and written as a little-endian interleaved stream with left channel coming first

LPCM 的解释:Linear pulse-code modulation (LPCM) 是一种数字信号的表示方法,主要用于音频信号。它通过将模拟信号定期采样并量化为线性级别的数字值来工作。LPCM是脉冲编码调制(PCM)的一种形式,特别强调了量化过程是线性的。这意味着模拟信号的每个采样值都直接转换成相应的数字值, 而这个转换过程不涉及任何非线性压缩 。LPCM的关键步骤包括采样、量化和编码:

  1. **采样**:这是将连续的模拟信号转换为离散信号的过程。根据奈奎斯特定理,为了避免混叠效应,采样频率应至少为信号最高频率的两倍。例如,CD音频以44.1kHz的频率采样,这意味着它可以准确地再现高达22.05kHz 的声音频率,覆盖了人耳可听范围。
  2. **量化**:量化过程涉及将每个采样点的振幅(即大小或强度)近似到一组有限的数值中。在LPCM中,这个过程是线性的,这意味着模拟信号的动态范围被均匀分配给量化级别。量化的精度通常用比特数表示,比如CD音质的LPCM采用16位量化,提供了65536(2^16)个不同的可能振幅级别。
  3. **编码**:最后,量化后的数值被编码为数字信号,可以存储或传输。在LPCM中,这些数值直接表示信号的振幅, 不进行任何额外的压缩或编码

LPCM 是一种无损的音频格式 ,因为它不涉及压缩过程中的信息丢失(尽管原始模拟信号在采样和量化过程中可能会有一定程度的近似)。由于它的这个特性, LPCM广泛用于需要高音质的应用中 ,如CD音频、DVD音频、蓝光音频和一些专业音频录制系统。

LPCM的主要优点包括简单、直接和高质量的音频表示, 但它也有一个缺点,即相对较高的数据率 。例如,未压缩的CD质量音频(使用44.1kHz的采样率和16位深度的立体声LPCM)的数据率约为1.4Mbps。相比之下, 许多现代音频压缩技术,如MP3或AAC ,通过去除人耳难以察觉的音频信息来大幅度减少所需的数据率,但这种压缩是有损的。

立体声和多声道 LPCM:

  1. 在立体声 LPCM 流中,左声道和右声道的采样值通常是 交错存储的 。例如,一个典型的存储序列可能是L1、 R1、L2、R2、…、Ln、Rn,其中L和R分别代表左声道和右声道的采样值,n是采样点的索引。
  2. 在多声道LPCM流中,各声道的采样值可以按不同方式组织。最常见的是交错方式,即按照采样时刻顺序依次存储各声道的采样值,比如L1、C1、R1、LS1、RS1、L2、C2、R2、LS2、RS2、…,其中L、C、R、LS、RS分别代表左前、中央、右前、左后和右后声道的采样值。

WAV(Waveform Audio File Format) 是一种音频文件格式,它通常用来 存储未压缩的音频数据 ,这些数据大多数情况下 使用Linear Pulse-Code Modulation (LPCM) 编码 。WAV格式由微软和IBM开发,最初是为Windows 3.1 操作系统设计的。由于其无损特性和广泛的兼容性,WAV格式成为了保存高质量音频的一种流行选择。

总结:WAV 文件和 LPCM 的关系:

  • **存储LPCM数据**:WAV文件格式经常用来存储LPCM编码的音频数据。这意味着WAV文件可以 保存按照LPCM方法采样、量化和编码的音频信号,保留原始音频的所有细节而不会丢失任何信息
  • **无损音频格式**:由于LPCM是一种无损编码方式, 因此使用LPCM编码的WAV文件也是无损的 。这使得WAV文件特别适合需要高质量音频,如专业音乐制作、音频编辑和音频分析的场合。
  • **高数据率**:LPCM编码的音频数据未经过压缩,所以WAV文件通常具有较高的数据率。例如,一段标准的CD质量音频(44.1kHz采样率、16位深度、立体声)的数据率大约为1.4Mbps。 这意味着WAV文件可以变得相当大 ,尤其是对于较长的录音。
  • **广泛的应用**:WAV格式由于其简单、无损和高质量的特性,在很多应用中被广泛使用,尤其是在需要原始音质的场合,如音乐制作、电影后期制作、广播和科学研究等。

总结: wav 文件不需要解码,可以直接读取 LPCM 编码数据 ,然后通过 I2S 接口发送给功放芯片播放。

// https://github.com/espressif/esp-box/blob/master/examples/watering_demo/main/app/app_audio.c
+  

1 音频格式 #

PCM:脉冲编码调制(英语:Pulse-code modulation,缩写:PCM)是一种模拟信号的数字化方法。 A PCM stream has two basic properties that determine the stream’s fidelity to the original analog signal:

  1. the sampling rate, which is the number of times per second that samples are taken;
  2. and the bit depth, which determines the number of possible digital values that can be used to represent each sample.

The compact disc (CD) brought PCM to consumer audio applications with its introduction in 1982. The CD uses a 44,100 Hz sampling frequency and 16-bit resolution and stores up to 80 minutes of stereo audio per disc. stereo audio 是通过 two-channel 提供的。

  • The audio contained in a CD-DA consists of two-channel signed 16-bit LPCM sampled at 44,100 Hz and written as a little-endian interleaved stream with left channel coming first

LPCM 的解释:Linear pulse-code modulation (LPCM) 是一种数字信号的表示方法,主要用于音频信号。它通过将模拟信号定期采样并量化为线性级别的数字值来工作。LPCM是脉冲编码调制(PCM)的一种形式,特别强调了量化过程是线性的。这意味着模拟信号的每个采样值都直接转换成相应的数字值, 而这个转换过程不涉及任何非线性压缩 。LPCM的关键步骤包括采样、量化和编码:

  1. **采样**:这是将连续的模拟信号转换为离散信号的过程。根据奈奎斯特定理,为了避免混叠效应,采样频率应至少为信号最高频率的两倍。例如,CD音频以44.1kHz的频率采样,这意味着它可以准确地再现高达22.05kHz 的声音频率,覆盖了人耳可听范围。
  2. **量化**:量化过程涉及将每个采样点的振幅(即大小或强度)近似到一组有限的数值中。在LPCM中,这个过程是线性的,这意味着模拟信号的动态范围被均匀分配给量化级别。量化的精度通常用比特数表示,比如CD音质的LPCM采用16位量化,提供了65536(2^16)个不同的可能振幅级别。
  3. **编码**:最后,量化后的数值被编码为数字信号,可以存储或传输。在LPCM中,这些数值直接表示信号的振幅, 不进行任何额外的压缩或编码

LPCM 是一种无损的音频格式 ,因为它不涉及压缩过程中的信息丢失(尽管原始模拟信号在采样和量化过程中可能会有一定程度的近似)。由于它的这个特性, LPCM广泛用于需要高音质的应用中 ,如CD音频、DVD音频、蓝光音频和一些专业音频录制系统。

LPCM的主要优点包括简单、直接和高质量的音频表示, 但它也有一个缺点,即相对较高的数据率 。例如,未压缩的CD质量音频(使用44.1kHz的采样率和16位深度的立体声LPCM)的数据率约为1.4Mbps。相比之下, 许多现代音频压缩技术,如MP3或AAC ,通过去除人耳难以察觉的音频信息来大幅度减少所需的数据率,但这种压缩是有损的。

立体声和多声道 LPCM:

  1. 在立体声 LPCM 流中,左声道和右声道的采样值通常是 交错存储的 。例如,一个典型的存储序列可能是L1、 R1、L2、R2、…、Ln、Rn,其中L和R分别代表左声道和右声道的采样值,n是采样点的索引。
  2. 在多声道LPCM流中,各声道的采样值可以按不同方式组织。最常见的是交错方式,即按照采样时刻顺序依次存储各声道的采样值,比如L1、C1、R1、LS1、RS1、L2、C2、R2、LS2、RS2、…,其中L、C、R、LS、RS分别代表左前、中央、右前、左后和右后声道的采样值。

WAV(Waveform Audio File Format) 是一种音频文件格式,它通常用来 存储未压缩的音频数据 ,这些数据大多数情况下 使用Linear Pulse-Code Modulation (LPCM) 编码 。WAV格式由微软和IBM开发,最初是为Windows 3.1 操作系统设计的。由于其无损特性和广泛的兼容性,WAV格式成为了保存高质量音频的一种流行选择。

总结:WAV 文件和 LPCM 的关系:

  • **存储LPCM数据**:WAV文件格式经常用来存储LPCM编码的音频数据。这意味着WAV文件可以 保存按照LPCM方法采样、量化和编码的音频信号,保留原始音频的所有细节而不会丢失任何信息
  • **无损音频格式**:由于LPCM是一种无损编码方式, 因此使用LPCM编码的WAV文件也是无损的 。这使得WAV文件特别适合需要高质量音频,如专业音乐制作、音频编辑和音频分析的场合。
  • **高数据率**:LPCM编码的音频数据未经过压缩,所以WAV文件通常具有较高的数据率。例如,一段标准的CD质量音频(44.1kHz采样率、16位深度、立体声)的数据率大约为1.4Mbps。 这意味着WAV文件可以变得相当大 ,尤其是对于较长的录音。
  • **广泛的应用**:WAV格式由于其简单、无损和高质量的特性,在很多应用中被广泛使用,尤其是在需要原始音质的场合,如音乐制作、电影后期制作、广播和科学研究等。

总结

wav文件不需要解码,可以直接读取 LPCM 编码数据 ,然后通过 I2S 接口发送给功放芯片播放。

// https://github.com/espressif/esp-box/blob/master/examples/watering_demo/main/app/app_audio.c
 
 static void audio_beep_task(void *pvParam)
 {
@@ -697,7 +697,7 @@ 

client.sendBinary((const char*)sBuffer, bytesIn); } } -}

+}