Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Elixir/NervesでOpen JTalkを使い、 ラズパイに日本語をしゃべらせてみた

Elixir/NervesでOpen JTalkを使い、 ラズパイに日本語をしゃべらせてみた

open_jtalk_elixir の開発録

Avatar for Masatoshi Nishiguchi

Masatoshi Nishiguchi

September 24, 2025
Tweet

Other Decks in Programming

Transcript

  1. Open JTalkとは • 日本語テキスト音声合成(Text to Speech, TTS)エンジン • CLIベースで軽量、組み込み向き •

    構成要素 ◦ Open JTalk 本体(CLI) ◦ MeCab辞書(形態素解析・読み・アクセント) ◦ HTS 音声モデル(`.htsvoice`ファイル)
  2. Open JTalk を Elixir から使うには? • NIF(Native Implemented Function) ◦

    高速だがVMごと落ちるリスクあり • Port ◦ 柔軟だけど I/O や引数管理が面倒 • System.cmd/3 ◦ シンプル ◦ 移植性高い ◦ クラッシュしても VM に影響なし
  3. Open JTalk のビルド • 課題 ◦ MeCab / HTS /

    Open JTalk など、依存関係の解決に一定の知識と 手間が必要 ◦ 辞書:約 100MB、音声モデル:約 2MB と、サイズもやや大きめ • 解決策 ◦ mix compile 時に Open JTalk を 自動ビルド ◦ 辞書・音声モデルを 標準で同梱 ◦ 環境変数で 外部の辞書/音声への切替に対応
  4. クロスプラットフォーム対応 • Linux: ARM系 ◦ config.sub更新必要 • macOS ◦ 静的リンク不可→動的リンク

    ◦ aplay→afplay • Nerves ◦ MIX_TARGETでクロスコンパイル ◦ 容量制約あり • CI 環境での確認 ◦ Linux x86_64 ◦ Linux aarch64 ◦ macOS 14 (arm64, Apple Silicon)