blog 迁移算法
声音是介质振动在听觉系统中产生的反应。声音总能够被分解为不一样频率不一样强度正弦波的叠加(傅里叶变换)。
复制代码
声音基本的两个属性:markdown
振幅:声音的振幅就是音量app
频率:声音的频率就是音调的高低单位 Hzide
模拟音频:上图蓝色曲线,在时间和振幅都是连续的。好比:磁带,唱片等。oop
数字音频:上图红色点,经过采样和量化得到离散性数据。好比:CD,MP3 等数字格式。性能
经过上图来介绍一下几个基础的概念:ui
采样率 Sampling Rate:单位时间内的采样点,即上图一个区间内红点的个数,单位为 kHz,每秒千个采样。编码
量化深度 Depth :每一个样本的二进制位数,即上图红点的 Y 坐标的值,位数越多,振幅能区分的更细,一般量化深度为 4,8,16,32 bit,spa
声道数 Channel Num :每次生成一个采样数据,为单声道,多个声道能够重现出声音的位置。3d
Nyquist-Shannon Sampling Theorem 采样定理
当采样频率fs.max大于信号中最高频率fmax的2倍时,数字信号就能完整的保留原始信号中的信息。
而 44.1khz * 0. 5 为 22.05 khz,基本包含了人声能听到的频率范围( 14-15 khz)。
深度信息为位信息,即每一个采样值的长度,即 depth,位信息越长,质量越高同时越消耗系统的性能。
声音的码率就是 depth * sample rate = bkhz
好比一张 CD ,2 x 16 x 44100 = 1,411,200 比特每秒 ,即每秒 172 kb
和图片有颜色通道同样,声音也有通道:左声道,右声道。
而 5.1 声道的信号包括 6 个声道:先后的左右声道,中间声道,无方向的低频声道。
数字音频编码 PCM ( pulse code modulation) ,采样率为 1s 以内有多少个采样值,最多见的是 44.1 kHz,即 1s 内存在 44,100 个采样。采样率越高越接近声音真实的频率。
对声音进行采样、量化过程被称为脉冲编码调制(Pulse Code Modulation),简称PCM。PCM数据是最原始的音频数据彻底无损,因此PCM数据虽然音质优秀但体积庞大,为了解决这个问题前后诞生了一系列的音频格式,这些音频格式运用不一样的方法对音频数据进行压缩,其中有无损压缩(ALAC、APE、FLAC)和有损压缩(MP三、AAC、OGG、WMA)两种。
全部的声道数据组成 音频帧 。
在一些压缩的声音格式中,会对多个音频帧,组合成一个包,进行特殊的算法处理,来实现数据压缩的功能,不过这样的音频就不是无损的了。
如咱们常见的 MP3, AAC 格式等,
这边容易搞混的是
音频编码 Audio Codec :
音频压缩格式 Audio Coding Format :如 MP3, AFLAC,FLAC等
通常状况下咱们能见到的确定都是 波形图
这个又称为 时域图 ,即在时间领域的声音数据模型。
x 轴是时间,y轴是声音的大小
控制声音的大小就是要将其幅度进行缩小 进行固定 scale 的缩放就能控制声音的音量。
控制时间,就是调整齐播放的速度,能够实现快放和慢放。
而在咱们平常生活中听到的声音,是由不一样频率的声音叠加起来,最终获得咱们人耳听见混合以后的声音。
固然,这样三维的图片,查看起来确定不方便,因此便有了下面这种频谱图:
x 轴为时间
y 轴是频域
对应点的颜色表明着该时间点的该频率的峰值,颜色越深,表明峰值越高。能够理解为将上面的 3D 图,拍扁以后的效果。
音频格式: iOS 默认录制的音频采样格式为 16 bit 的 线性 PCM 格式。
经过 AVCaptureAudioDataOutput 能获得录制后的 CMSampleBufferRef 格式的 RAW 音频文件。
CMSampleBuffer 介绍 developer.apple.com/documentati…
包含 0 或多个采样数据,格式多是 音频或视频等。
CMSampleBuffer 为音视频的 Raw Data 即源数据。有以下来源和用法
AVCaptureDataOutput 读经过代理提供 CMSampleBuffer
AVAssetReader 读取本地文件的 CMSampleBuffer
AVAssetWriter 写文件
内部包含了数据格式
CVImageBuffer / CVPixelBuffer 视频帧
CMBlockBuffer 任何数据(声音,字幕,timecode)