音頻質量評估-1


原理

音頻的原理

把模擬信號轉變成 數字信號,前者是連續的,后者離散的。因此有DAC和ADC。
需要關注的三個指標,這三個指標決定音頻的質量

  1. 比特率:表示經過編碼(壓縮)后的音頻數據每秒鍾需要用多少個比特來表示,單位常為kbps。 這個數字越大音頻質量越好,但是數據文件就越大。

  2. 響度和強度:聲音的主觀屬性響度表示的是一個聲音聽來有多響的程度。響度主要隨聲音的強度而變化,但也受頻率的影響。總的說,中頻純音聽來比低頻和高頻純音響一些。這個就是振幅。計算方式20lg(amp1/基准振幅),基准振幅就是在聲音最大的時候采用的振幅。

  3. 采樣和采樣率:采樣是把連續的時間信號,變成離散的數字信號。采樣率是指每秒鍾采集多少個樣本。采樣率越高其質量越好,一般在底層是48k采樣率,寬帶電話是16k,窄帶是8k。

Nyquist采樣定律:采樣率大於或等於連續信號最高頻率分量的2倍時,采樣信號可以用來完美重構原始連續信號。

這句話的意思大概就是, 比如采樣率是16Khz, 那么頻率只能達到8kHz;如果是48kHz的采樣率,那么頻率可以達到24kHz.

開源軟件 audacity 的插件就是ny結尾的,里面用lisp語言寫的,用於計算一些rms、THD等

  • 編碼方式
    主流的有2中,PCM和DPCM,
  1. 脈沖編碼調制 (Pulse Code Modulation)是一種對模擬信號數字化的取樣技術,將模擬語音信號變換為數字信號的編碼方式,把時間上連續的信號變成時間上離散的信號。把連續的編碼成離散的,這里有損失,但是人耳聽不出來。
  2. 差分脈沖編碼調制(Differential Pulse code modulation,DPCM),是一種對模擬信號的編碼模式,與PCM不同每個抽樣值不是獨立的編碼,而是先根據前一個抽樣值計算出一個預測值,再取當前抽樣值和預測值之差作編碼用.此差值稱為預測誤差.抽樣值和預測值非常接近(因為相關性強),預測誤差的可能取值范圍比抽樣值變化范圍小.所以可用少幾位編碼比特來對預測誤差編碼,從而降低其比特率.這是利用減小冗余度的辦法,降低了編碼比特率。這個數據是網上找的,總的一句話就是與相等的PCM比較,這種編碼只需要25%的比特數,比特率小,文件就小。

視頻編碼

  1. 視頻通過其中每一幀的圖像表達信息;視頻包含的音頻可提供大量信息;視頻通過圖像的運動、場景的變換提供信息;
  2. 視頻信號有2種
  • RGB顏色空間

  • YUV顏色空間 (Y=明亮度, UV=就是色度,包含了色調和飽和度)
    沒有UV信息一樣可以顯示完整的圖像,只不過是黑白的,這樣的設計很好地解決了彩色電視機與黑白電視的兼容問題。並且,YUV不像RGB那樣要求三個獨立的視頻信號同時傳輸,所以用YUV方式傳送占用極少的頻寬

因此 YUV編碼更常用。

RGB和YUV之間可以轉換。

視頻編碼的最主要目的是數據壓縮,在傳輸過程中花費太多的帶寬。
數據有冗余的,所以可以壓縮

  • 時間冗余:視頻相鄰的兩幀之間內容相似,存在運動關系
  • 空間冗余:視頻的某一幀內部的相鄰像素存在相似性
  • 編碼冗余:視頻中不同數據出現的概率不同
  • 視覺冗余:觀眾的視覺系統對視頻中不同的部分敏感度不同

音視頻

gb2QgK

封裝格式(也叫容器),就是將已經編碼壓縮好的視頻軌音頻軌按照一定的格式放到一個文件中,也就是說僅僅是一個外殼,或者大家把它當成一個放視頻軌和音頻軌的文件夾也可以。說得通俗點,視頻軌相當於飯,而音頻軌相當於菜,封裝格式就是一個碗,或者一個鍋,用來盛放飯菜的容器。 下面是幾種常用的 視頻文件后綴類型 與其相對應的 封裝格式。

視頻編碼格式, 比較常見 H264。音頻編碼常見的 aac,和 mp3。 AAC壓縮比高,音質更好。

關於H264壓縮技術

  • 划分宏塊
  • 划分子塊 就是一個宏塊里面再分成小塊
  • 幀分組 就是內容差不多的放在組里面,組成一個組稱為GOP, 參考幀為IDR/I幀, 其他的為P/B幀。
  • 運動估計與補償 計算視頻中物體的運動矢量,然后保存矢量和補償
  • 幀內預測
    先預測,就是分成宏塊后然后幾個模式預測,完了找到最接近的預測模式,得到預測圖片A, A與原圖對比相減,得到 殘差值。 然后把殘差和預測模式保存起來就可以恢復了。
  • 優化:對殘差數據做DCT 進一步壓縮
  • 再優化:CABAC無損壓縮

Audio

最基礎

  • 振幅, 保證輸入的輸出的在接受范圍內
  • 頻率 同上
  • dropout 輸出不能有不連續的信號
  • distortion 畸變,比如采樣率發生變化 聲音異常
  • clipping 出現嘯叫,頂峰沒有數據

驗證數據用的是

  • 正玄波 sine-0db-1khz 這個主要是驗證THD 和dropout
  • step gain sine -60db~0db 可以驗證clipping
  • sweep 掃頻 0khz~16Khz, 驗證對每一個頻率的處理
  • speech, 驗證distortion

