搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

jamesondh/chimera-vocal-synth

多媒体与设计

在浏览器里用模拟气道合成人声、歌唱和口技的物理建模声音合成器。

331
36
Rust
MIT
创建于 2 天前

项目介绍

Chimera 是一个在浏览器中运行的物理建模声音合成器。它不靠采样回放,而是模拟一套气道——肺、声带或鸣管、分支声道、嘴唇和鼻子——所有声音都由模型产生。引擎用 Rust 编写,编译为 WebAssembly 运行在 AudioWorklet 中;同一份代码也能以原生方式运行,用于测试和 chimera CLI。

浏览器界面提供多种模式:

  • Play:在头部剖面图中拖动舌头、嘴唇和下巴;也支持元音面板、旋钮、电脑键盘和 Web MIDI。
  • Speak:英文文本(CMUdict,带字母到发音的回退)或 IPA 被转换成手势和韵律,屏幕上同时显示手势谱和辅音表。
  • Sing:带逐音符歌词的钢琴卷帘,辅音落在拍点之前。
  • Beatbox:鼓垫和步进音序器,每个鼓声都是一次发音动作。
  • Bestiary:鸣禽(双声部鸣管)、海豹、短吻鳄和大象。
  • Duet(?show=<id>):两个 3D 头部回放预先渲染的歌曲。

男声、女声和童声的身体可以连续混合。屏幕上的动画——气道压力、气流、声带、频谱和共振峰——全部由实时引擎状态驱动。项目面向对人声合成、发音建模和交互式音频感兴趣的人,也面向想通过 CLI 测试引擎或阅读架构文档了解模型的开发者。

快速使用

前置条件:安装 Rust,并添加 wasm32-unknown-unknown target,同时安装 Bun。

bun install
bun run dev        # builds the wasm, then Vite on 127.0.0.1:5317

AudioWorklet 需要安全上下文,因此请在 localhost 或 HTTPS 下打开(例如使用 tailscale serve)。运行测试:

bun run test       # wasm build, cargo test --workspace, bun test tests

离线渲染和测量可通过 CLI 完成:

cargo run --release -p chimera-cli -- render speech|text|song|notes|beatbox|creature|vowels …
cargo run --release -p chimera-cli -- diagnose       # nasal leakage, formants, bandwidths, pitch
cargo run --release -p chimera-cli -- compare csd    # against a real singer (docs/csd-comparison.md)
bun tools/spectrogram.ts in.wav out.png

在线版本见 chimera-vocal-synth.vercel.app。

使用约束

  • 浏览器中的 AudioWorklet 需要安全上下文,非 localhost 的普通 HTTP 地址无法工作。
  • 构建 Web 应用需要同时准备 Rust wasm target 和 Bun。
  • CLI 的 render 子命令支持多种内容模式,README 中以省略号表示参数,执行完整渲染前需要查看 CLI 自身或文档确认具体参数。
  • 项目为 MIT 许可证,但随附的 CMUdict 数据和字体保留各自的许可证。

文档

架构文档介绍声学模型(FDTD 气道、声源、解剖结构、手势)。实时与确定性契约说明引擎边界。声音质量通过 Children's Song Dataset 对比评估,爬山调优记录保存逐步调整的过程。面向智能体的说明在 AGENTS.md。

HotRepo 点评

该项目在 2026-11-08 登上 HotRepo 的 Rust 新项目榜,记录到 136 Star、在约 90 分钟的窗口内净增 33 Star;当天上午的采样中,Star 从 103 升到 136。README 和文档描述的是真实的仿真引擎、浏览器界面和原生 CLI,模型不依赖 Web 构建即可测试。项目范围很大——语音、歌唱、口技和动物模型集于一个引擎——对使用者来说,更实际的问题不是项目是否存在,而是各模式成熟到什么程度。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。