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
19
Elixir/NervesでOpen JTalkを使い、 ラズパイに日本語をしゃべらせてみた
open_jtalk_elixir の開発録
Masatoshi Nishiguchi
September 24, 2025
Tweet
Share
Other Decks in Programming
See All in Programming
浮動小数の比較について
kishikawakatsumi
0
340
DSPy入門 Pythonで実現する自動プロンプト最適化 〜人手によるプロンプト調整からの卒業〜
seaturt1e
1
250
生成AIを活用したソフトウェア開発ライフサイクル変革の現在値
hiroyukimori
PRO
0
140
AI主導でFastAPIのWebサービスを作るときに 人間が構造化すべき境界線
okajun35
0
270
Event Storming
hschwentner
3
1.3k
24時間止められないシステムを守る-医療ITにおけるランサムウェア対策の実際
koukimiura
2
170
NetBSD+Raspberry Piで 本物のPSGを鳴らすデモを OSC駆動の7日間で作った話 / OSC2026Osaka
tsutsui
1
120
Go Conference mini in Sendai 2026 : Goに新機能を提案し実装されるまでのフロー徹底解説
yamatoya
0
360
Claude Codeと2つの巻き戻し戦略 / Two Rewind Strategies with Claude Code
fruitriin
0
190
受け入れテスト駆動開発(ATDD)×AI駆動開発 AI時代のATDDの取り組み方を考える
kztakasaki
2
430
Metaprogramming isn't real, it can't hurt you
okuramasafumi
0
130
CSC307 Lecture 06
javiergs
PRO
0
700
Featured
See All Featured
Building Applications with DynamoDB
mza
96
6.9k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
140
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
130
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
120
Bash Introduction
62gerente
615
210k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
63
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
210
Speed Design
sergeychernyshev
33
1.6k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.2k
Ruling the World: When Life Gets Gamed
codingconduct
0
160
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