影響聲音質量的因素

  • 壓縮, 模擬型號轉為數字pcm信號的時候就有丟失。提高采樣率比如48k
  • 延遲, 什么導致延遲,比如編碼、打包、網絡傳輸、jitter buffer
  • jitter 抖動, udp傳輸 數據丟失,可以用jitter buffer來一職
  • 丟包 udp傳輸,丟包是必然的 ,使用少量的丟包
  • 回聲 聲學原因:布局、混響、延時大小、單雙講, 電學:信號干擾
  • 其他噪音

評估標准

  • MOS 原始的就是一個主觀的批判,

根據提供給算法的信息,語音質量測試算法可分為兩大類

  1. 完全引用"(FR)
    算法可以訪問並使用原始參考信號進行比較(即差異分析)。它可以比較參考信號的每個樣本(說話端)與降級信號的每個對應樣本(偵聽器側)。FR 測量可提供最高的精度和可重復性,但只能應用於實時網絡中的專用測試(例如移動網絡基准的驅動測試工具)

  2. "無參考"(NR)
    算法僅使用降級信號進行質量評估,並且沒有原始參考信號的信息。NR 算法只是低准確性估計值,因為源引用的原發語音特征(例如男性或女性說話者、背景噪音、非語音)完全未知。NR 算法的常見變體甚至不分析解碼的音頻信號,而是對 IP 數據包級別上的數字位流進行分析。因此,測量僅限於傳輸流分析。

POLQA是最新的,其他都是小弟。
CzlEBt

Perceptual Evaluation of Speech Quality
PESQ結合了PSQM和 PAMS的優勢,針對VoIP和混合的端到端應用作了改進,並針對MOS和MOS-LQ計算方法做了修改。
也是全參考測試算法

## first, install soundfile and pypesq
import soundfile as sf
from pypesq import pesq

ref, sr = sf.read("sine.wav")
deg, sr = sf.read("sine1.wav")
score = pesq(ref, deg, sr)

print(111,score)

得到的score分數就是MOS的值

輸出結果

4.5

計算方法

https://pypi.org/project/pesq/

  • POLQA PESQ的升級版 percptual objective listening quality analysis
# here is the implementation
https://chromium.googlesource.com/external/webrtc/+/3c1e558449309be965815e1bf/webrtc/audio/test/low_bandwidth_audio_test.py

並擴展到處理更高帶寬的音頻信號。進一步的改進針對時間調用信號的處理,具有許多延遲變化。
全參考算法,在對參考和測試信號的相應摘錄進行時間對齊后,對語音信號進行采樣分析 ,對於端到端的質量評估。

前面提到的都是全參考的, 無參考, 馬上就來.看下面這個就是實際的應用.

FAD 一種新穎的,無參考的音樂增強算法評估指標


python -m frechet_audio_distance.compute_fad --background_stats stats/background_stats --test_stats stats/test1_stats
python -m frechet_audio_distance.compute_fad --background_stats stats/background_stats --test_stats stats/test2_stats

Video

  • PEVA
    測量算法可用於分析由數字視頻編碼/解碼(或轉碼)過程、基於無線電或 IP 的傳輸網絡和最終用戶設備引起的可見偽影。

PEVQ還通過各種KPI(包括PSNR、失真指示器和唇部同步延遲)來量化視頻信號中的異常。

psnr是“Peak Signal to Noise Ratio”的縮寫,即峰值信噪比,是一種評價圖像的客觀標准,它具有局限性,一般是用於最大值信號和背景噪音之間的一個工程項目。

PSNR是最普遍,最廣泛使用的評鑒畫質的客觀量測法,不過許多實驗結果都顯示,PSNR的分數無法和人眼看到的視覺品質完全一致,有可能PSNR較高者看起來反而比PSNR較低者差。這是因為人眼的視覺對於誤差的敏感度並不是絕對的,其感知結果會受到許多因素的影響而產生變化

SSIM(structural similarity index),結構相似性,是一種衡量兩幅圖像相似度的指標。該指標首先由德州大學奧斯丁分校的圖像和視頻工程實驗室(Laboratory for Image and Video Engineering)提出。SSIM使用的兩張圖像中,一張為未經壓縮的無失真圖像,另一張為失真后的圖像。


應用

webrtc
WebRTC是一個免費的開放軟件項目,可通過簡單的API為瀏覽器和移動應用程序提供實時通信(RTC)功能。 WebRTC組件已經過優化,可以最好地滿足此目的。

testrtc
這里包含audio和video的測試和評估方法.

mic 主要是針對audio

  1. 能否2s靜音
  2. 計算RMS值
  3. clip測試
  4. 單雙講測試

camara 分2部分, 一個WxH分辨率(width x height) 和支持的分辨率

  • 第一部分
  1. 檢查攝像機能否以請求的分辨率捕獲 5 秒鍾
  2. 檢查幀是凍結還是靜音/黑色
  3. 檢測開始編碼幀的時間
  4. 報告編碼時間和平均幀速率
  • 第二部分
  1. 列出似乎受支持的分辨率

網絡

  1. Udp/Tcp 驗證它可以使用給定協議與轉服務器進行通信
  2. IPv6 連接 驗證它至少可以收集一個 IPv6 候選者

連接性 (主要TURN server 連接的驗證)

  1. relay 可以通過 TURN 服務器在對等體之間建立連接
  2. Reflexive 通過 NAT 驗證對等體之間的連接
  3. Host 驗證可以在具有相同 IP 地址的對等體之間建立連接

吞吐量

  1. 數據吞吐量 建立環回調用並測試鏈路上的數據通道吞吐量

  2. 視頻帶寬

  • 建立環回呼叫並測試鏈路上的視頻性能

  • 在媒體通道上測量 rtt(round-trip time).

  • 測量帶寬估計性能(增加時間、最大值、平均值

py_quality_assessment

read more


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM