本周Github上16个有趣项目MetaVoice等

本周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 为开发人员提供了健全性检查电路的工具,包括单元测试、集成测试和控制台功能。

代码示例:

// The 'hello' program.
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'

//通过选择器 `img[loading="lazy"]` 为所有图像应用懒加载功能
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("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 在精神上最接近非营利搜索引擎的理念。该索引分布在对等网络中。不幸的是,这种设计决策使得搜索速度非常慢。
Marginalia Search 非常棒,但它更多的是一个个人项目,而不是一个开源社区。

为非营利组织设计

  • 要成为一个好的搜索引擎,我们需要存储许多项目,但运行引擎的成本至少与存储的项目数量成正比。因此,我们的主要考虑是降低每件物品的存储成本。
  • 该设计基于这样的观察:大多数项目都针对一小部分术语进行排名。在极端版本中,每个项目针对单个术语进行排名,通常的倒排索引设计效率非常低,因为我们必须将每个术语至少存储两次:一次在索引中,一次在项目数据本身中。
  • 我们的设计是一个巨大的哈希图。我们有一个由固定数量 N 的页面组成的商店。每个页面都有固定大小(当前为 4096 字节以匹配内存页面),并由压缩的项目列表组成。给定一个我们想要对某个项目进行排名的术语,我们计算该术语的哈希值(0 到 N - 1 之间的值)。然后将该项目存储在相应的页面中。
  • 为了检索页面,我们只需计算用户查询中术语的哈希值并加载相应的页面,将项目过滤到包含该术语的项目并对项目进行排名。由于每个页面都很小,因此可以很快完成。
  • 因为我们压缩了项目列表,所以我们可以对多个单个术语进行排名,并保持比倒排索引设计更小的索引。嗯,这就是理论。这个想法还有待大规模测试。

16、instld
Python中最简单的软件包管理

有了这个包,管理包的生命周期就变得非常容易。

  • ⚡ 无需安装库即可运行代码。
  • ⚡ 您可以在同一个程序中使用同一个库的 2 个不同版本。
  • ⚡ 您可以在同一项目中使用不兼容的库,以及具有不兼容/冲突依赖项的库。
  • ⚡ 共享书面脚本很容易。脚本文件变得自给自足——用户不需要安装必要的库。
  • ⚡ 图书馆不会留下“垃圾”。程序结束后,系统中不再残留任何文件。

安装:
pip install instld

import instld

with instld('some_package'):
    import some_module