MCPcopy Index your code
hub / github.com/Dimev/grail-rs

github.com/Dimev/grail-rs @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
69 symbols 124 edges 6 files 15 documented · 22%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Grail-rs (Work in progress)

Grail, A simple formant speech synthesizer, built for portability This is the rust version

The goal of this synthesizer is to be as simple as possible, and easy to port to C and other languages if needed (I'll make a C port when this one is in a more complete state)

Still heavy WIP

Roadmap:

  • Get the output to be roughly normalized by default (Almost done, ModFM does wonders here)
  • Move everything back to the 2000 line file, that was nicer to work with IMO
  • Use a different carrier for ModFM, so it's closer to what an actual speech sound wave looks like
  • Finish the example, get rid of rodio and dev dependancies
  • Make a full voice
  • Complete the intonator, can see a few items into the future and adjusts voice based on that (also a ruleset for this?)
  • Complete the text->phoneme transcription, via a find-and-replace ruleset
  • Make a macro to generate a language from a language file (and do sorting automatically)
  • make a better way to make voices
  • (later) add a way to send commands to change the intonation
  • (later, maybe) Automatic voice replication

License

Licensed under either of

  • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Extension points exported contracts — how you extend this code

IntoSynthesize (Interface)
and we want to be able to easily make a synthesizer, so make a trait for it [1 implementers]
src/lib.rs
IntoJitter (Interface)
and we want to be able to easily make the jitter iterator [1 implementers]
src/lib.rs
IntoSequencer (Interface)
and implement an easy way to get the iterator [1 implementers]
src/lib.rs
IntoSelector (Interface)
(no doc) [1 implementers]
src/lib.rs
IntoIntonator (Interface)
(no doc) [1 implementers]
src/lib.rs

Core symbols most depended-on inside this repo

generic
called by 12
src/languages/mod.rs
map
called by 11
src/lib.rs
random_f32
called by 7
src/lib.rs
map2
called by 7
src/lib.rs
next
called by 7
src/lib.rs
min
called by 6
src/lib.rs
blend
called by 3
src/lib.rs
has_argument
called by 3
examples/cli.rs

Shape

Method 29
Function 19
Class 15
Interface 6

Languages

Rust100%

Modules by API surface

src/lib.rs62 symbols
examples/cli.rs4 symbols
src/voices/generic.rs1 symbols
src/languages/mod.rs1 symbols
examples/interactive.rs1 symbols

For agents

$ claude mcp add grail-rs \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact