詳細講解:聲卡驅動及數字音頻技術知識點
發布時間:2017-02-15 責任編輯:sherry
【導讀】音yin頻pin信xin號hao是shi一yi種zhong連lian續xu變bian化hua的de模mo擬ni信xin號hao,但dan計ji算suan機ji隻zhi能neng處chu理li和he記ji錄lu二er進jin製zhi的de數shu字zi信xin號hao,由you自zi然ran音yin源yuan得de到dao的de音yin頻pin信xin號hao必bi須xu經jing過guo一yi定ding的de變bian換huan,成cheng為wei數shu字zi音yin頻pin信xin號hao之zhi後hou,才cai能neng送song到dao計ji算suan機ji中zhong作zuo進jin一yi步bu的de處chu理li。
關於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)。
一、數字音頻
音yin頻pin信xin號hao是shi一yi種zhong連lian續xu變bian化hua的de模mo擬ni信xin號hao,但dan計ji算suan機ji隻zhi能neng處chu理li和he記ji錄lu二er進jin製zhi的de數shu字zi信xin號hao,由you自zi然ran音yin源yuan得de到dao的de音yin頻pin信xin號hao必bi須xu經jing過guo一yi定ding的de變bian換huan,成cheng為wei數shu字zi音yin頻pin信xin號hao之zhi後hou,才cai能neng送song到dao計ji算suan機ji中zhong作zuo進jin一yi步bu的de處chu理li。
數字音頻係統通過將聲波的波型轉換成一係列二進製數據,來實現對原始聲音的重現,實現這一步驟的設備常被稱為模/數轉換器(A/D)。A/D轉換器以每秒鍾上萬次的速率對聲波進行采樣,每個采樣點都記錄下了原始模擬聲波在某一時刻的狀態,通常稱之為樣本(sample),ermeiyimiaozhongsuocaiyangdeshumuzechengweicaiyangpinlv,tongguojiangyichuanlianxudeyangbenlianjieqilai,jiukeyizaijisuanjizhongmiaoshuyiduanshengyinle。duiyucaiyangguochengzhongdemeiyigeyangbenlaishuo,shuziyinpinxitonghuifenpeiyidingcunchuweilaijilushengbodezhenfu,yibanchengzhiweicaiyangfenbianlvhuozhecaiyangjingdu,caiyangjingduyuegao,shengyinhaiyuanshijiuhuiyuexini。
數字音頻涉及到的概念非常多,對於在Linux下進行音頻編程的程序員來說,最重要的是理解聲音數字化的兩個關鍵步驟:采(cai)樣(yang)和(he)量(liang)化(hua)。采(cai)樣(yang)就(jiu)是(shi)每(mei)隔(ge)一(yi)定(ding)時(shi)間(jian)就(jiu)讀(du)一(yi)次(ci)聲(sheng)音(yin)信(xin)號(hao)的(de)幅(fu)度(du),而(er)量(liang)化(hua)則(ze)是(shi)將(jiang)采(cai)樣(yang)得(de)到(dao)的(de)聲(sheng)音(yin)信(xin)號(hao)幅(fu)度(du)轉(zhuan)換(huan)為(wei)數(shu)字(zi)值(zhi),從(cong)本(ben)質(zhi)上(shang)講(jiang),采(cai)樣(yang)是(shi)時(shi)間(jian)上(shang)的(de)數(shu)字(zi)化(hua),而(er)量(liang)化(hua)則(ze)是(shi)幅(fu)度(du)上(shang)的(de)數(shu)字(zi)化(hua)。下(xia)麵(mian)介(jie)紹(shao)幾(ji)個(ge)在(zai)進(jin)行(xing)音(yin)頻(pin)編(bian)程(cheng)時(shi)經(jing)常(chang)需(xu)要(yao)用(yong)到(dao)的(de)技(ji)術(shu)指(zhi)標(biao):
采樣頻率
采樣頻率是指將模擬聲音波形進行數字化時,每秒鍾抽取聲波幅度樣本的次數。采樣頻率的選擇應該遵循奈奎斯特(Harry Nyquist)采樣理論:ruguoduimouyimonixinhaojinxingcaiyang,zecaiyanghoukehaiyuandezuigaoxinhaopinlvzhiyoucaiyangpinlvdeyiban,huozheshuozhiyaocaiyangpinlvgaoyushuruxinhaozuigaopinlvdeliangbei,jiunengcongcaiyangxinhaoxiliezhonggouyuanshixinhao。zhengchangrentingjiaodepinlvfanweidayuezai20Hz~20kHz之間,根據奈奎斯特采樣理論,為了保證聲音不失真,采樣頻率應該在40kHz左右。常用的音頻采樣頻率有8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz等,如果采用更高的采樣頻率,還可以達到DVD的音質。 其中,8kHZ為電話的采樣頻率。
量化位數
量化位數是對模擬音頻信號的幅度進行數字化,它決定了模擬信號數字化以後的動態範圍,常用的有8位、12位和16位。量化位越高,信號的動態範圍越大,數字化後的音頻信號就越可能接近原始信號,但所需要的存貯空間也越大。
聲道數
聲sheng道dao數shu是shi反fan映ying音yin頻pin數shu字zi化hua質zhi量liang的de另ling一yi個ge重zhong要yao因yin素su,它ta有you單dan聲sheng道dao和he雙shuang聲sheng道dao之zhi分fen。雙shuang聲sheng道dao又you稱cheng為wei立li體ti聲sheng,在zai硬ying件jian中zhong有you兩liang條tiao線xian路lu,音yin質zhi和he音yin色se都dou要yao優you於yu單dan聲sheng道dao,但dan數shu字zi化hua後hou占zhan據ju的de存cun儲chu空kong間jian的de大da小xiao要yao比bi單dan聲sheng道dao多duo一yi倍bei。
二、聲卡驅動
出於對安全性方麵的考慮,Linux下的應用程序無法直接對聲卡這類硬件設備進行操作,而是必須通過內核提供的驅動程序才能完成。在Linux上進行音頻編程的本質就是要借助於驅動程序,來完成對聲卡的各種操作。
duiyingjiandekongzhishejidaojicunqizhonggegebiteweidecaozuo,tongchangzheshiyushebeizhijiexiangguanbingqieduishixudeyaoqiufeichangyange,ruguozhexiegongzuodoujiaoyouyingyongchengxuyuanlaifuze,nameduishengkadebianchengjiangbiandeyichangfuzaerkunnanqilai,qudongchengxudezuoyongzhengshiyaopingbiyingjiandezhexiedicengxijie,congerjianhuayingyongchengxudebianxie。muqianLinux下常用的聲卡驅動程序主要有兩種: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,對應用程序員來講無疑是一個更佳的選擇。
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 菲尼克斯電氣DIP產線獲授“IPC HERMES Demo Line”示範線
- 貿澤電子新品推薦:2026年第一季度引入超過9,000個新物料
- PROFINET牽手RS232:網關為RFID裝上“同聲傳譯”舊設備秒變智能
- 跨域無界 智馭未來——聯合電子北京車展之智能網聯篇
- 為AI尋找存儲新方案
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
單向可控矽
刀開關
等離子顯示屏
低頻電感
低通濾波器
低音炮電路
滌綸電容
點膠設備
電池
電池管理係統
電磁蜂鳴器
電磁兼容
電磁爐危害
電動車
電動工具
電動汽車
電感
電工電路
電機控製
電解電容
電纜連接器
電力電子
電力繼電器
電力線通信
電流保險絲
電流表
電流傳感器
電流互感器
電路保護
電路圖


