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
自力でTTSモデルを作った話
Search
Tatsuya Ando
February 22, 2025
Programming
0
64
自力でTTSモデルを作った話
オープンソースカンファレンス2025 Tokyo Springの東海道らぐLT大会で発表したスライドです
Tatsuya Ando
February 22, 2025
Tweet
Share
More Decks by Tatsuya Ando
See All by Tatsuya Ando
GPUパススルーでVMからVRしてみよう
zgock999
0
2.4k
Other Decks in Programming
See All in Programming
Immutable ActiveRecord
megane42
0
140
Pulsar2 を雰囲気で使ってみよう
anoken
0
240
第3回 Snowflake 中部ユーザ会- dbt × Snowflake ハンズオン
hoto17296
4
370
GoとPHPのインターフェイスの違い
shimabox
2
190
技術を根付かせる / How to make technology take root
kubode
1
250
パスキーのすべて ── 導入・UX設計・実装の紹介 / 20250213 パスキー開発者の集い
kuralab
3
800
Rails アプリ地図考 Flush Cut
makicamel
1
120
AWS Organizations で実現する、 マルチ AWS アカウントのルートユーザー管理からの脱却
atpons
0
150
CI改善もDatadogとともに
taumu
0
120
『GO』アプリ バックエンドサーバのコスト削減
mot_techtalk
0
150
pylint custom ruleで始めるレビュー自動化
shogoujiie
0
120
GAEログのコスト削減
mot_techtalk
0
120
Featured
See All Featured
Statistics for Hackers
jakevdp
797
220k
GraphQLとの向き合い方2022年版
quramy
44
13k
Docker and Python
trallard
44
3.3k
Faster Mobile Websites
deanohume
306
31k
Unsuck your backbone
ammeep
669
57k
Being A Developer After 40
akosma
89
590k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
960
KATA
mclloyd
29
14k
Into the Great Unknown - MozCon
thekraken
35
1.6k
The Pragmatic Product Professional
lauravandoore
32
6.4k
Designing Experiences People Love
moore
140
23k
Agile that works and the tools we love
rasmusluckow
328
21k
Transcript
自力で TTS(用モデル)を 作った話 東海道らぐ2025 Tokyo Spring
お前誰よ ▪ ・安藤と申します ▪ ・openSUSEユーザー会名古屋ドメイン ▪ ・体調の都合でしばらくお休みしてました
最近はAI関係でよく遊んでます ▪ ・画像生成AIで遊んだりとか ▪ ・ローカルでLLM建てたりとか ▪ ・ついに音声合成にも手を出して(今回はここの話)
Zonosという音声生成システム ▪ ・2月頭に登場したバリバリの新星 ▪ ・いわゆるワンショットTTS/ボイスクローナー ▪ ・同種のいろいろよりもかなり高いクローン性能
いいことばかりでもない ▪ ・出力がかなりガチャで良い時は良いが、ひどい時もある ▪ ・そもそも一部日本語を読ませると出力が破綻する ▪ ・ただ、それで見切ってしまうにはあまりにも惜しいクローン性能
よろしい、ならば ▪ ・まっとうに日本語が読める学習系TTSの素材吐かせればよくね?
Style-Bert-VITS2 ▪ ・最近人気の日本語TTS ▪ ・中国生まれのTTS、Bert-VITSの日本語特化fork ▪ ・元テキストの文脈から、ある程度感情分析しながら発音 ▪ ・読みのbackendにpyopenjtalkを使っており、読めない日本語があった
りとかはさすがにない ▪ ・学習させるには延べ10~30分ぐらいの音声素材が必要 ▪ ・↑この素材をZonosに作らせたらええやん!
ITAコーパス ▪ https://github.com/mmorise/ita-corpus ▪ ・日本語に登場する音素を網羅した読み上げ用テキスト ▪ ・100個の短い文章で構成されている ▪ ・テキストそのものはCC0
▪ ・Style-Bert-VITS2の学習元作成ではスタンダード ▪ ・Zonosにこれを読ませよう
ダメでした ▪ ・Zonosの日本語の音素化が不完全なため、半分ぐらいの文章で出力が 破綻する ▪ ・そもそもITAコーパスがTTS苛めといっても良いぐらい意地悪な内容 ▪ 「どーすんの、このお店。完ッ全に閑古鳥が鳴いちゃってるじゃない。」 ▪
「ひぇーん。びぇーん。ぴぇーん。」 ▪ 「ラーテャン。」 ▪ ↑↑テスト用データとしては極めて正しい
なんで破綻するのか ▪ ・Zonosの音素化バックエンドはespeak-ng ▪ ・かなーり昔からある多言語対応TTS ▪ ・日本語サポートを一応しているがめっちゃ不完全 ▪ ・不完全なサポートのまま日本語辞書は3年前から未更新
▪ ・「とても恐ろしい集団真理である...そう、誰もメンテをしていないのである」 ▪ ・対策...するか
いろいろ考えた、いろいろ試した ▪ ・backendをpyopenjtalkにする? →そもそもZonosがespeak-ngの不完全な音素で学習してるので pyopenjtalkが吐いた音素からうまく推論できない ▪ ・espeak-ngをメンテする? →そもそもZonosがespeak-ngの不完全な音素で学習(略) ▪
・espeak-ngが破綻した音素を吐いたら後処理で補正する? →そもそもZonosがespeak-ngの不(略)
超絶雑ハック注意 ▪ ・espeak-ngはカタカナしか読めないのでZonosではSudachiを使ってカ タカナ化して渡している ▪ ・この時点でespeak-ngが破綻するカタカナパターンをフィルタする (「ティ」を「チ」に、「ヴィ」を「ビ」にetc..) ▪ ・多少滑舌が怪しくなるけどエラーで破綻するよりはましやろがい!
というわけでパッチ当てた ▪ https://github.com/zgock999/Zonos-Ja ▪ ・日本語対策雑パッチ適用 ▪ ・ついでにうちのQuadro RTX5000で動くようにfp16で動くモードを追加。 (デフォルトはbfloat16なのでRTX30xx以降専用)
さあ、データ作るべ ▪ ・openGameArtからCC0の英語ボイスを調達 ▪ ・バッチ処理でITAコーパスを一括で出すpythonコードを記述 ▪ ・数回の生成ガチャで出来の良い音声を抽出 ▪ ・Style-Bert-VITS2で学習(RTX3060で3時間程度)
できますた ▪ Zonoko Japansese Voice for Style-Bert-VITS2 ▪ https://huggingface.co/zgock/style-bert-vits2-zonoko-cc0
▪ https://hub.aivis-project.com/aivm-models/7fc08a41-b64d-456d- 8b22-8e1284674775