音频基础知识

PS:由浅入深,慢就是快。

本篇总结下音频基础知识,音视频相关文章如下:

下面将从以下几个方面进行介绍:

  1. 声音的产生

  2. 声音的三要素

  3. 模数转换

  4. 原始音频数据

  5. PCM与Wav

  6. 音频处理流程

声音的产生

声音是由物体振动产生的,通过空气、固体、液体等介质进行传输的一种声波,可以被人耳识别的声波的范围是 20Hz~20000Hz 之间,也叫做可听声波,这种声波称之为声音,根据声波频率的不同可以主要分为:

  • 可听声波:20Hz~20kHz

  • 超声波:> 20kHz

  • 次声波:< 20Hz

此外,人的发声范围一般是 85Hz~1100Hz。

声音的三要素

声音的三要素分别是音调、音量、音色,具体如下:

  • 音调:指的是声音频率的高低,表示人的听觉分辨一个声音的调子高低的程度,物体振动的快,发出的声音的音调就高,振动的慢,发出的音调就低。

  • 音量:又称音强、响度,指声音的振幅大小,表示人耳对所听到的声音大小强弱的主观感受。

  • 音色:又称音品,指不同声音表现在波形方面总是有与众不同的特性,不同的物体振动都有不同的特点,反映每个物体发出的声音的特有的品质,音色具体由谐波决定,好听的声音绝不仅仅是一个正弦波,而是谐波。

模数转换

声音是一个模拟音频信号,如果要将声音数字化,则需要将模拟音频信号转换为数字信号,这就是模数转换,主要流程包括采样、量化、编码,如下图所示:

  • 采样:连续信号转换为离散信号的过程,每个一定时间的信号值来

    替代原来时间段连续的信号值,这个 1s 内的采样次数就是采样率

    ,如 8KHz 是电话信号的采样率,可以满足通话需要,音频 CD

    一般是 44.1kHz,数字电视一般是是 48kHz,采样率越高声音的还

    原程度越高。

  • 量化:将采样后 的模拟信号转换为数字信号的过程,量化分为均

    匀量化和非均匀量化,上图中显然使用了均匀量化,量化级数是 8。

  • 编码:将量化后的信号转换为对应的二进制代码,最简单就是自然

    二进制码,其他编码方式感兴趣自行去了解,上图中编码指的是信

    源编码,除此之外还有信道编码。

原始音频数据

PCM((Pulse Code Modulation)是脉冲编码调制,实际上就是将模拟音频信号转换为数字音频信号,音视频中的 PCM 指的是未经压缩的音频采样数据,是音频信号经采样、量化、编码生成的原始音频数据,PCM 数据关键量化指标如下:

  • Sample Size:采样大小,也是量化级数,表示一个采样用多少位 bit 存放,常用的是 16 位。

  • Sample Rate:采样率,表示每次采样的次数,单位 Hz,常见的采样率有 8k、16k、32k、44.1k、48k 等。

  • Number of Channels:声道数,表示当前 PCM 数据中包含的声道数,如单声道、双声道、多声道等。

  • Byte Ordering:字节序,表示 PCM 数据存储的字节序是大端存储(big-endian)还是小端存储(little-endian),为了数据处理效率的高效,通常为小端存储。

  • Sign:表示当前 PCM 数据是否有符号位

  • Integer Or Floating Point:表示当前 PCM 数据使用整型还是浮点型来表示。

了解了表示 PCM 数据的量化指标之后,那么码率如何计算呢,码率就是一秒钟采样数据的多少,计算方式如下:

1采样率 * 采样大小 * 声道数

举个例子:

采样率 44.1KHz,采样大小为 16bit,双声道的 PCM 编码的 WAV 文件,其码率为 44.1K *_16 *_2 = 1411.2Kb/s,假设传输上述音频,每秒将超过 1M 的数据量,再加上在数据传输过程中,上行速率往往远小于下行速率,这就需要压缩音频数据了。

PCM与WAV

PCM 可以查看前面小结,WAV 是一种无损的音频文件格式,其对音频的编码没有硬性规定,可以是 PCM 也可以是其他编码方式,比如 MP3编码等,简单总结一下:

  • PCM:一种编码方式,在音视频领域则理解为原始音频数据裸流;

  • WAV:一种音频文件格式,可存储 PCM 数据,相当于在 PCM 基础上添加了 WAV 头部。

最后附上一张 WAV 的 Header 示意图:

更多细节后续研究后补充。

音频处理流程

简单讲一下音频的处理流程,一是音频文件的生成,如在 Android 中使用 AudioRecordMediaRecord 等采集到的音频数据就是 PCM 数据,这种数据属于数字音频信号,是原始的 PCM 裸流,PCM 数据经过编码也就是将 PCM 数据压缩,在通过复用生成对应的音频文件,二是音频文件的播放,经解复用、解码转换成 PCM 进行播放。


技术交流,欢迎加我微信:ezglumes ,拉你入技术交流群。

推荐阅读:

音视频面试基础题

OpenGL ES 学习资源分享

开通专辑 | 细数那些年写过的技术文章专辑

NDK 学习进阶免费视频来了

推荐几个堪称教科书级别的 Android 音视频入门项目

觉得不错,点个在看呗~

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供相关的知识讲解和Python实现电脑录音的方法。 首先,我们需要了解一些音频基础知识音频是一种模拟信号,它可以被数字化为一系列数字信号,这些数字信号称为采样点。采样率是指每秒钟采集的采样点数,它决定了音频的质量。常用的采样率有8kHz、16kHz、44.1kHz和48kHz等。 Python中可以使用PyAudio库来录制音频。PyAudio是Python语言的一种音频处理库,可以用于录音、播放音频等操作。下面是一个简单的录制音频的示例代码: ```python import pyaudio import wave # 设置录音参数 CHUNK = 1024 FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 16000 RECORD_SECONDS = 5 WAVE_OUTPUT_FILENAME = "output.wav" # 创建PyAudio对象 p = pyaudio.PyAudio() # 打开音频流 stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK) print("* recording") # 录制音频 frames = [] for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)): data = stream.read(CHUNK) frames.append(data) print("* done recording") # 关闭音频流 stream.stop_stream() stream.close() p.terminate() # 保存音频文件 wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb') wf.setnchannels(CHANNELS) wf.setsampwidth(p.get_sample_size(FORMAT)) wf.setframerate(RATE) wf.writeframes(b''.join(frames)) wf.close() ``` 该代码使用PyAudio打开了一个音频流,并将音频数据读取到一个列表中。在录制完成后,将音频数据保存到一个WAV文件中。 需要注意的是,该代码只是一个简单的示例,实际应用中需要根据需要进行相关参数的设置,如采样率、录制时间等。 希望这些信息能够帮助到您。如果您还有其他问题,请随时提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值