Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Elixir/NervesでOpen JTalkを使い、 ラズパイに日本語をしゃべらせてみた
Search
Masatoshi Nishiguchi
September 24, 2025
Programming
0
13
Elixir/NervesでOpen JTalkを使い、 ラズパイに日本語をしゃべらせてみた
open_jtalk_elixir の開発録
Masatoshi Nishiguchi
September 24, 2025
Tweet
Share
Other Decks in Programming
See All in Programming
rack-attack gemによるリクエスト制限の失敗と学び
pndcat
0
230
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
240
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
540
.NET Conf 2025 の興味のあるセッ ションを復習した / dotnet conf 2025 quick recap for backend engineer
tomohisa
0
110
疑似コードによるプロンプト記述、どのくらい正確に実行される?
kokuyouwind
0
290
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
5.6k
Patterns of Patterns
denyspoltorak
0
930
PostgreSQLで手軽にDuckDBを使う!DuckDB&pg_duckdb入門/osc25hi-duckdb
takahashiikki
0
260
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
4
1.9k
re:Invent 2025 トレンドからみる製品開発への AI Agent 活用
yoskoh
0
670
AtCoder Conference 2025
shindannin
0
960
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
0
840
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
790
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
180
Joys of Absence: A Defence of Solitary Play
codingconduct
1
270
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
110
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
0
1.8k
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.5k
Utilizing Notion as your number one productivity tool
mfonobong
2
200
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
sira's awesome portfolio website redesign presentation
elsirapls
0
120
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Navigating Team Friction
lara
191
16k
Transcript
Elixir/NervesでOpen JTalkを使い、 ラズパイに日本語をしゃべらせてみた open_jtalk_elixir の開発録 mnishiguchi
きっかけ • 友人のひとこと: 「Nervesでラズパイに日本語しゃべらせられない?」 • 地味にハードル高そう… • 元氣があれば何でもできる
Open JTalkとは • 日本語テキスト音声合成(Text to Speech, TTS)エンジン • CLIベースで軽量、組み込み向き •
構成要素 ◦ Open JTalk 本体(CLI) ◦ MeCab辞書(形態素解析・読み・アクセント) ◦ HTS 音声モデル(`.htsvoice`ファイル)
https://raspida.com/speech-synthesis/
目標 • 開発も運用も楽しい 🎉 • 実装が容易でかつ保守対応しやすいこと • 初期導入が簡単であること • 実行時の安全性を確保すること
• Nerves(組み込み)でも動く
None
Open JTalk を Elixir から使うには? • NIF(Native Implemented Function) ◦
高速だがVMごと落ちるリスクあり • Port ◦ 柔軟だけど I/O や引数管理が面倒 • System.cmd/3 ◦ シンプル ◦ 移植性高い ◦ クラッシュしても VM に影響なし
Open JTalk のビルド • 課題 ◦ MeCab / HTS /
Open JTalk など、依存関係の解決に一定の知識と 手間が必要 ◦ 辞書:約 100MB、音声モデル:約 2MB と、サイズもやや大きめ • 解決策 ◦ mix compile 時に Open JTalk を 自動ビルド ◦ 辞書・音声モデルを 標準で同梱 ◦ 環境変数で 外部の辞書/音声への切替に対応
クロスプラットフォーム対応 • Linux: ARM系 ◦ config.sub更新必要 • macOS ◦ 静的リンク不可→動的リンク
◦ aplay→afplay • Nerves ◦ MIX_TARGETでクロスコンパイル ◦ 容量制約あり • CI 環境での確認 ◦ Linux x86_64 ◦ Linux aarch64 ◦ macOS 14 (arm64, Apple Silicon)
論よりRUN
Nerves で使うとき • MIX_TARGET指定でクロスコンパイル • 辞書/音声: 開発は同梱、運用は外部配置 • 音声出力: Linuxはaplay,
ALSA設定要確認
まとめ • 日本語の音声合成を ローカル環境で Elixir で簡単に実現 • Linux / macOS
/ Nerves で動作 • GitHub: piyopiyoex/open_jtalk_elixir