本週Github上16個有趣專案MetaVoice等

banq發表於2024-02-16

本週Github有趣專案和庫包:

1、LLRT
LLRT(低延遲執行時)是一種實驗性的輕量級 JavaScript 執行時,旨在滿足對快速高效的無伺服器應用程式日益增長的需求。
與AWS Lambda上執行的其他 JavaScript 執行時相比, LLRT 的啟動速度提高了10 倍以上,總體成本降低了2 倍
LLRT 僅支援一小部分 Node.js API。它不是Node.js 的替代品,也永遠不會。

2、inox
Inox 是一個二進位制平臺,包含開發、測試和部署主要在伺服器端呈現的網路應用程式所需的所有內容。應用程式使用 Inoxlang 開發,這是一種與多個元件深度整合的沙盒程式語言。

  • 內建資料庫引擎
  • 具有檔案系統路由的 HTTP 伺服器
  • 支援虛擬檔案系統和臨時資料庫的測試引擎(對應用程式程式碼完全透明)。
  • 程序內容器引擎:每個應用程式都在專用的虛擬檔案系統中執行,並且受許可權約束(與Linux容器無關)。


3、Leo
Leo 是一種功能性、靜態型別程式語言,用於編寫私人應用程式;

Leo 提供了一種高階語言,可以抽象低階加密概念,並可以輕鬆地將私有應用程式整合到您的堆疊中。 Leo 編譯成電路,使零知識證明變得實用。

Leo 的語法受到 JavaScript、Scala 和 Rust 等傳統程式語言的影響,非常強調可讀性和易用性。 Leo 為開發人員提供了健全性檢查電路的工具,包括單元測試、整合測試和控制檯功能。

程式碼示例:

