1. 移動(dòng)端原生音頻支持
1.1 android Supported media formats
https://developer.android.com/guide/topics/media/media-formats
Format / CodecEncoderDecoderDetailsSupported File Type(s) / Container Formats
AAC LC??Support for mono/stereo/5.0/5.1 content with standard sampling rates from 8 to 48 kHz.? 3GPP (.3gp)
? MPEG-4 (.mp4, .m4a)
? ADTS raw AAC (.aac, decode in Android 3.1+, encode in Android 4.0+, ADIF not supported)
? MPEG-TS (.ts, not seekable, Android 3.0+)
HE-AACv1 (AAC+)?
(Android 4.1+)
?
HE-AACv2 (enhanced AAC+)?Support for stereo/5.0/5.1 content with standard sampling rates from 8 to 48 kHz.
AAC ELD (enhanced low delay AAC)?
(Android 4.1+)
?
(Android 4.1+)
Support for mono/stereo content with standard sampling rates from 16 to 48 kHz
AMR-NB??4.75 to 12.2 kbps sampled @ 8kHz3GPP (.3gp)
AMR-WB??9 rates from 6.60 kbit/s to 23.85 kbit/s sampled @ 16kHz3GPP (.3gp)
FLAC?
(Android 4.1+)
?
(Android 3.1+)
Mono/Stereo (no multichannel). Sample rates up to 48 kHz (but up to 44.1 kHz is recommended on devices with 44.1 kHz output, as the 48 to 44.1 kHz downsampler does not include a low-pass filter). 16-bit recommended; no dither applied for 24-bit.FLAC (.flac) only
MIDI?MIDI Type 0 and 1. DLS Version 1 and 2. XMF and Mobile XMF. Support for ringtone formats RTTTL/RTX, OTA, and iMelody? Type 0 and 1 (.mid, .xmf, .mxmf)
? RTTTL/RTX (.rtttl, .rtx)
? OTA (.ota)
? iMelody (.imy)
MP3?Mono/Stereo 8-320Kbps constant (CBR) or variable bit-rate (VBR)MP3 (.mp3)
Opus?
(Android 5.0+)
Matroska (.mkv)
PCM/WAVE?
(Android 4.1+)
?8- and 16-bit linear PCM (rates up to limit of hardware). Sampling rates for raw PCM recordings at 8000, 16000 and 44100 Hz.WAVE (.wav)
Vorbis?? Ogg (.ogg)
? Matroska (.mkv, Android 4.0+)
1.2 Supported Audio File and Data Formats in OS X
Allowable data formats for each file format.
File FormatData Formats
AAC (.aac, .adts)'aac '
AC3 (.ac3)'ac-3'
AIFC (.aif, .aiff,.aifc)BEI8, BEI16, BEI24, BEI32, BEF32, BEF64, 'ulaw', 'alaw', 'MAC3', 'MAC6', 'ima4' , 'QDMC', 'QDM2', 'Qclp', 'agsm'
AIFF (.aiff)BEI8, BEI16, BEI24, BEI32
Apple Core Audio Format (.caf)'.mp3', 'MAC3', 'MAC6', 'QDM2', 'QDMC', 'Qclp', 'Qclq', 'aac ', 'agsm', 'alac', 'alaw', 'drms', 'dvi ', 'ima4', 'lpc ', BEI8, BEI16, BEI24,BEI32, BEF32, BEF64, LEI16, LEI24, LEI32, LEF32, LEF64, 'ms\x00\x02', 'ms\x00\x11', 'ms\x001', 'ms\x00U', 'ms \x00', 'samr', 'ulaw'
MPEG Layer 3 (.mp3)'.mp3'
MPEG 4 Audio (.mp4)'aac '
MPEG 4 Audio (.m4a)'aac ', alac'
NeXT/Sun Audio (.snd, .au)BEI8, BEI16, BEI24, BEI32, BEF32, BEF64, 'ulaw'
Sound Designer II (.sd2)BEI8, BEI16, BEI24, BEI32
WAVE (.wav)LEUI8, LEI16, LEI24, LEI32, LEF32, LEF64, 'ulaw', 'alaw'
Core Audio includes a number of audio codecs that translate audio data to and from Linear PCM. Codecs for the following audio data type are available in OS X v10.4. Audio applications may install additional encoders and decoders.
Audio data typeEncode from linear PCM?Decode to linear PCM?
MPEG Layer 3 ('.mp3')NoYes
MACE 3:1 ('MAC3')YesYes
MACE 6:1 ('MAC6')YesYes
QDesign Music 2 ('QDM2')YesYes
QDesign ('QDMC')NoYes
Qualcomm PureVoice ('Qclp')YesYes
Qualcomm QCELP ('qclq')NoYes
AAC ('aac ')YesYes
Apple Lossless ('alac')YesYes
Apple GSM 10:1 ('agsm')NoYes
ALaw 2:1 'alaw')YesYes
Apple DRM Audio Decoder ('drms')NoYes
AC-3NoNo
DVI 4:1 ('dvi ')NoYes
Apple IMA 4:1 ('ima4')YesYes
LPC 23:1 ('lpc ')NoYes
Microsoft ADPCMNoYes
DVI ADPCMYesYes
GSM610NoYes
AMR Narrowband ('samr')YesYes
μLaw 2:1 ('ulaw')YesYes
1.3 總結(jié):
android/ios都可以對(duì)mp3解碼,但不能編碼,編碼依賴lame;
android/ios支持對(duì)aac進(jìn)行編解碼;
mp3,aac均是音樂(lè)編碼器,android支持對(duì)amr窄帶與寬帶編解碼,ios文檔顯示對(duì)窄帶支持編解碼,但有人說(shuō)ios4.3.x版本之后不再支持AMR衩藤,剔除了AMR的硬解,如需使用依賴libopencore庫(kù);
結(jié)論:
h5 audio標(biāo)簽對(duì)mp3支持最好(audio標(biāo)簽除了firefox與opera都支持mp3,ogg,wav;flash播放器可以支持到mp3,aac,speex,nellymoser),考慮對(duì)純web的兼容性,使用mp3;
android,ios硬件對(duì)aac支持最好,考慮硬編碼的性能與效率,使用aac;
amr是語(yǔ)音編碼器,考慮使用場(chǎng)景,推薦amr.
對(duì)比微信,微信短語(yǔ)音,6.0之前用的amr,6.0之后用的silk_v3.
2.音頻基礎(chǔ)概念
2.1聲音三要素
聲音的特性可由三個(gè)要素來(lái)描述赏表,即響度、音調(diào)和音色底哗。
響度:人耳對(duì)聲音強(qiáng)弱的主觀感覺(jué)稱為響度跋选。響度和聲波振動(dòng)的幅度有關(guān)涕癣。一般說(shuō)來(lái)前标,聲波振動(dòng)幅度越大則響度也越大。當(dāng)我們用較大的力量敲鼓時(shí)只搁,鼓膜振動(dòng)的幅度大俭尖,發(fā)出的聲音響洞翩;輕輕敲鼓時(shí)焰望,鼓膜振動(dòng)的幅度小,發(fā)出的聲音弱来屠。音叉振動(dòng)時(shí)發(fā)出的聲波為單音震鹉,即只有一個(gè)頻率成分。若設(shè)法將音叉的振動(dòng)規(guī)律記錄下來(lái)传趾,可發(fā)現(xiàn)其振動(dòng)波形為一正弦波。當(dāng)用不同力量敲擊某個(gè)音叉時(shí)星虹,音叉發(fā)出的聲波幅度不同镊讼,這意味著聲音的響度不同蝶棋。給出了兩個(gè)聲音波形忽妒,其幅度一大一小,幅度大的波形其聲音響度大吃溅,幅度小的波形其聲音響度小鸯檬。另外喧务,人們對(duì)響度的感覺(jué)還和聲波的頻率有關(guān),同樣強(qiáng)度的聲波庐冯,如果其頻率不同坎穿,人耳感覺(jué)到的響度也不同返劲。
音調(diào):人耳對(duì)聲音高低的感覺(jué)稱為音調(diào)篮绿。音調(diào)主要與聲波的頻率有關(guān)衡载。聲波的頻率高,則音調(diào)也高弃榨。當(dāng)我們分別敲擊一個(gè)小鼓和一個(gè)大鼓時(shí)梨睁,會(huì)感覺(jué)它們所發(fā)出的聲音不同坡贺。小鼓被敲擊后振動(dòng)頻率快,發(fā)出的聲音比較清脆遍坟,即音調(diào)較高愿伴;而大鼓被敲擊后振動(dòng)頻率較慢,發(fā)出的聲音比較低沉鹅经,即音調(diào)較低怎诫。如果分別敲擊一個(gè)小音叉和一個(gè)大音叉時(shí),同樣會(huì)感覺(jué)到小音叉所發(fā)聲音的音調(diào)較高蹦误,大音叉所發(fā)聲音音調(diào)較低胖缤。如果設(shè)法把大阀圾、小音叉所發(fā)出的聲波記錄下來(lái),可發(fā)現(xiàn)小音叉在單位時(shí)間內(nèi)振動(dòng)的次數(shù)多涡真,即頻率高,大音叉在單位時(shí)間內(nèi)振動(dòng)的次數(shù)少缸剪,即頻率低东亦。給出了兩個(gè)頻率不同的聲音波形典阵,從聲音可聽(tīng)出,頻率高的聲音波形聽(tīng)起來(lái)音調(diào)較高嫉鲸,而頻率低的聲音波形聽(tīng)起來(lái)則音調(diào)較低歹啼。
音色:音色是人們區(qū)別具有同樣響度、同樣音調(diào)的兩個(gè)聲音之所以不同的特性藤树,或者說(shuō)是人耳對(duì)各種頻率拓萌、各種強(qiáng)度的聲波的綜合反應(yīng)司志。音色與聲波的振動(dòng)波形有關(guān)降宅,或者說(shuō)與聲音的頻譜結(jié)構(gòu)有關(guān)。前面說(shuō)過(guò)激才,音叉可產(chǎn)生一個(gè)單一頻率的聲波额嘿,其波形為正弦波册养。但實(shí)際上人們?cè)谧匀唤缰新?tīng)到的絕大部分聲音都具有非常復(fù)雜的波形,這些波形由基波和多種諧波構(gòu)成靠闭。諧波的多少和強(qiáng)弱構(gòu)成了不同的音色。各種發(fā)聲物體在發(fā)出同一音調(diào)聲音時(shí)拦键,其基波成分相同檩淋。但由于諧波的多少不同蟀悦,并且各次諧波的幅度各異,因而產(chǎn)生了不同的音色莲镣。例如當(dāng)我們聽(tīng)胡琴和揚(yáng)琴等樂(lè)器同奏一個(gè)曲子時(shí)涎拉,雖然它們的音調(diào)相同鼓拧,但我們卻能把不同樂(lè)器的聲音區(qū)別開(kāi)來(lái)。這是因?yàn)榕ヌ牵鞣N樂(lè)器的發(fā)音材料和結(jié)構(gòu)不同酌住,它們發(fā)出同一個(gè)音調(diào)的聲音時(shí),雖然基波相同消痛,但諧波構(gòu)成不同都哭,因此產(chǎn)生的波形不同欺矫,從而造成音色不同。給出了小提琴和鋼琴的波形和聲音脸爱,這兩個(gè)聲音的響度和音調(diào)都是相同的未妹,但聽(tīng)起來(lái)卻不一樣,這就是因?yàn)檫@兩個(gè)聲音的音色不同(波形不同)捏鱼。
2.2采樣率和采樣大小
聲音其實(shí)是一種能量波导梆,因此也有頻率和振幅的特征,頻率對(duì)應(yīng)于時(shí)間軸線递鹉,振幅對(duì)應(yīng)于電平軸線藏斩。波是無(wú)限光滑的狰域,弦線可以看成由無(wú)數(shù)點(diǎn)組成,由于存儲(chǔ)空間是相對(duì)有限的屈溉,數(shù)字編碼過(guò)程中抬探,必須對(duì)弦線的點(diǎn)進(jìn)行采樣小压。采樣的過(guò)程就是抽取某點(diǎn)的頻率值,很顯然仪搔,在一秒中內(nèi)抽取的點(diǎn)越多溉痢,獲取得頻率信息更豐富孩饼,**為了復(fù)原波形竹挡,一次振動(dòng)中,必須有2個(gè)點(diǎn)的采樣**梯码,人耳能夠感覺(jué)到的最高頻率為20kHz轩娶,因此要滿足人耳的聽(tīng)覺(jué)要求,則需要至少每秒進(jìn)行40k次采樣闯捎,用40kHz表達(dá)许溅,這個(gè)40kHz就是采樣率贤重。我們常見(jiàn)的CD,采樣率為44.1kHz祭犯。光有頻率信息是不夠的借卧,我們還必須獲得該頻率的能量值并量化铐刘,用于表示信號(hào)強(qiáng)度。量化電平數(shù)為2的整數(shù)次冪檩禾,我們常見(jiàn)的CD位16bit的采樣大小疤祭,即2的16次方勺馆。采樣大小相對(duì)采樣率更難理解,因?yàn)橐@得抽象點(diǎn)灌灾,舉個(gè)簡(jiǎn)單例子:假設(shè)對(duì)一個(gè)波進(jìn)行8次采樣悲柱,采樣點(diǎn)分別對(duì)應(yīng)的能量值分別為A1-A8,但我們只使用2bit的采樣大小段标,結(jié)果我們只能保留A1-A8中4個(gè)點(diǎn)的值而舍棄另外4個(gè)炉奴。如果我們進(jìn)行3bit的采樣大小盆佣,則剛好記錄下8個(gè)點(diǎn)的所有信息。采樣率和采樣大小的值越大虑灰,記錄的波形更接近原始信號(hào)痹兜。
2.3有損和無(wú)損
根據(jù)采樣率和采樣大小可以得知字旭,相對(duì)自然界的信號(hào),音頻編碼最多只能做到無(wú)限接近拍柒,至少目前的技術(shù)只能這樣了屈暗,相對(duì)自然界的信號(hào)养叛,任何數(shù)字音頻編碼方案都是有損的,因?yàn)闊o(wú)法完全還原爽室。在計(jì)算機(jī)應(yīng)用中阔墩,能夠達(dá)到最高保真水平的就是PCM編碼瓶珊,被廣泛用于素材保存及音樂(lè)欣賞,CD筐高、DVD以及我們常見(jiàn)的WAV文件中均有應(yīng)用柑土。因此绊汹,PCM約定俗成了無(wú)損編碼西乖,因?yàn)镻CM代表了數(shù)字音頻中最佳的保真水準(zhǔn),并不意味著PCM就能夠確保信號(hào)絕對(duì)保真薄腻,PCM也只能做到最大程度的無(wú)限接近届案。我們而習(xí)慣性的把MP3列入有損音頻編碼范疇楣颠,是相對(duì)PCM編碼的。強(qiáng)調(diào)編碼的相對(duì)性的有損和無(wú)損弄贿,是為了告訴大家差凹,要做到真正的無(wú)損是困難的豆拨,就像用數(shù)字去表達(dá)圓周率施禾,不管精度多高,也只是無(wú)限接近邮绿,而不是真正等于圓周率的值攀例。
2.4頻率與采樣率的關(guān)系
采樣率表示了每秒對(duì)原始信號(hào)采樣的次數(shù)粤铭,我們常見(jiàn)到的音頻文件采樣率多為44.1KHz,這意味著什么呢酱鸭?假設(shè)我們有2段正弦波信號(hào)凹髓,分別為20Hz和20KHz,長(zhǎng)度均為一秒鐘饵沧,以對(duì)應(yīng)我們能聽(tīng)到的最低頻和最高頻狼牺,分別對(duì)這兩段信號(hào)進(jìn)行40KHz的采樣礼患,我們可以得到一個(gè)什么樣的結(jié)果呢讶泰?結(jié)果是:20Hz的信號(hào)每次振動(dòng)被采樣了40K/20=2000次,而20K的信號(hào)每次振動(dòng)只有2次采樣码泞。顯然余寥,在相同的采樣率下悯森,記錄低頻的信息遠(yuǎn)比高頻的詳細(xì)瓢姻。這也是為什么有些音響發(fā)燒友指責(zé)CD有數(shù)碼聲不夠真實(shí)的原因,CD的44.1KHz采樣也無(wú)法保證高頻信號(hào)被較好記錄绎狭。要較好的記錄高頻信號(hào)儡嘶,看來(lái)需要更高的采樣率恍风,于是有些朋友在捕捉CD音軌的時(shí)候使用48KHz的采樣率,這是不可取的燕鸽!這其實(shí)對(duì)音質(zhì)沒(méi)有任何好處啼辣,對(duì)抓軌軟件來(lái)說(shuō)鸥拧,保持和CD提供的44.1KHz一樣的采樣率才是最佳音質(zhì)的保證之一削解,而不是去提高它氛驮。較高的采樣率只有相對(duì)模擬信號(hào)的時(shí)候才有用矫废,如果被采樣的信號(hào)是數(shù)字的,請(qǐng)不要去嘗試提高采樣率唉铜。
亨利·奈奎斯特(Harry Nyquist)采樣定理:當(dāng)對(duì)連續(xù)變化的信號(hào)波形進(jìn)行采樣時(shí),若采樣率fs高于該信號(hào)所含最高頻率的兩倍,那么可以由采樣值通過(guò)插補(bǔ)技術(shù)正確的回復(fù)原信號(hào)中的波形,否則將會(huì)引起頻譜混疊(Aliasing),產(chǎn)生混疊噪音(Aliasing Noise),而重疊的部分是不能恢復(fù)的.(同樣適用于模擬視頻信號(hào)的采樣)
根據(jù)人聲語(yǔ)音的特點(diǎn),人類的聽(tīng)力感知范圍是從20Hz到20kHz潭流。這個(gè)頻寬范圍被劃分成四個(gè)頻寬類別:窄帶柜去、寬帶嗓奢、超寬帶和全帶股耽。
窄帶(narrowband)普通電話所覆蓋的頻寬豺谈,從300Hz到3.4kHz,對(duì)應(yīng)采樣率6.8kHz厂榛。普通電話的采樣率是8kHz,對(duì)應(yīng)頻寬4kHz辈双,對(duì)于人聲語(yǔ)音是足夠的湃望。
寬帶(wideband)從50Hz到7kH的頻寬证芭,對(duì)應(yīng)采樣率14khz担映,可以很好地捕捉和還原人聲蝇完,然而對(duì)于音樂(lè)聲還是不夠的。這是在人聲語(yǔ)音通話場(chǎng)景下的所謂高清語(yǔ)音氢架。
超寬帶(super-wideband)從50Hz到14kHz朋魔,對(duì)應(yīng)采樣率28kHz达箍,基本可以覆蓋人聲和音樂(lè)聲,對(duì)于非專業(yè)音樂(lè)人的用戶來(lái)說(shuō)铺厨,不管是人聲通話還是音樂(lè)直播缎玫,這樣的頻寬都是足夠的。
全帶(fullband)從20Hz到20kHz解滓,對(duì)應(yīng)40kHz采樣率赃磨,全面覆蓋人類的聽(tīng)覺(jué)范圍,能夠滿足音樂(lè)發(fā)燒友或者專業(yè)音樂(lè)人的需求邻辉。超過(guò)40Hz都可以稱作全帶語(yǔ)音。CD的采樣率就是44.1kHz腮鞍。
因此值骇,窄帶(narrowband)的音質(zhì)是能滿足人聲錄制回放的。
從四個(gè)角度衡量音頻編碼:
成本:開(kāi)發(fā)成本,服務(wù)器流量成本
音質(zhì):
系統(tǒng)影響:對(duì)系統(tǒng)資源的暫用,軟編解碼器比硬編解碼器占用更多cpu
兼容性:對(duì)移動(dòng)端以及web端的兼容
適合產(chǎn)品場(chǎng)景的編碼器具備以下四個(gè)特點(diǎn)
碼率相對(duì)低移国,滿足成本可控的要求吱瘩,一般不要超過(guò)16kbps。一個(gè)sample用1bit就能編好迹缀,那么8kHz采樣率(narrowband)對(duì)應(yīng)8kbps的碼率使碾,16kHz采樣率(wideband)對(duì)應(yīng)16kbps的碼率蜜徽。碼率的本質(zhì)就是成本。
算法復(fù)雜度要比較低票摇,對(duì)系統(tǒng)CPU拘鞋、內(nèi)存和電量消耗少,對(duì)系統(tǒng)影響要盡量低矢门。
音質(zhì)可以適當(dāng)作出犧牲盆色,以保障上面三個(gè)因素,8kHz采樣率對(duì)人聲場(chǎng)景是夠用的祟剔,16kHz采樣率可以提供高清語(yǔ)音隔躲。
兼顧兼容性
3.主流音頻編碼器
下圖列舉一組主流的音頻編解碼器,展示了隨著碼率變化峡扩,音質(zhì)相應(yīng)變化的情況。這是基于編解碼器聽(tīng)音測(cè)試的結(jié)果繪畫出來(lái)的障本,對(duì)選取音頻編解碼器有參考意義教届。根據(jù)上面的分析并且參照下圖,發(fā)現(xiàn)碼率低于16kbps的低碼率人聲編解碼器(speech codecs)包含:Opus(SILK),Speex驾霜,AMR-NB案训,AMR-WB,和iLBC粪糙。
下圖是另外一組主流的音頻編解碼器强霎,展示了隨著碼率的變化,算法延遲時(shí)間相應(yīng)變化的情況蓉冈。根據(jù)上面的分析并且參照下圖城舞,發(fā)現(xiàn)算法延遲時(shí)間低于60毫秒,碼率低于16kbps的人聲編解碼器(speech codecs)包含:Opus(SILK)寞酿、Speex(NB,WB)家夺、G.729、和G.729.1伐弹。
從圖中我們可以獲得如下幾方面信息:
對(duì)于固定碼率的編碼標(biāo)準(zhǔn):如G.711或者G.722拉馋,圖中采用單點(diǎn)表示,說(shuō)明這兩個(gè)編碼標(biāo)準(zhǔn)是固定碼率編碼標(biāo)準(zhǔn)惨好。其他如Opus煌茴、Speex,它們的曲線是連續(xù)的日川,說(shuō)明這類編碼標(biāo)準(zhǔn)是可變碼率的編碼標(biāo)準(zhǔn)蔓腐。
從頻帶方面看:G.711、G.722龄句、AMR和iLBC等標(biāo)準(zhǔn)適用于narrowband(8khz采樣率)和wideband(16khz采樣率)范圍合住,針對(duì)普通的語(yǔ)音通話場(chǎng)景绰精。AAC和MP3適用于fullband(48khz采樣率)范圍,針對(duì)特殊的音樂(lè)場(chǎng)景透葛。而Opus適用于整個(gè)頻帶笨使,可以進(jìn)行最大范圍的動(dòng)態(tài)調(diào)節(jié),適用范圍最廣僚害。
從標(biāo)準(zhǔn)的收費(fèi)情況看:適用于互聯(lián)網(wǎng)傳輸?shù)膇LBC硫椰、Speex和Opus都是免費(fèi)且開(kāi)源的;適用于音樂(lè)場(chǎng)景的MP3和AAC萨蚕,需要license授權(quán)靶草,而且不開(kāi)源。
綜合上面的兩個(gè)圖岳遥,我們可以大致總結(jié)奕翔,比較適合人聲短語(yǔ)音的音頻編解碼器包含Opus(SILK)、Speex(NB,WB)浩蓉、AMR-NB派继、AMR-WB、iLBC捻艳、G.729驾窟、和G.729.1。
碼率采樣率算法延遲
OPUS(SILK)6-12,7-25认轨,
8-30,12-40kbps
8绅络,12,
16嘁字,24kHz
25ms
Speex2.15–24.6 kbps (NB)
4–44.2 kbps (WB)
8, 16,
32, 48kHz
30 ms(NB)
34 ms (WB)
AMR-NB4.75, 5.15, 5.90,
6.70, 7.40, 7.95,
10.20, 12.20 kbps
8kHz25ms (20ms per frame
plus 5ms look-ahead,
20ms for 12.2 kbps)
AMR-WB6.60, 8.85, 12.65,14.25, 15.85, 18.25, 19.85, 23.05, 23.85 kbps16kHz25ms (20ms per frame
plus 5ms look-ahead)
iLBC13.33 kbps
15.20 kbps
8kHz25 ms
40 ms
G.7298kbps8kHz15 ms
G.729.18 kbps,
12–32 kbps
8kHz
16kHz
48.94ms
Codec20.7, 1.2, 1.3, 1.4,
1.6, 2.4, 3.2 kbps
8kHz20–40 ms
(額外增加的恩急,超低碼率)
短語(yǔ)音不同于實(shí)時(shí)語(yǔ)音,可以忽略延遲
上面都是為人聲場(chǎng)景設(shè)計(jì)的低碼率音頻編解碼器,具有碼率低(16kbps以下)纪蜒,算法延遲低(大部分在40ms以下)假栓,和采樣率在8kHz和16kHz之間的特點(diǎn),都可供短語(yǔ)音編碼方案選擇霍掺。其中匾荆,有幾個(gè)語(yǔ)音編解碼器值得在這里稍作介紹:
Opus(SILK)
https://en.wikipedia.org/wiki/Opus_(audio_format)
完全開(kāi)源而且免費(fèi),包含了SILK杆烁、CELT牙丽、以及兩者的混合模式,是目前最為兼容并包的音頻編解碼器兔魂。在處理窄帶和寬帶人聲語(yǔ)音(speech)的時(shí)候烤芦,采用SILK; 在處理超寬帶和全帶音樂(lè)聲音(music)的時(shí)候,采用CELT析校。在人聲和音樂(lè)聲混合的場(chǎng)景中构罗,甚至可以智能切換兩個(gè)編解碼器铜涉。WebRTC就采用了Opus作為語(yǔ)音編解碼器。而SILK是Skype網(wǎng)絡(luò)電話所用的語(yǔ)音編解碼器遂唧。Opus真可謂是久經(jīng)考驗(yàn)的名門精品芙代。根據(jù)即構(gòu)科技的測(cè)試結(jié)果,Opus雖然在音樂(lè)場(chǎng)景中表現(xiàn)并非首選盖彭,但是在人聲場(chǎng)景中表現(xiàn)十分出色纹烹。
iLBC
完全開(kāi)源而且免費(fèi)的,由GIPS開(kāi)發(fā)并被IETF標(biāo)準(zhǔn)化召边,曾經(jīng)被QQ和Skype使用過(guò)铺呵,現(xiàn)在被WebRTC使用,是被世界頂級(jí)產(chǎn)品證明過(guò)的窄帶實(shí)時(shí)語(yǔ)音編解碼器隧熙。iLBC能夠通過(guò)平滑降低語(yǔ)音質(zhì)量的方式來(lái)處理IP網(wǎng)絡(luò)丟包片挂。由于iLBC的語(yǔ)音幀塊之間是相互獨(dú)立的,在丟幀出現(xiàn)的時(shí)候也不會(huì)導(dǎo)致錯(cuò)誤蔓延贞盯,因此具有較強(qiáng)的抗丟包能力音念。在窄帶應(yīng)用環(huán)境中,iLBC具有延遲低邻悬,無(wú)斷續(xù)或雜音的特點(diǎn)症昏,通話效果可以和移動(dòng)電話媲美随闽。
Speex
免費(fèi)的人聲音頻編解碼器父丰。因?yàn)镾peex是為VoIP專門設(shè)計(jì)的,所以Speex對(duì)IP網(wǎng)絡(luò)有很強(qiáng)的抗丟包能力掘宪。為了達(dá)到這個(gè)目的蛾扇,Speex采用了CELP算法。市場(chǎng)上狼人殺產(chǎn)品的游戲?qū)崟r(shí)語(yǔ)音技術(shù)魏滚,廠商自研的方案采用了Speex镀首。
Codec2
開(kāi)源并且專利免費(fèi),碼率超低的人聲語(yǔ)音編解碼器鼠次。碼率在0.7 kbps至3.2 kbps更哄。Codec2填補(bǔ)了開(kāi)源編碼器在5 kbps碼率以下的空白。
評(píng)估音頻編碼指標(biāo),除碼率腥寇、采樣率成翩、和算法延遲以外,還要參考MOS赦役、VBR/CBR麻敌、和基礎(chǔ)算法等。其中掂摔,MOS (Mean Opinion Score)是語(yǔ)音編解碼器的主觀評(píng)估指標(biāo)术羔。MOS是一個(gè)廣為接受的有統(tǒng)計(jì)意義的主觀聽(tīng)音指標(biāo)赢赊。上面音視頻編解碼器的列表沒(méi)有把它包含進(jìn)去,是因?yàn)橥粋€(gè)編解碼器级历,在不同碼率下释移,表現(xiàn)出來(lái)的MOS值是會(huì)變化的。對(duì)一個(gè)音頻編解碼器給出一個(gè)固定的MOS值鱼喉,反而會(huì)起誤導(dǎo)的作用秀鞭。另外,雖然MOS值已經(jīng)是主觀的聽(tīng)覺(jué)測(cè)試評(píng)估結(jié)果扛禽,但是音頻工程師在選用音頻編解碼器的時(shí)候锋边,還要以自己親身的聽(tīng)感作為最終的依據(jù)。
下圖是Nokia在2011年的時(shí)候?qū)pus编曼、AMR豆巨、和G.722.1C等音頻編解碼器在無(wú)噪音和有噪音的環(huán)境里做的MOS語(yǔ)音測(cè)試的結(jié)果。我們可以從語(yǔ)音測(cè)試的結(jié)果看出:
1)MOS值會(huì)隨著碼率變化掐场。固定的MOS值并沒(méi)有絕對(duì)的參考意義往扔。
2)在低碼率情況下,AMR-NB和AMR-WB都表現(xiàn)相對(duì)出色熊户。
參考:
1.Getting Started with Audio & Video:https://developer.apple.com/library/content/referencelibrary/GettingStarted/GS_MusicAudio/_index.html
2.Opus ios:https://github.com/chrisballinger/Opus-iOS
3.android opus:https://gitlab.com/axet/android-opus
4.opus_android:https://github.com/louisyonge/opus_android
5.opuscodec:https://github.com/martoreto/opuscodec
6.與大家討論如何用opencore amr在iOS上decode:https://blog.csdn.net/devday/article/details/6804553