- Renamed functions for clarity:
OpenJTalk.to_wav/2→OpenJTalk.to_wav_file/2OpenJTalk.to_binary/2→OpenJTalk.to_wav_binary/2
-
WAV concatenation
OpenJTalk.Wav.concat_binaries/1OpenJTalk.Wav.concat_files/1
-
Playback options
:playback_mode(:auto | :stdin | :file) forsay/2,play_wav_binary/2, andplay_wav_file/2OpenJTalk.play_wav_binary/2— play in-memory WAV bytes directly
- Safer, stricter option validation with
OpenJTalk.validate_options!/1 - Better error messages for invalid options and timeouts
{:ok, path} = OpenJTalk.to_wav_file("こんにちは", out: "/tmp/x.wav")
{:ok, wav} = OpenJTalk.to_wav_binary("こんにちは")
:ok = OpenJTalk.say("こんにちは", playback_mode: :auto)
{:ok, merged} = OpenJTalk.Wav.concat_binaries([a, b, c])- More robust process execution:
OpenJTalk.Runnernow uses MuonTrap for spawning theopen_jtalkCLI. This improves timeout handling and process cleanup (useful on Nerves and in supervision trees).
- Replace
System.cmd/3+ manual Task/timeout withMuonTrap.cmd/3inOpenJTalk.Runner. - Add runtime dependency:
{:muontrap, "~> 1.6"}.
- No API changes. Existing calls (
OpenJTalk.to_wav/2,to_binary/2,say/2) are unaffected. - Builds may compile a tiny native component from MuonTrap (handled automatically).
- Recommended for Nerves users: better handling of timeouts and zombie prevention under constrained environments.
No user-visible or API changes. All updates are internal/maintenance to make builds more robust.
- Unified script now handles vendor extraction and triplet guarding.
- Triplet change auto-purges
_build/**/objto avoid cross-contamination. - Inject repo-local
config.sub/config.guessinto vendor trees. - Replace
mecab/Makefile.instub with a tinyconfigurepatch (fixesconfig.statuswith external MeCab). - Streamlined installers:
- Dictionary: extract to
priv/dictionary(unwrapopen_jtalk_dic_*if present). - Voice: stream
mei_normal.htsvoicedirectly from the zip.
- Dictionary: extract to
- Centralized RPATH:
$ORIGIN/../lib(Linux),@loader_path/../lib(macOS).
- Simpler build: consolidated native build into one script; removed configure “stamp”.
- Assets bundled by default: dictionary + Mei voice now bundled into
priv/unless opted out. - Wider platform support: host builds verified on Linux x86_64, Linux aarch64, and macOS 14 (arm64).
- Cross-compile: tested
MIX_TARGET=rpi4(aarch64/Nerves). - Better triplet detection: inject modern
config.sub/config.guessto fix errors likearm64-apple-darwin… not recognized.
- Env vars renamed:
FULL_STATIC→OPENJTALK_FULL_STATICBUNDLE_ASSETS→OPENJTALK_BUNDLE_ASSETS
- If you previously relied on assets not being bundled, set
OPENJTALK_BUNDLE_ASSETS=0.
Initial release