Sema 是一个游乐场,您可以在这里快速制作用于信号合成、机器学习和机器监听的实时编码迷你语言原型。
Sema 旨在提供一个在线集成环境,用于设计抽象的高级语言和更强大的低级语言。
Sema 实施了一组核心设计原则:
集成信号引擎——就语言和信号引擎集成而言,不存在概念上的划分。一切都是信号。然而,为了模块化、可重用性和健全的架构,sema的信号引擎是由sema-engine库实现的。
单样本信号处理 – 每样本声音处理,用于支持使用反馈循环的技术,例如物理建模、混响和 IIR 滤波。
采样率转换——使用一种主要采样率(音频率)进行信号处理会更简单。可以通过使用传感器进行上采样和下采样来解决相关对象的不同采样率要求。传感器概念使我们能够在单个引擎中适应具有不同采样率(视频、频谱速率、传感器、ML 模型推理)的各种流程。
最小抽象——我们的信号引擎中没有高级抽象,例如总线、合成器、节点、服务器或任何语言支架。这些抽象位于最终用户语言设计空间内。
Sema 需要安装以下依赖项:
为了运行,Sema必须使用项目 url 和 api 密钥连接到Supabase 后端。
如果您决定使用npm
构建 sema,您可以遵循以下命令列表:
$ cd sema
$ npm install
$ npm run build
$ npm run dev
如果您决定使用 Yarn 包管理器,则可以使用以下命令列表:
使用纱线:
$ cd sema
$ yarn
$ yarn build
$ yarn dev
将 sema 作为节点应用程序运行后,您可以将其加载到浏览器的以下端口上
硬件加速将对 Tensorflow.js 模型训练速度产生巨大影响。
要在 Chrome 中启用它:
要在 Firefox 中启用:
about:preferences
Sema 使用 Web Audio API 音频工作集。它们的性能似乎对 CPU 功率缩放非常敏感。如果您遇到音质问题,请尝试将 CPU 调速器设置为性能模式。例如在 Ubuntu 上,
$ cpupower frequency-set --governor performance
Sema 的内部文档旨在支持用户的学习体验。它集成在应用程序中并包含以下部分:
入门
操场
实时编码
机器学习
语言创造
Sema 的 Wiki 文档旨在支持贡献。它重点介绍 Sema 的设计和构建方式:
Sema的架构是怎样的?
Sema如何实现和使用Web服务
如何在我自己的网络服务器上设置 Sema?
如何向 Sema 添加新的 ML 库?
如何创建新小部件并将其添加到 Sema?
如何将我自己的文档添加到 Sema?
Sema 的 Svelte 商店如何运作?
Sema 是一个开源项目,希望其基本愿景、目标和结构能够激励您为其做出贡献。检查以下内容:
我如何为 Sema 做出贡献?
贡献.md
为开发做好准备
调试塞玛
设计指南
贝尔纳多,F.,基弗,C.,马格努森,T.(2021)。评估对实时编码机器学习游乐场创造力的支持,见:Baalsrud Hauge J.、CS Cardoso J.、Roque L.、Gonzalez-Calero PA(编)娱乐计算 – ICEC 2021。ICEC 2021。计算机讲座笔记《科学》,第 13056 卷。Springer,Cham。 https://doi.org/10.1007/978-3-030-89394-1_38
贝尔纳多,F.,基弗,C.,马格努森,T.(2020)。用于实时编码语言生态系统的信号引擎, J. Audio Eng。社会学会,卷。 68,没有。 10,第 756-766 页。 doi:https://doi.org/10.17743/jaes.2020.0016
贝尔纳多,F.,基弗,C.,马格努森,T.(2020)。使用 Sema 设计多元化且用户友好的实时代码语言生态系统。第五届实时编码国际会议,利默里克大学,爱尔兰利默里克
贝尔纳多,F.,基弗,C.,马格努森,T.(2019)。用于实时编码语言生态系统的基于 AudioWorklet 的信号引擎。 2019 年网络音频会议论文集,挪威科技大学 (NTNU),特隆赫姆,挪威(2019 年网络音频会议最佳论文奖)