您的位置 首页 汽车

数字音频技能知识点及声卡驱动

数字音频技术知识点及声卡驱动-音频信号是一种连续变化的模拟信号,但计算机只能处理和记录二进制的数字信号,由自然音源得到的音频信号必须经过一定的变换,成为数字音频信号之后,才能送到计算机中作进一步的处理

关于PCM

PCM是Pulse code modulaTIon的缩写,它是对波形最直接的编码方法。它在音频中的位置或许和BMP在图片中的位置有点相似吧。

Sampling rate:从模仿信号到数字信号,即从接连信号到离散信号的转化都是经过离散采样完结的,Sampling rate便是每秒种采样的个数。依据香农采样定理,要确保信号不失真,Sampling rate要大于信号最高频率的两倍。咱们知道人的耳朵能听到的频率规模是20hz – 20khz,所以Sampling rate到达40k就够了,再多了也仅仅糟蹋。可是有时为了节约带宽和存储资源,可以下降Sampling rate而丢失声响的质量,所以咱们常常见到小于40k采样率的声响数据。

Sample size:用来量化一个采样的起伏,一般为8 bits、16 bits和24 bits。8 bits只需前期的声卡支撑,而24 bits只需专业的声卡才支撑,咱们用的一般都是16 bits的。

Number of channels:声响通道个数,单声道为一个,立体声为两个,还有更多的(如8个声道的7.1格局)。一般来说,每个声道都来源于一个独立的mic,所以声道多效果会更好(更实在),当然价值也更大。

Frame: Frame是指包含了一切通道的一次采样数据,比方关于16bits的双声道来说,一个frame的巨细为4个字节(2 * 16)。

一、数字音频

音频信号是一种接连改变的模仿信号,但计算机只能处理和记载二进制的数字信号,由天然音源得到的音频信号有必要经过必定的改换,成为数字音频信号之后,才干送到计算机中作进一步的处理。

数字音频体系经过将声波的波型转化成一系列二进制数据,来完结对原始声响的重现,完结这一过程的设备常被称为模/数转化器(A/D)。A/D转化器以每秒钟上万次的速率对声波进行采样,每个采样点都记载下了原始模仿声波在某一时刻的状况,一般称之为样本(sample),而每一秒钟所采样的数目则称为采样频率,经过将一串接连的样本连接起来,就可以在计算机中描绘一段声响了。关于采样过程中的每一个样本来说,数字音频体系会分配必定存储位来记载声波的振幅,一般称之为采样分辩率或许采样精度,采样精度越高,声响复原时就会越细腻。

数字音频涉及到的概念十分多,关于在Linux下进行音频编程的程序员来说,最重要的是了解声响数字化的两个关键过程:采样和量化。采样便是每隔必定时刻就读一次声响信号的起伏,而量化则是将采样得到的声响信号起伏转化为数字值,从实质上讲,采样是时刻上的数字化,而量化则是起伏上的数字化。下面介绍几个在进行音频编程时常常需求用到的技术指标:

采样频率

采样频率是指将模仿声响波形进行数字化时,每秒钟抽取声波起伏样本的次数。采样频率的挑选应该遵从奈奎斯特(Harry Nyquist)采样理论:假如对某一模仿信号进行采样,则采样后可复原的最高信号频率只需采样频率的一半,或许说只需采样频率高于输入信号最高频率的两倍,就能从采样信号系列重构原始信号。正常人听觉的频率规模大约在20Hz~20kHz之间,依据奈奎斯特采样理论,为了确保声响不失真,采样频率应该在40kHz左右。常用的音频采样频率有8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz等,假如选用更高的采样频率,还可以到达DVD的音质。 其间,8kHZ为电话的采样频率。

量化位数

量化位数是对模仿音频信号的起伏进行数字化,它决议了模仿信号数字化今后的动态规模,常用的有8位、12位和16位。量化位越高,信号的动态规模越大,数字化后的音频信号就越或许挨近原始信号,但所需求的存贮空间也越大。

声道数

声道数是反映音频数字化质量的另一个重要因素,它有单声道和双声道之分。双声道又称为立体声,在硬件中有两条线路,音质和音色都要优于单声道,但数字化后占有的存储空间的巨细要比单声道多一倍。

二、声卡驱动

出于对安全性方面的考虑,Linux下的运用程序无法直接对声卡这类硬件设备进行操作,而是有必要经过内核供给的驱动程序才干完结。在Linux上进行音频编程的实质便是要借助于驱动程序,来完结对声卡的各种操作。

对硬件的操控涉及到寄存器中各个比特位的操作,一般这是与设备直接相关而且对时序的要求十分严厉,假如这些作业都交由运用程序员来担任,那么对声卡的编程将变得反常杂乱而困难起来,驱动程序的效果正是要屏蔽硬件的这些底层细节,然后简化运用程序的编写。现在Linux下常用的声卡驱动程序主要有两种:OSS和ALSA。

最早呈现在Linux上的音频编程接口是OSS(Open Sound System),它由一套完好的内核驱动程序模块组成,可以为绝大多数声卡供给一致的编程接口。OSS呈现的前史相对较长,这些内核模块中的一部分(OSS/Free)是与Linux内核源码一起免费发布的,别的一些则以二进制的方式由4Front Technologies公司供给。因为得到了商业公司的鼎力支撑,OSS现已成为在Linux下进行音频编程的事实标准,支撑OSS的运用程序可以在绝大多数声卡上作业杰出。

尽管OSS现已十分老练,但它毕竟是一个没有彻底开放源代码的商业产品,ALSA(AdvancedLinux Sound Architecture)刚好弥补了这一空白,它是在Linux下进行音频编程时另一个可供挑选的声卡驱动程序。ALSA除了像OSS那样供给了一组内核驱动程序模块之外,还专门为简化运用程序的编写供给了相应的函数库,与OSS供给的根据ioctl的原始编程接口比较,ALSA函数库运用起来要愈加便利一些。ALSA的主要特点有:

支撑多种声卡设备

模块化的内核驱动程序

支撑SMP和多线程

供给运用开发函数库

兼容OSS运用程序

ALSA和OSS最大的不同之处在于ALSA是由志愿者保护的自在项目,而OSS则是由公司供给的商业产品,因而在对硬件的习惯程度上OSS要优于ALSA,它可以支撑的声卡品种更多。ALSA尽管不及OSS运用得广泛,但却具有愈加友爱的编程接口,而且彻底兼容于OSS,对运用程序员来讲无疑是一个更佳的挑选。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/183689.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部