CHANGELOGS.md
All notable user-facing changes to Moonshine Voice are documented in this file.
The format is based on Keep a Changelog. Please keep the bullets high level, and no more than about 200 characters.
frontend.model.ort plus frontend.weights.ort, keeping int8 weights on disk. English streaming models on quantized_26_08_21 cut the frontend download by about 75%.moonshine-voice[finetune] is an alias of [lora]; moonshine-voice finetune runs the same trainer.--dataset uwb_atcc (real VHF, research/NC), --sites encoder|both, --adapt full, and --eval-dataset atco2.stream() / push_text / flush, and take audio back chunk by chunk or through an on_chunk handler.AgentFlow.say_stream() and Dialog.say_stream() speak a language model's reply as it is generated, instead of waiting for the whole thing.moonshine_tts_split_utterances() exposes the sentence splitter that streaming and say() share.EmbeddingModel is a public low-level type in Python, JavaScript, Swift, and Java, for embedding text and scoring similarity without adopting AgentFlow."ja" selects by default. The older non-streaming Japanese models stay available by architecture..ort bytes at session create instead of copying them, matching the non-streaming path.moonshine-voice no longer loads requests, so a CLI call against a cached model starts sooner.Dr. Smith and J. R. R. Tolkien whole and understands 。!?؟। terminators, replacing four different naive rules.fp32, fp16, and q4f16 embedding model variants are no longer supported. Passing them fails with a "no longer supported" error; use q4 (the default) or q8.say() calls no longer leave a gap or a click between them.kokoro/prosody.* and kokoro/decoder.*, and no whole-utterance model. They render the same audio, so the download halves. In-memory callers should pass all four keys.<stem>.upstream.* plus <stem>.generator.*, the same total size and the same audio, which is what lets a reply start playing before it is synthesized.say() and the same across voices.examples/python/finetune/.moonshine_get_stt_dependencies now says whether the language is unknown or the architecture is unpublished, and lists that language's architectures (GitHub issue #214).Memory is empty or drops hypotheses when short chunks arrive faster than encoder lookahead, including on medium-streaming (GitHub issue #218).load() (GitHub issue #210)..ort it opened, so creating and closing one in a loop no longer retains tens of megabytes per instance.decode_incomplete_lines (default true). Set false to encode as audio arrives but wait until the line is complete before decoding.moonshine-voice[lora] extra trains a decoder-only LoRA adapter on your audio (ATCOSIM example included). Default inference installs are unchanged.fit_adapter and ATCOSIM helpers as python -m moonshine_voice.lora instead of inlining the trainer.out_transcript, a missing moonshine-test-v2.cpp, or the old transcribe_stream_chunk name.transcribe_stream after stop_stream now transcribes leftover audio, so a final transcript no longer requires earlier partial updates.keyterms to bias decoding towards jargon, or context to find the terms in a passage of text. See Domain Customization.mkdocs style, with one file per section rather than everything in one large README.md. These docs are also available at moonshine.readthedocs.io.moonshine_load_transcriber_from_memory_files() rejects an unrecognized filename key with MOONSHINE_ERROR_INVALID_ARGUMENT, naming it, instead of dropping it silently and reporting the file as missing.use_speculative_decoding=false.AgentFlow.otherwise() — a callback for speech that matched no trigger and no waiting prompt, so dictation-style UIs can take free-form lines without treating them as failed commands.cloning(), clone_from(), and start_cloning() / VoiceClone for file, PCM, or live microphone capture, aligned across Python, JavaScript, Swift, and Java.DialogFlow is renamed to AgentFlow everywhere (APIs, packages, and example apps).load(). In particular, Python MicTranscriber and TextToSpeech no longer download and open models inside the constructor.moonshine-cpp.h) follows the same higher-level shape for transcription and TTS..ort) are accepted. Supplying .onnx (or ONNX external-data sidecars) fails with a clear migration error. Convert with python scripts/convert-models-to-ort.py. See docs/ort-only-models.md.identify_speakers, they download on first use like other models (~8 MB off every mobile binary; Android arm64 install ~24.6 MB → ~16.4 MB, iOS linked binary ~30.6 MB → ~22.4 MB). See docs/diarization-models.md.download.moonshine.ai (and the Hugging Face mirror) instead of the old GCP-hosted buckets; large model blobs are no longer kept in git LFS in this repo.AgentFlow phrase matching instead).