--- title: Lab Meeting Minutes 2024/04/24 tags: lab_meeting --- > Outline > [TOC] --- # PERAL Lab Meeting - 時間:113 年 4 月 24 日 17:00 - 地點:線上 - 線上會議連結 : [Online](https://meet.google.com/zfi-zmnc-qfw) - 出席者:吳坤熹老師、謝萬霖、劉怡君、田蕙瑜、沈家正、梁宇騰、劉冠伶、繆亭霄、蘇翊荃、陳嘉璐、陳品妤、陳姿綾(請假)、陳姿澖 - 會議主題:[A survey of packet loss recovery techniques for streaming audio](https://docs.google.com/presentation/d/1sCs1BB1A-1tJ16amGtAAPZGvLXu_PP1yYlueif6vPC8/edit?usp=sharing) - 主講者: 劉怡君 - 主記: 沈家正 ## 會議內容 ### IP Multicasting - hosts 可以加入 group,這個 group 有個 group address IP - 發送端只要往這個 IP 送,router 會幫忙轉送到所有在這個 group 裡的人 ### Streaming Audio - Mbone = Multicast Bone ### Packet Loss - 約 2 - 5% 的 loss - allow trade-off between two roles - passive observers (high latency, low loss) - active partcipants (low latency, higher loss) ### Types of Recovery Techniques - Sender-based 發送端角度 (今天 focus) - Active - retransimission 重送 - Passive - Interleaving 交錯 - Forward Error Correction - Media-independent - Media-specific - 接收端角度 #### Sender-based: Interleaving 交錯 - 讓有一大段資料不見時,傷害降到最少 - 無交錯:一整句話不見 - 交錯:把每句話的第一個字抽出來成一段,若這段不見只有每句話第一個字不見 - Solomon: 概念應該是 OK 的。不過整個字遺失就聽不懂了。例子若改成「一個字持續 0.3秒,遺失了中間 0.1 秒,還是可以聽得懂。」似乎比較合理。 #### Sender-based: Forward Error Correction (FEC) - 冗餘資料,出錯時有機會用這段多的資料來修復回去 - 2 types: - Systematic - 能從中看得出來原始資料 - Non-systematic - 無法直接從中窺見原始資料 - Media-independent - 編碼對象是多個封包 - 生成多的封包來幫助丟封包時修復 - (n, k) FEC Code 意思是:每 n 個封包會產生 n-k 個多餘的封包來用於修正 - Parity Coding - 做 XOR - 簡報上以 bit stream 舉例 - 好處 - 不依賴本身的內容 - 缺點 - 額外 delay - 需要多傳東西 - Media-specific - 一段音訊會同時放在一個以上個封包裡面傳出去 - 要是這個封包不見,還能從另一個封包中找到這段音訊 - Primary Encoding & Secondary Encoding - 會用不同方法來 Encode. - 如果沒有封包遺失,就只從 primary 拿出來 - 通常 secondary 的壓縮程度會比 primary 還高一些 (lower-bandwidth/quality). 例如 primary 用 G.711 (64kbps), secondary 用 G.729, 壓成 8kbps. 把第一個封包的 secondary 和第二個封包的 primary 併在一起送出。 - 好處 - delay 較低: 備份的那個通常離比較近,通常是藏在下一個而已 - 缺點 - 可能 只能涵蓋短時間的遺失 --- ### 建議&問題 1. [name=Louise] 如果 FEC 的那個封包也遺失了,那還有機會還原嗎 Ans: [name=Phoebe] 可以選擇容錯率更高的 code,挑能遺失不只一個的 [name=Solomon] 像 Phoebe 做的允許遺失超過 20 個封包 2. [name=Yukino] P.7 連續 4 個封包遺失怎麼辦 [name=Phoebe] 所以我 P.14 說缺點是涵蓋範圍比較小 3. [name=Yukino] 可以不要把備份的東西放在下一個,而是 random 放嗎 [name=Solomon] 這樣他不知道要等多久才能拿到備份的,可能 overhead 有點大,且語音應用要求 low latency。Good question on "Why not"! [name=Phoebe] 若延遲比較久,也可以放在下兩個 4. [name=Ellie] P.12 Media-Specific FEC 壓縮後再回復聽起來一樣嗎? [name=Phoebe] 看 secondary 的 encode 方式,若不是太不同就不會聽起來差不多。你如果不在乎花太多頻寬的話備份的那份可以用壓縮率低的方法,空間換取時間 [name=Solomon] 澄清:不會聽起來時間比較短,只是音質略差例如雙聲道變單聲道,無線的會比較喜歡用 secondary 會壓的比較小的方法,來避免浪費頻寬 5. [name=Ellie] 現在我們常用的是哪種 [name=Phoebe] 就我所知 G.723 就是 primary 和 secondary 用同一種 [name=Solomon] 大家平常在線上串流音訊視訊有沒有觀察到,音質下降 vs 直接不見。就我使用經驗是降低品質的手段較常見,為 media-specific。也可根據傳送的資料種類做取捨: 視訊 media-specific,字幕/檔案或許用直接消失的方法也行 6. [name=Ryan] P.7 Interleaving 這種會不會延遲比較高一點,因為要等有冗餘這個傳到才能做解碼給人聽到,可能 4 個封包以後 80ms 才能聽到。好像現在 Google Meet 感覺延遲沒那麼高,是怎麼做到的 [name=Phoebe] 我也不知有沒有人真的用這方法 [name=Solomon] 我覺得 LINE 的 buffer 其實比 Google Meet 大蠻多,Microsoft Teams的delay也比Google Meet長。看有沒有人幫忙設計個方法測一下各大平台的 delay 長短。Google Meet的 delay短很合理,可能是 TURN server / relay 放在台灣離我們較近. ITU-T G.114 說 one-way latency 500ms 是使用者能察覺的門檻,開發者可用這數字來計算決定 buffer 要給多少才不會爆,還要考慮壓縮解壓縮、transmission 當年 Mbone video streaming 直播的 delay 其實可以相當久,15s - 20s,根據經驗 buffer 設低於 10 秒就很容易來不及收到造成停格。可以測看看現代 YouTube 是多久 [name=Phoebe] 7. [name=Ashley] P.13 的意思是把前一個封包 encode 後放到後一個嗎 [name=Phoebe] 編碼的對象不一定是封包,是把一段原始音訊用另一種編碼方式再多放 8. [name=Ashley] secondary 的方法具體是選用哪個 codec? [name=Phoebe] 這 paper 是給個分類與概念的介紹,並沒有實際提供建議的 codec [name=Solomon] 像 iLBC 就可以壓很小。 9. [name=August] 實際上可以 repair 的百分比? [name=Phoebe]我不是做 media. FEC 更 sensitive on 連續的遺失 10. [name=August] FEC 會用哪種 metric 來比較 [name=Phoebe] capacity, fault tolerancy, delay [name=Solomon] Ryan 的研究可以多納入來量測說不同 error correction 的效能差異。因此要做:1.容易掛上不同種 correction code 的界面,像是設計 callback function。2.統計的指標,例如 VLC Media Player 可以看得到統計說成功解碼或失敗的 counter 11. [name=Cooper] 有沒有說大家通常犧牲幾 % 的頻寬來做 error correction [name=Phoebe] 這部分還沒有看到有一個實際的數據是大家傾向用的 12. [name=Miller] P.12 連續兩個都遺失 [name=Phoebe] 例如這張圖 3, 4 個封包都遺失的話,第 3 段資料就修不回來了 13. [name=Angela] 你目前的研究有沒有參考這裡提到的方法 [name=Phoebe] media-independent FEC 因為我是傳檔案,直接把多個封包編碼掉放在另一個多餘的封包來傳。 14. [name=Egar] paper 有提到這些方法會延遲的提昇貢獻多少嗎 [name=Phoebe] 只有講概念,沒有特別去做比較。 15. [name=Egar] 最近5年的paper有沒有講到比較偏好的編碼方式。 [name=Phoebe] 我都往 independent 的資料看居多 16. [name=Solomon] cite in previous work chapter? [name=Phoebe] 會在 Reference,並在 FEC 的章節會提到 [name=Solomon] 如果一件事情花了很多時間準備,那這個東西必須要能夠在很多地方都有用處,這樣花的時間才有意義。 ## 待追蹤事項 1. [name=Ashley] 本月路跑(4/27)已公佈,記得去請假/點餐;畢業路跑(五月)時間記得投票. ## 臨時動議 --- 散會結束時間: 18:33