使用場景:
在現實生活中,音頻(audio)主要用在兩大場景中:語音(voice)和音樂(music)。語音主要用於溝通通信,如打電話,現在由於語音識別的發展,人機語音交互也是語音的一個應用,目前正在風口上,好多大廠都推出了智能音箱。音樂主要用於欣賞,如音樂播放。
基礎知識:
1、采樣和采樣率:
- 現在是數字時代,在音頻處理時要先把音頻的模擬信號變成數字信號,這叫A/D轉換。要把音頻的模擬信號變成數字信號,就需要采樣。一秒鍾內采樣的次數稱為采樣頻率。采樣頻率越高,越接近原始信號,但是也加大了運算處理的復雜度。采樣頻率可分為8kHZ 、16kHZ、 32kHZ、 44.1kHZ、 48kHZ等。44.1KHZ能支持所有的手機型號,對音頻質量要求沒那么高的話,可以使用低一點的采樣率,比如語音識別一般采用的16KHZ。
2.、編碼制式和采樣大小:
- 采集來的數據當然使用PCM編碼(脈沖代碼調制編碼,即PCM編碼。PCM通過抽樣、量化、編碼三個步驟將連續變化的模擬信號轉換為數字編碼) 。Android支持的采樣大小16bit 或者8bit,表示一個采樣用多少bit存放,現在主流的采樣大小都是16bit,在低質量的語音傳輸的時候8bit 足夠了。
3、聲道(channel):
- Android支持雙聲道立體聲和單聲道。MONO單聲道,STEREO立體聲。
4、編解碼 :
-
通常把音頻采樣過程也叫做脈沖編碼調制編碼,即PCM(Pulse Code Modulation)編碼,采樣值也叫PCM值。
- 編碼過程:模擬信號->抽樣->量化->編碼->數字信號
5、壓縮:
-
如果把采樣值直接保存或者發送,會占用很大的存儲空間。以16kHz采樣率16位采樣位數單聲道為例,一秒鍾就有16/8*16000 = 32000字節。為了節省保存空間或者發送流量,會對PCM值壓縮。
目前主要有三大技術標准組織制定壓縮標准:
ITU:主要制定有線語音的壓縮標准(g系列),有g711/g722/g726/g729等。
3GPP:主要制定無線語音的壓縮標准(amr系列等),有amr-nb/amr-wb。后來ITU吸納了amr-wb,形成了g722.2。
MPEG:主要制定音樂的壓縮標准,有11172-3,13818-3/7,14496-3等。
6、碼率:
- 碼率 = 采樣頻率 * 采樣位數 * 聲道個數; 例:采樣頻率44.1KHz,位數16bit,立體聲(雙聲道),未壓縮時的碼率 = 44.1KHz * 16bit * 2 = 176.4Kbps,即每秒要錄制的資源大小,理論上碼率和質量成正比.
常用音頻格式:
- WAV 格式:音質高 無損格式 體積較大;
- AAC(Advanced Audio Coding) 格式:相對於 mp3,AAC 格式的音質更佳,文件更小,有損壓縮,一般蘋果或者Android SDK4.1.2(API 16)及以上版本支持播放,性價比高;
- AMR 格式:壓縮比比較大,但相對其他的壓縮格式質量比較差,多用於人聲,通話錄音;
- mp3 格式:特點 使用廣泛, 有損壓縮。
- Android支持的音頻格式:
Format / Codec | Encoder | Decoder | Details | Supported 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 @ 8kHz | 3GPP (.3gp) |
AMR-WB | • | • | 9 rates from 6.60 kbit/s to 23.85 kbit/s sampled @ 16kHz | 3GPP (.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 |
GSM | • | Android supports GSM decoding on telephony devices | GSM(.gsm) | |
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+) |
音頻開發的主要應用:
- 音頻播放器
- 錄音機
- 語音電話
- 音視頻監控應用
- 音視頻直播應用
- 音頻編輯/處理軟件(ktv音效、變聲, 鈴聲轉換)
- 藍牙耳機/音箱
音頻開發的具體內容:
- 音頻采集/播放;
- 音頻算法處理(去噪、VAD檢測、回聲消除、音效處理、功放/增強、混音/分離,等等);
- 音頻的編解碼和格式轉換;
- 音頻傳輸協議的開發(SIP,A2DP、AVRCP,等等)。