2K Views
September 08, 25
スライド概要
生成AIなんでも展示会 vol.4のLT会 資料
モバイルでも動く 軽量日本語ローカルTTSの作成と Unity向けライブラリの開発 ~ piper-plusとuPiperの開発の秘話 ~ 2025/09/06 ようさん 1
自己紹介 お仕事 ● スマホゲームのUnityエンジニア ● 音声合成 を使ったエンタメ作り 個人 ようさん ● インディーゲーム制作 ● 音声合成や歌声分析 2
3
4
5
ローカルで音声合成をする場合、 外部ソフトを使わないといけないのか? 6
Unityでアプリを作るときは、 音声合成ソフト・ライブラリを 起動してもらう? 7
スマホゲームでキャラクターに 自由に話してほしいのに.. 8
1. 日本語の音声合成がPC/スマホで動く 2. 独自のデータで追加学習ができる 3. Unityだけで日本語音声合成がしたい そんなライブラリが欲しい!! 9
10
作りました! piper-plus uPiper 11
piper-plus ラズパイで動く VITSベースの 軽量 TTS(piper)のfork版 uPiper piper-plusのUnityライブラリ対応 ● 改善したこと ● 日本語対応 ● 学習環境の改善 ● カスタム辞書対応 ● その他 etc… 多言語対応の軽量 TTSモデル PC(windows,mac,linux)とスマホ (Android, iOS)のネイティブプラグイン対 応 ● 高速で実行される マルチプラットフォームで動く 多言語TTSライブラリ 12
piper-plus ラズパイで動く VITSベースの 軽量 TTS(piper)のfork版 uPiper piper-plusのUnityライブラリ対応 ● 改善したこと ● 日本語対応 ● 学習環境の改善 ● カスタム辞書対応 ● その他 etc… 多言語対応の軽量 TTSモデル PC(windows,mac,linux)とスマホ (Android, iOS)のネイティブプラグイン対 応 ● 高速で実行される マルチプラットフォームで動く 多言語TTSライブラリ 13
背景 ● 日本語対応のローカルTTSがまだ少ない ● 軽量なものだと限られてくる ● 自由に学習可能なものは割と少ない ○ 学習コードまで出てこない 14
piper-plusの経緯 対応する選択肢 1. Unity公式のjetsを日本語化対応 2. StyleTTS2のモバイル対応 3. piper-ttsの日本語対応 15
piper-plusの経緯 対応する選択肢 1. Unity公式のjetsを日本語化対応 2. StyleTTS2のモバイル対応 3. piper-ttsの日本語対応 16
piper-plusの日本語対応 ● pyopenjtalkで日本語対応 ● 学習環境を改善 ● 日本語のモデルを一から学習 17
piper-plusの日本語対応 課題 ● モデルサイズが小さいため精度が出せない ● アクセントなどがちょっと悪い ● 多言語モデルが存在しない → 今後改善を予定 18
piper-plus デモ 19
piper-plus 日本語事前学習モデル 20
piper-plus ラズパイで動く VITSベースの 軽量 TTS(piper)のfork版 uPiper piper-plusのUnityライブラリ対応 ● 改善したこと ● 日本語対応 ● 学習環境の改善 ● カスタム辞書対応 ● その他 etc… 多言語対応の軽量 TTSモデル PC(windows,mac,linux)とスマホ (Android, iOS)のネイティブプラグイン対 応 ● 高速で実行される マルチプラットフォームで動く 多言語TTSライブラリ 21
背景 ● Unityで使える軽量TTSモデルがない ○ Unity公式のjetsは英語のみ ○ StyleTTS2の日本語対応は開発途中 ○ piper.unityはwindowsのみ 22
uPiper 開発 ● ゲーム、AIキャラクター、対話などで使いたい ● マルチプラットフォームで動いてほしい → PC(Windows,Mac) + スマホ(Android,iOS) で動かしたい 23
uPiper ● AI Interface(旧Sentis)対応 ● プラットフォーム別プラグイン対応 ● 日本語・英語の辞書を内包 24
uPiper g2p プラグイン対応 ● 日本語・英語はそれぞれg2pをC#で動くものを実装 ● Windows,Mac,Linux,Androidで動かすにはプラグイン ○ ○ ○ windows : dll mac : dylib android : so 25
uPiper g2p プラグイン対応 ● 日本語のOpenjtalk ● 英語は 以下の順に処理 1. Flite 2. EnhancedEnglishPhonemizer 3. SimpleLTSPhonemizer → espeak-ngは GPV v3ライセンスなので、ライセンス汚染の回避 26
uPiper Openjtalk プラグイン対応 Unity C# (マネージドコード) ↓ P/Invoke ネイティブC API ラッパー ↓ OpenJTalk/Mecab (C++実装) ↓ 辞書ファイル 27
uPiper Package Manger 配置問題 ● 日本語・英語の辞書の配布 ● プラグインの配布 → 辞書は100MBもあるので、package managerに入れると重たく なる 28
uPiper Package Manger 配置問題 29
uPiper 1. AIキャラクター /接客 a. 特定の声に追加学習可能 (全てがOSS) 2. ゲームのキャラクター音声 a. 21世紀の通信と映像アクセシビリティ法 (CVAA), b. 欧州アクセシビリティ法 (EEA) 3. カーナビやロボットなどのエッジ端末の音声 a. ラズパイでも動く軽量モデル 30
その他ゲームエンジン対応(予定) 日本語でPC/スマホで動く 独自のデータで追加学習ができる そんなライブラリが欲しい!! 31