zoukankan      html  css  js  c++  java
  • 语音

    语音

    声音作为一种机械波,其基本物理属性是频率和振幅。频率指振动的快慢。振幅是指声波在某个位置上的瞬时强弱。有时候,人们用音高、音质和音强来描述声音的基本特征。实际上,这三个特征都归结为频率和振幅这两个基本属性。其中音高、音质与频率相关。

    所谓分贝,是指两个相同的物理量(例A1A0)之比取以10为底的对数并乘以20(或10),即N = 20lg(A1/A0) 。通常,我们以20微帕斯卡(μPa)为基准值来度量其他声音的强弱,例如,火箭发射时产生的声音压力是2000帕斯卡,因此,其分贝值就是log20(2000/20x10-6),即160分贝。

    采样频率:单位时间内采集的样本数,是采样周期的倒数。

    常见的一些采样频率:CD-Audio 采样频率为44.1kHz,一般网络和移动通信采样的音频采样率为8KHz

    量化深度:表示一个样本的二进制的位数,即样本的比特数。一般的网络音频(移动通信)应用采用了8位的量化深度,CD音频的量化深度则是16比特,而有些高级数字音频系统采用了32位的量化深度。

    总之,采样是时间上的离散化,而量化则是空间上的离散化。

    编码:PCM编码,增量调制编码

    PCM编码(脉冲编码调制)的量化分为两种:一种是均匀量化(又称为线性量化),另一种称为非均匀量化(非线性量化)

    均匀量化如下图

    业界广泛采用了两种非均匀量化,一种称为μ律压扩(μ-Law)技术,另一种称为A律压扩(A-Law)技术。

    增量调制编码

    连续的1表示信号在上升,每次上升一个Δ;连续的0表示信号在下降,每次下降一个Δ;在信号的平缓部分,编码输出表现为01的交错,即数字化信号以阶跃Δ的大小上下起伏,用以记录模拟波形的平缓变化(对DM编码来说只能这样做)。

    WAVE波形音频文件

    WAVE文件,又称波形音频文件,是一种最为重要的用于存储PCM编码的数字音频数据的文件。WAVE文件作为多媒体应用中广泛使用的声波文件格式之一,是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写,一个WAVE文件的最开头四个字节便是"RIFF"WAVE文件是由若干个Chunk(可以翻译为块)组成的。按照在文件中的出现位置,它们分别是RIFF WAVE ChunkFormat ChunkFact Chunk(可选)和Data Chunk。这四个块(Chunk)的排列方式如图4-1所示。

    RIFF WAVE Chunk

    ID = 'RIFF'

    RiffType = 'WAVE'

    Format Chunk ID = 'fmt '

    Fact Chunk(optional) ID = 'fact'

    Data Chunk ID = 'data'

    除了Fact Chunk外,其他三个Chunk是必须具有的。我们看到,每个Chunk有各自的ID,均位于Chunk最开始的位置。ID作为标识,均为4个字节,实际上是4个字符,如"RIFF"。这4个字符合在一起被称为"四字符码"Four Character CodeFCC)。用"四字符码"作块ID,是RIFF文件的重要特点。紧跟在ID后面的是Chunk大小(注意,实际上是去除IDSize所占的字节数后剩下的其他字节数)4个字节,其中低字节表示数值低位,高字节表示数值高位。

    下面具体介绍各个Chunk的内容。所有数值表示均为低字节表示低位,高字节表示高位。

    RIFF WAVE Chunk

    "RIFF"作为标识,然后紧跟着为size字段,该size是整个wav文件大小减去IDSize所占用的字节数,即FileLen - 8 = Size然后是Type字段,为'WAVE',表示是wav文件。

    字段名称

    所占字节数

    具体内容

    ID

    4 Bytes

    "RIFF"

    Size

    4 Bytes

    由数据决定

    Type

    4 Bytes

    "WAVE"

    Data Chunk

    Data Chunk 是真正保存 wav 数据的地方,以'data'作为该 Chunk 的标示。然后是数据的大小。紧接着就是 wav 数据。

    字段名称

    所占字节数

    具体内容

    ID

    4 Bytes

    'data'

    Size

    4 Bytes

    音频数据的大小

    data

    最大不超过 size 所能表示的字节数

    音频数据,是文件的主体

    根据 Format Chunk 中的声道数以及采样 bit 数,wav 数据的 bit 位置可以分成以下 4 种形式

    单声道

    8bit 量化

    样本 1

    样本 2

    样本 3

    样本 4

    声道 0(左)

    声道 0(左)

    声道 0(左)

    声道 0(左)

    双声道

    8bit 量化

    样本 1

    样本 2

    声道 0(左)

    声道 1()

    声道 0(左)

    声道 1()

    单声道

    16bit 量化

    样本 1

    样本 2

    声道 0(左)

    (低位字节)

    声道 0(左)

    (高位字节)

    声道 0(左)

    (低位字节)

    声道 0(左)

    (高位字节)

    双声道

    16bit 量化

    样本 1

    声道 0(左)

    (低位字节)

    声道 0(左)

    (高位字节)

    声道 1(右)

    (低位字节)

    声道 1(右)

    (高位字节)

    双声道

    将转码输出配置为未压缩的PCM格式音频,

    即采样频率为44.1kHz、量化深度为16bits、双声道的波形音频,那么,缓冲区中的音频数据将按图4-39所示的方式排列。

     

    样本 1

       

    样本 2

     

    左声道低位字节

    左声道高位字节

    右声道低位字节

    右声道高位字节

    左声道低位字节

    左声道高位字节

    右声道低位字节

    右声道高位字节

    现在我们利用pAudioData指针来做一项实验,即利用指针pAudioData,将输出PCM音频的左声道字节全部改写为0。这样,读者播放输出音频文件,将只能听到右声道的声音。这项实验有助于读者理解左右声道的概念。

    混声

    采取创建多个Media Session的技术路线即可实现上述目标。图4-26描述了多Media Session播放多音频文件的基本原理

    我们利用三个Media Session同时启动三个音频文件的播放,三个声音都能够被听到。实际上,最后听到的声音,是一个混合后的声音,这是通过硬件(声卡)混声器(Mixture)实现的。需要指出的是,上述多音频文件播放的基本原理,正是游戏、动画等多媒体应用中的基本技术。理解这一点非常有用,读者今后完全可以利用该方法尝试开发类似的应用。

    音频信号的三种编码方式

    波形编码,参数编码,混合编码

  • 相关阅读:
    .NetCore Grpc 客服端 工厂模式配置授权
    DOCKER 拉取 dotnet 镜像太慢 docker pull mcr.microsoft.com too slow
    Introducing .NET 5
    VSCode 出现错误 System.IO.IOException: The configured user limit (128) on the number of inotify instances has been reached.
    Omnisharp VsCode Attaching to remote processes
    zookeeper3.5.5 centos7 完全分布式 搭建随记
    Hadoop2.7.7 centos7 完全分布式 配置与问题随记
    MySQL索引 索引分类 最左前缀原则 覆盖索引 索引下推 联合索引顺序
    SQL基础随记3 范式 键
    MySQL调优 优化需要考虑哪些方面
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10049888.html
Copyright © 2011-2022 走看看