mirror of
https://github.com/zenlm/engine.git
synced 2026-10-30 15:00:05 +00:00
* Add loading * Add rope, mlp, most of attn * Add encoder + encoder layer, decoder layer forwards * Add decoder forwards * Add prepare_audio_prompt * prepare_generation mostly done * Add a proper dia kvcache * Add most of decoder_step * Add the sampler * Add the generation loop * Wire things up * Add speech pipeline * Fixes * Loads * Some fixes * f32 * Some progress * Ok it runs upto dac decoding * Add dac part loading * Loads and runs at least * Remove encodec * Debugging * Debugging * Huh * Complete merge * Interactive * Confirmed dac works at least * Looks like encoder works * Much progress * Hmm * Sampling * Almost there * Sampler * Sampler * Bf16 support * Response * Use it in interactive mode * Fix oneshot * Add openai api * Add openai api * Refactor loading * Use naive sdpa for inplace * Factor out * Clippy * Clippy * Config * Refactor config * Metal clippy * Fix t/s * ISQ support * Some fixes, nits * Fix cuda * Clippy * Inhibit cublaslt for cuda * Add server example * Add python example * Add rust api * Add docs * Update config.toml * Fix .pyi * Update readme * config.toml tweak * config.toml tweak * config.toml tweak * config.toml tweak * config.toml tweak * config.toml tweak * config.toml tweak * config.toml tweak * config.toml tweak
34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
from mistralrs import (
|
|
Runner,
|
|
Which,
|
|
SpeechLoaderType,
|
|
)
|
|
from pathlib import Path
|
|
import wave, struct
|
|
|
|
# text_to_speak = "[S1] Dia is an open weights text to dialogue model. [S2] You get full control over scripts and voices. [S1] Wow. Amazing. (laughs) [S2] Try it now on Git hub or Hugging Face."
|
|
text_to_speak = "[S1] mistral r s is a local LLM inference engine. [S2] You can run text and vision models, and also image generation and speech generation. [S1] There is agentic web search, tool calling, and a convenient Python API. [S2] Check it out on github."
|
|
|
|
runner = Runner(
|
|
which=Which.Speech(
|
|
model_id="nari-labs/Dia-1.6B",
|
|
arch=SpeechLoaderType.Dia,
|
|
),
|
|
)
|
|
|
|
res = runner.generate_speech(text_to_speak)
|
|
print(res.choices[0].url)
|
|
|
|
pcm_data = res.pcm # list of floats between -1.0 and 1.0
|
|
output_path = Path("output.wav")
|
|
|
|
# convert floats to 16-bit PCM ints
|
|
pcm_ints = [int(max(-32768, min(32767, int(sample * 32767)))) for sample in pcm_data]
|
|
with wave.open(output_path, "wb") as wf:
|
|
wf.setnchannels(res.channels) # mono
|
|
wf.setsampwidth(2) # 2 bytes per sample (16-bit)
|
|
wf.setframerate(res.rate) # set sample rate (adjust if needed)
|
|
wf.writeframes(b"".join(struct.pack("<h", s) for s in pcm_ints))
|
|
|
|
print(f"WAV audio written to {output_path.resolve()}")
|