<font>// The 'hello' program.<i>
program hello.aleo {
    transition main(public a: u32, b: u32) -> u32 {
        let c: u32 = a + b;
        return c;
    }
}

  • program hello.aleo { 定義 Leo 檔案中的程式名稱。
  • 程式 ID 必須與 program.json 清單檔案一致。
  • 關鍵字 transition 表示 Leo 中的過渡函式定義。
  • 我們的 hello main 函式接收一個 u32 型別、公共可見性的輸入 a,以及一個 u32 型別、私有可見性(預設)的輸入 b。
  • 程式返回一個 u32 型別的結果。
  • 過渡函式體用大括號{ }括起來。
  • 通常,Leo 會將開頭的大括號與函式定義放在同一行,並在中間加一個空格。


4、unlazy
利用本地瀏覽器應用程式介面的佔位符影像通用懶載入庫。
它旨在與屬性一起使用loading="lazy"(模糊)佔位符影像以及BlurHashThumbHash字串。

  • Native:利用loading="lazy"屬性
  • 與框架無關:適用於任何框架或根本不使用框架
  • SSR 和客戶端BlurHashThumbHash解碼
  • 自動計算sizes屬性
  • 檢測搜尋引擎機器人並預載入所有影像
  • 支援多個影像標籤
  • 無需構建步驟即可使用

要將延遲載入應用於具有該loading="lazy"屬性的所有影像,請匯入該lazyLoad函式並在不帶任何引數的情況下呼叫它:

import { lazyLoad } from 'unlazy'

<font>//透過選擇器 `img[loading="lazy"]` 為所有影像應用懶載入功能<i>
lazyLoad()

5、kubetail
Kubetail 是一款基於網路的實時日誌檢視器,適用於 Kubernetes 叢集。

在容器化環境中檢視應用程式日誌是一項挑戰。通常情況下,一個應用程式由多個服務組成,每個服務都部署在多個容器中,這些容器的負載平衡可確保資源的平均消耗。雖然使用 kubectl 或 Kubernetes Dashboard 等工具很容易檢視單個容器的日誌,但同時監控構成應用程式的所有容器的日誌卻比較困難。由於容器的短暫性,它們會不斷地迴圈出現和退出,這使得監控變得更加困難。

Kubetail 提供了一個易於使用、基於 Web 的介面,讓你可以同時實時檢視一組 Kubernetes 工作負載(如部署、CronJob、StatefulSet)的所有日誌,從而解決了這個問題。

在引擎蓋下:

  • 它使用叢集的 Kubernetes API 監控工作負載,並檢測新工作負載容器的建立或舊容器的刪除。
  • 然後,Kubetail 會將新容器的訊息新增到你的檢視流中,或更新其使用者介面,以反映舊容器不再產生訊息的情況。
  • 這樣,當使用者請求跨服務從一個短暫容器移動到另一個容器時,您就能輕鬆跟蹤應用程式日誌。
  • Kubetail還能幫助你除錯應用程式問題,因為它允許你根據節點屬性(如可用性區域、CPU架構或節點ID)過濾日誌。這對於查詢應用程式例項執行的特定環境中的具體問題非常有用。

kubetail 應用程式包括:
  • 一個連線到 Kubernetes API 的基於 Go 的後端伺服器,
  • 以及一個查詢後端伺服器並在瀏覽器中顯示結果的基於 React 的靜態網站。

Kubtail 通常使用清單檔案或 helm 圖表作為 docker 容器部署在叢集中,並可透過網路瀏覽器訪問,使用的方法與連線 Kubernetes 控制皮膚相同(如 kubectl proxy)。

由於 kubetail 在內部使用 Kubernetes API 來請求日誌,因此日誌資訊始終歸你所有,而且預設情況下 kubetail 是私有的。

主要特徵

  • 體積小,資源效率高(記憶體<30MB,CPU 可以忽略不計)
  • 實時檢視日誌訊息
  • 檢視屬於特定工作負載的日誌(例如 Deployment、CronJob、StatefulSet)
  • 檢測工作負載容器的建立和刪除,並將其日誌自動新增到檢視流中
  • 使用您的 Kubernetes API,因此日誌訊息永遠不會離開您的手中(預設情況下是私有的)
  • 根據時間過濾日誌
  • 根據節點屬性(例如可用區域、CPU 架構或節點 ID)過濾日誌
  • 用顏色編碼的日誌行來區分不同的容器
  • 乾淨、易於使用的介面


6、GitButler
Git 分支管理工具,專為現代工作流程打造。

GitButler 是一個基於Tauri的應用程式。它的 UI 是使用TypeScriptSvelte編寫的,後端是用Rust編寫的。

GitButler 是一個 git 客戶端,可讓您同時在多個分支上工作。它允許您快速將檔案更改組織到單獨的分支中,同時仍然將它們應用到您的工作目錄。然後,您可以將分支單獨推送到遠端,或直接建立拉取請求。

簡而言之,它是git add -p和的更靈活版本git rebase -i,允許您跨分支高效地執行多工。

GitButler 跟蹤 Git 之上的一層中未提交的更改。對檔案或檔案部分的更改可以分為我們所說的虛擬分支。只要您對虛擬分支的內容感到滿意,就可以將其推送到遠端。 GitButler 確保其他虛擬分支的狀態保持獨立。

GB 的虛擬分支與 Git 分支有何不同?
我們在 Git 中瞭解和喜愛的分支是獨立的宇宙,它們之間的切換是完整的上下文切換。 GitButler 允許您在同一工作目錄中並行處理多個分支。這實際上意味著多個分支的內容同時可用。

GitButler 在提交之前就知道更改。這使得它能夠記錄每個單獨的差異屬於哪個虛擬分支。實際上,這意味著您可以隨時將各個分支及其內容分開,以將它們推送到遠端或從工作目錄中取消應用它們。

最後,在 Git 中,您最好提前建立所需的分支,使用 GitButler 您可以在開發過程中的任何時候在虛擬分支之間移動更改。

主要特點

  • 虛擬分支
    • 同時組織多個分支的工作,而不是不斷切換分支
    • 需要時自動建立新分支
  • 輕鬆提交管理
    • 透過拖放來撤消、修改和擠壓提交
  • GitHub 整合
    • 向 GitHub 進行身份驗證以開啟拉取請求、列出分支和狀態等
  • 輕鬆的 SSH 金鑰管理
    • GitButler 可以自動生成 SSH 金鑰上傳到 GitHub
  • 人工智慧工具
    • 根據您正在進行的工作自動編寫提交訊息
    • 自動建立描述性分支名稱
  • 提交簽名
    • 使用我們生成的 SSH 金鑰輕鬆提交簽名


7、modguard
用於執行模組化、解耦軟體包架構的 Python 工具。

Modguard 可以讓你定義指定模組的公共介面。使用 "邊界 "標記一個軟體包,預設情況下它的所有內部結構都是私有的,只公開標記為 public 的成員。

這就強化了解耦模組的架構,並確保域之間的通訊只能透過其定義的公共介面進行。

Modguard 非常輕便,不會影響程式碼的執行。相反,它透過靜態分析 CLI 工具進行檢查。

8、metavoice-src
類人表示式 TTS 的基礎模型

MetaVoice-1B 是一個 1.2B 引數庫模型,經過 10 萬小時語音訓練,用於 TTS(文字轉語音)。它是按照以下優先事項構建的:

  • 英語中情感言語的節奏和語氣。沒有幻覺。
  • 零樣本克隆美國和英國的聲音,帶有 30 年代的參考音訊。
  • 透過微調支援(跨語言)語音克隆。
    • 我們為印度語使用者提供了短短 1 分鐘的訓練資料,取得了成功。
  • 支援長格式合成。

我們在 Apache 2.0 許可證下發布 MetaVoice-1B,它可以不受限制地使用。
嘗試演示

根據文字和說話者資訊預測 EnCodec 標記。然後將其擴散到波形級別,並應用後處理來清理音訊。

  • 我們使用因果 GPT 來預測 EnCodec 令牌的前兩個層次結構。文字和音訊是法學碩士背景的一部分。說話者資訊透過令牌嵌入層的條件傳遞。該說話人調節是從單獨訓練的說話人驗證網路獲得的。
    • 這兩個層次結構以“扁平交錯”的方式進行預測,我們預測第一個層次結構的第一個標記,然後預測第二個層次結構的第一個標記,然後預測第一個層次結構的第二個標記,依此類推。
    • 我們使用無條件取樣來提高模型的克隆能力。
    • 使用具有 512 個標記的自定義訓練 BPE 標記器對文字進行標記。
    • 請注意,我們已經跳過了其他工作中所做的預測語義標記,因為我們發現這並不是絕對必要的。
  • 我們使用非因果(編碼器式)轉換器從前兩個層次結構中預測其餘 6 個層次結構。這是一個超小型模型(~10Mn 引數),並且對我們嘗試過的大多數揚聲器具有廣泛的零樣本泛化。由於它是非因果的,我們還能夠並行預測所有時間步長。
  • 我們使用多頻帶擴散從 EnCodec 令牌生成波形。我們注意到語音比使用原始 RVQ 解碼器或 VOCOS 更清晰。然而,波形級別的擴散留下了一些聽起來非常不舒服的背景偽影。我們將在下一步中清理它。
  • 我們使用 DeepFilterNet 來清除多頻帶擴散引入的偽影。


9、logot
測試程式碼是否正確記錄日誌。

from logot import Logot, logged

def test_something(logot: Logot) -> None:
    do_something()
    logot.assert_logged(logged.info(<font>"Something was done"))

logot與流行的測試(例如pytest,unittest)、非同步(例如asyncio,trio)和日誌框架(例如logging,loguru)整合。它可以擴充套件以支援許多其他內容。

10、TriOTP
Python Trio 的 OTP 框架。

該專案是Erlang / Elixir OTP框架的簡化實現 。

它構建在Trio非同步庫之上,並提供:

  • 應用程式:監督樹的根
  • 主管:自動重啟子任務
  • 郵箱:任務之間的訊息傳遞
  • gen_servers:通用伺服器任務

11、Toolong
用於檢視、跟蹤、合併和搜尋日誌檔案(以及 JSONL)的終端應用程式。

  • 日誌檔案的實時跟蹤。
  • 語法突出顯示常見的 Web 伺服器日誌格式。
  • 開啟數 GB 檔案的速度與開啟小文字檔案的速度一樣快。
  • 支援 JSONL 檔案:行列印得很漂亮。
  • 自動開啟 .bz 和 .bz2 檔案。
  • 透過自動檢測時間戳合併日誌檔案。

12、django-queryhunter
查詢 Django 應用程式程式碼中負責執行最多查詢的行。

django-silk等庫非常適合分析 Django 應用程式執行的查詢。然而,我們發現它們沒有提供一種完全簡單的方法來識別應用程式程式碼中負責執行最多查詢的行。該庫旨在透過提供簡單的程式碼優先方法來進行查詢分析來填補這一空白。

這種分析檢視的一個特別有用的功能是快速識別丟失select_related和prefetch_related呼叫。

  • 用於分析查詢的上下文管理器和中介軟體,可以提供負責執行 SQL 查詢的應用程式程式碼行的詳細報告,包括以下資料:
    • 執行查詢的程式碼的模組名稱和行號。
    • 該行的執行程式碼本身。
    • 該行負責呼叫的查詢數量以及該行呼叫的查詢執行所需的總時間。
    • SQL 查詢本身。請注意,我們僅顯示該行上執行的最後一個SQL 查詢。
    • 可定製的後設資料,例如導致執行查詢的請求的 URL 和方法。
  • 用於過濾、排序、列印或記錄結果的可配置選項。
  • 輕量級:queryhunter使用 Django 的資料庫掛鉤 和內建linecache模組提供一種簡單有效的方法將 SQL 查詢對映到執行它們的應用程式程式碼行。

我們已經在生產級程式碼庫上使用了它,並且在診斷某些型別的效能問題方面優於類似的庫。不過,我們尚未在生產環境中啟用它,因此請謹慎操作。另請注意,queryhunter 的目的是僅識別導致 SQL 查詢的應用程式程式碼行。它不分析第三方庫(包括 Django 本身)。另一件需要注意的事情是,這個庫並不像 django-silk 那樣精美、功能完整或經過良好的測試。


13、Lag-Llama
建立時間序列機率預測的基礎模型。

基礎模型已在視覺和語言領域得到廣泛應用,但時間序列預測卻落在後面--它仍然依賴於特定資料集模型。 Lag-Llama 是第一個用於時間序列預測的開源基礎模型!

Lag-LLama 在不同的時間序列資料集上進行了預訓練,並實現了

  • --強大的零次拍攝效能
  • --微調少次拍攝時的一流結果。

事實證明,它是跨領域未見時間序列的最佳通用模型。

受 LLaMA 的啟發,Lag-Llama 使用了一個簡單的僅解碼器的自迴歸架構,可以預測任何頻率和預測長度!

我們的標記化方法使用了滯後特徵(歷史中的特定點)和日期時間特徵(表示時間戳)。 我們開發了分層批次取樣和歸一化策略,這些策略在預訓練中被證明是有效的。

我們的預訓練語料庫由 27 個資料集組成,橫跨能源、交通、經濟、自然、空氣質量和雲端計算等六個不同領域,包含近 8K 個單變數時間序列和 3.52 億個標記。


14、HypoFuzz
針對 Python 最佳測試工作流程的開源智慧模糊測試。

基於屬性的方法可以幫助您編寫更好的測試來發現更多錯誤,但沒有很好的方法來用更多的 CPU 時間來換取更多的錯誤。該專案的目標是將模糊測試和 PBT 的最佳部分結合在一起。

  • 許多測試函式的交錯執行
  • 優先考慮我們希望取得進展的職能
  • 覆蓋範圍引導的被測系統探索
  • 無縫 python 原生和 CLI 整合(替換pytest命令)
  • 使用PyTrace進行基於 Web 的時間旅行除錯 (如果您是自動的pip install hypofuzz[pytrace])


15、mwmbl
一個用 Python 實現的開源、非營利性搜尋引擎。

Mwmbl 是一個非營利、無廣告、免費和免費午餐的搜尋引擎,注重可用性和速度。目前,它只不過是一個想法以及在小型索引上實現 Web 前端和搜尋技術的概念驗證。

我們的願景是建立一個致力於提供高質量搜尋(特別是針對駭客)的社群,其資金完全來自捐贈。

我們現在有了一個在志願者機器上執行的分散式爬蟲!如果您有 Firefox,您可以透過安裝我們的擴充套件來提供幫助 。這將在後臺抓取網路,每秒檢索一頁。它不會使用或訪問您的任何個人資料。相反,它隨機抓取網路,使用駭客新聞上得分最高的網站作為種子頁面。提取每個頁面的摘要後,它將這些資料進行批處理,並將資料傳送到中央伺服器進行儲存和索引。

替代搜尋引擎的空間迅速擴大。以下是我感興趣的一些非常不完整的列表:

  • YaCy - 開源分散式搜尋引擎
  • search.marginalia.nu - 偏愛文字型網站的搜尋引擎
  • Gigablast - 一個注重隱私的搜尋引擎,其所有者透過向第三方出售技術來賺錢
  • Brave
  • DuckDuckGo

其中,YaCy 在精神上最接近非營利搜尋引擎的理念。該索引分佈在對等網路中。不幸的是,這種設計決策使得搜尋速度非常慢。
Marginalia Search 非常棒,但它更多的是一個個人專案,而不是一個開源社群。

為非營利組織設計

  • 要成為一個好的搜尋引擎,我們需要儲存許多專案,但執行引擎的成本至少與儲存的專案數量成正比。因此,我們的主要考慮是降低每件物品的儲存成本。
  • 該設計基於這樣的觀察:大多數專案都針對一小部分術語進行排名。在極端版本中,每個專案針對單個術語進行排名,通常的倒排索引設計效率非常低,因為我們必須將每個術語至少儲存兩次:一次在索引中,一次在專案資料本身中。
  • 我們的設計是一個巨大的雜湊圖。我們有一個由固定數量 N 的頁面組成的商店。每個頁面都有固定大小(當前為 4096 位元組以匹配記憶體頁面),並由壓縮的專案列表組成。給定一個我們想要對某個專案進行排名的術語,我們計算該術語的雜湊值(0 到 N - 1 之間的值)。然後將該專案儲存在相應的頁面中。
  • 為了檢索頁面,我們只需計算使用者查詢中術語的雜湊值並載入相應的頁面,將專案過濾到包含該術語的專案並對專案進行排名。由於每個頁面都很小,因此可以很快完成。
  • 因為我們壓縮了專案列表,所以我們可以對多個單個術語進行排名,並保持比倒排索引設計更小的索引。嗯,這就是理論。這個想法還有待大規模測試。

16、instld
Python中最簡單的軟體包管理

有了這個包,管理包的生命週期就變得非常容易。

  • ⚡ 無需安裝庫即可執行程式碼。
  • ⚡ 您可以在同一個程式中使用同一個庫的 2 個不同版本。
  • ⚡ 您可以在同一專案中使用不相容的庫,以及具有不相容/衝突依賴項的庫。
  • ⚡ 共享書面指令碼很容易。指令碼檔案變得自給自足——使用者不需要安裝必要的庫。
  • ⚡ 圖書館不會留下“垃圾”。程式結束後,系統中不再殘留任何檔案。

安裝:
pip install instld

import instld

with instld('some_package'):
    import some_module

 

相關文章