--- title: "Play Digital Signal Processing with Python (using SigmaDSP) - Wei Lin" tags: PyConAPAC2022, 2022-organize, 2022-共筆 --- # Play Digital Signal Processing with Python (using SigmaDSP) - Wei Lin {%hackmd 3JQH2UcwQ1e5RMgz4GRiKg %} <iframe src=https://app.sli.do/event/dQGjkmjd7W2cAb1LEUtFGX height=450 width=100%></iframe> Slide link 投影片連結:https://drive.google.com/file/d/1QBlbwnfirm-59eNpEyZnh5BRw17FI5oe/view?usp=sharing YouTube link 演講影片連結:[https://youtu.be/Yc0hUaKKuIw](https://youtu.be/Yc0hUaKKuIw) > Collaborative writing start from below > 從這裡開始共筆 Below is the part that speaker updated the talk/tutorial after speech 講者於演講後有更新或勘誤投影片的部份 - 此專案發展過程中較困難的點為何 ?: - AutoEQ 比較困難。曾經嘗試以PyTorch用 neural network 來對即時收音(每次 descent 就再收音一次)的訊號做最佳化,但是因為訊號源為 白噪音,本身就有 random 的特性,以至於 gradient descent 的過程並不穩定。後來採用 [Jaakko Pasanen 的模組](https://github.com/jaakkopasanen/AutoEq)來實現 AutoEQ 的功能 (只收音一次 然後每次 descent後 用公式估計EQ的效果)。 <br /> - 此專案發展過程中較困難的點為何 ?: - AutoEQ 比較困難。曾經嘗試以PyTorch用 neural network 來對即時收音(每次 descent 就再收音一次)的訊號做最佳化,但是因為訊號源為 白噪音,本身就有 random 的特性,以至於 gradient descent 的過程並不穩定。後來採用 [Jaakko Pasanen 的模組](https://github.com/jaakkopasanen/AutoEq)來實現 AutoEQ 的功能 (只收音一次 然後每次 descent後 用公式估計EQ的效果)。 <br /> - 後續可能有什麼發展 ?: - 以演唱會所用的 [中大型 mixer](https://www.google.com/search?q=analog+studio+console&sxsrf=ALiCzsYNu3GyiuOCqgKo9SUZItyvJsqxzQ:1662705409498&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjLibKqjIf6AhWuGaYKHbzmBnkQ_AUoAXoECAEQAw&biw=1536&bih=700&dpr=1.25) 為例,通常有這些缺點: - 體積巨大: 因為功能複雜所以需要很多按鍵與旋鈕,體積也因此偏大,較佔空間。 - 重量偏重: 搬運不易,移動困難。 - 價格昂貴: 零部件很多,而且系統封閉 造成競爭壁壘。 - 維護困難: 因功能高度集成,如果其中一個 channel 或功能故障,就須整台送修,曠日廢時,維運上風險較高。 - 功能與操作複雜不易上手: 使用者需要較長的學習時間。 - 以分散式系統的思維 重新設計系統: - 一個複雜的 mixer,可以拆解為很多功能的組成。 - 每個(或數個)功能,可以使用一個 SigmaDSP 的晶片加上對應的韌體來取代。 - 我們可以把 一個 **SigmaDSP晶片+韌體** 視為一個 **DSP元件**,而且透過 [TCP/IP channel](https://github.com/Wei1234c/TCPi),這個DSP元件可以透過無線網路來存取與控制。 - 所以我們可以將一個 mixer視為 一個由很多DSP元件組成的 **分散式系統**,並透過 物件導向的思維 來設計並組織這些元件,達成 mixer 所需的功能。 - 而音訊的處理,本身就具有 pipe-line 的本質,所以我們也可將 mixer 視為一個 **分散式的 pipe-line 系統**。 - 而最重要的是,我們可以透過 Python 來控制這些DSP元件,也就能與 Python 背後豐沛的資源接軌。現今 Python 幾乎是 Machine-Learning/AI 的同義字,也就是說,我們可以 **"訓練"** 一個 mixer 系統。後續也許就可以透過 Google Assistant 或者 chatbot 來控制 mixer,只要**說出操作需求**(例如: "Lower sub-woofer 2dB" 或 "1200Hz boost 2dB, Q 1.4"),或者藉由特定的**手勢**就可以達成相對的效果。 - 優點: - 因為使用軟體控制,可以減少按鍵旋鈕,因此體積、重量可以降低。 - 因為是 open-source,降低進入障礙且可以集成眾人之力,因而可以大幅降低整體成本與價格。 - 因為採用分散式的DSP元件,抽換與維運相當容易且迅速。 - 藉由 Machine-Learning/AI 的輔助,可以大幅降低學習曲線,讓使用者可以迅速駕馭複雜的系統。