2
自己紹介
p 何者?:
n 林 知樹 (情報科学博士/32歳/独身)
n ESPnetの開発・メンテをしています
p 仕事は?:
n COO @ Human Dataware Lab. Co., Ltd.
n Researcher @ TARVO Inc.
n Collaborative researcher @ NU
p 専門は?:
n 音声・環境音処理全般 (VC, TTS, etc.)
p 好きなモノは?:
n Custom Keyboard (最近は60%)
n (Neo) Vim
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
最近のお気に入り 60% (かわいい)
カスタムキーボード沼の住人
My neovim startup
Slide 3
Slide 3 text
3
本発表を聞いて得られるもの
音声処理ツールキット ESPnet の全貌を理解すべく、
以下の3つの項目 (+苦労話) を紹介します!
1. ESPnetの歴史
n 2017年のリリース以降の開発の歴史を振り返り
2. ESPnetで出来ること
n 2024年のESPnetで出来ることを紹介
3. ESPnetの最近の開発アイテムと今後の計画
n OWSMやESPnetEzなどの最近の開発トピックを紹介
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
ESPnetのコンセプトや出来ることをなんとなく理解し、
叩き台として触ってみたくなっていただけたら幸いです!
5
そもそもESPnetって何ですか?
ESPnet = Python Library + 実験レシピ
p PytorchをベースとしたPythonライブラリ
n End-to-End型のニューラルネットモジュール
n Kaldiのデータ構造を利用した共通のTrainerモジュール
n 任意の音声処理タスクが記述可能なTaskモジュール
p Kaldi-styleを受け継いだ実験レシピ
n 単一のシェルスクリプトの実行だけで再現実験が可能
n データの前処理・学習・評価などの全ての手順を内包
n 再現実験のハードルをできるだけガン下げ
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
高い拡張性から20個近い音声処理タスクをサポート
180以上のコーパスに対する250ものレシピが存在
Slide 6
Slide 6 text
6
ESPnetの誕生のきっかけ
p 苦行過ぎるHybrid方式の音声認識
n デコーディング部分が特に複雑で職人芸
n Kaldiのコードを解読するのが辛すぎ
n 表層上のPipe芸ですら辛い
p End-to-End型音声認識モデルの登場
n 摩訶不思議なC++コードに頼らなくても良いシンプルさ
n 系列から系列への変換として音声認識以外にも適応可
n なにより自分でスクラッチでモデルを作れる楽しさ!
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
の誕生
みんなにこの楽しさを共有しよう!
※ ちなみにこのESPnetのロゴはTakaaki Horiさん (現 Apple) の作
16
ESPnetの簡易年表 with レシピ数
1. 2017年: プライベート版の開発スタート
l 渡部さんがMERL時代に作っていたモノをベースにスタート
2. 2017年12月: OSS 版リリース
l 最初はChainerがバックエンドだった
3. 2017年末: Pytorch backend 誕生
l 苅田さんがPytorchの方が早いと言って1週間で作った
4. 2018年8月: ASR 以外のサポート
l ASR以外のモデルとしてTTSが学習できるように
5. 2019年: MT / ST / VC のサポート
l 扱えるタスクが段々と増えてきた!
6. 2020年5月: ESPnet2 の誕生
l 加茂さんの尽力により脱Chainer+柔軟なタスク設計+大規模分散学習を実現
7. 2021年~2023年: ESPnet2 の機能拡充
l SE / BSS / SVS / AVSR / S2ST / SLU / SSL / Diarization の追加
l より複雑なタスクのサポート (Multi-speaker ASRなど)
l ESPnet-ONNXの公開 (ONNX変換のサポート)
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
6
17
53
270
17
レシピ数
カウンター
6
Slide 17
Slide 17 text
17
ESPnetで大事にされていること
p 簡単に再現実験できるようにしよう!
n 各コーパス・各タスクごとにKaldi-styleのレシピを提供
n データの準備・前処理も全てレシピ内で実施
n とりあえずレシピを動かせば再現実験が可能
p 各音声処理タスクで統一的な作りにしよう!
n 実行方法やデータ構造を音声処理タスク間で統一化
n 普段はASRしかやらないけどな〜という人もサクッと
新しいタスクで実験することが可能
p やっぱり性能はSOTAを目指そう!
n なんだかんだやっぱり性能が大事
n 目ぼしいモデル構造が出るたびに主要タスクで検証
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
20
ESPnet2でサポートされているレシピ
p 2024年3月時点で 198 コーパス / 270 レシピ
n 研究ベンチマークとして使われるものは絶対あります!
n なかったら Issue を立ててください!
n 評価結果も学習済モデルも公開
p もちろん日本語データセットも豊富にサポート
n ASR: CSJ / Reazonspeech / Laboro-TV / Jtubespeech
n TTS: JSUT / JVS / つくよみちゃんコーパス
n SVS: JUST song / きりたんコーパス / その他諸々
p 自前データセットのレシピ化ももちろん可能
n 各種タスク用のTEMPLATEレシピあり
n Kaldi形式のデータディレクトリを整備するスクリプトを
書けば再現実験可能な自前レシピが完成!
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
24
TTSベンチマーク
p JSUTコーパスを利用したESPnetのモデルベンチマーク
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
読み上げ音声であれば自然音声と同等の自然性を実現!
T. Hayashi, et al. “Espnet2-tts: Extending the edge of tts research,” arXiv preprint arXiv:2110.07840, 2021 より引用
Slide 25
Slide 25 text
25
STベンチマーク
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
B. Yan, et al. “ESPnet-ST-v2: Multipurpose Spoken Language Translation Toolkit,” arXiv preprint arXiv:2304.04596, 2023 より引用
p ST / SST / S2ST のベンチマーク
n Must-C (for ST & SST / English -> X)
n CVSS-C (for S2ST / X -> English)
FAIRと同等以上の性能を実現!
28
肥大化し続けるリポジトリ
p 様々なタスクをサポートし続けた結果肥大化
n 全ての機能を詳細に把握している人ほぼいない説
n Main contributorたちも担当範囲は限定的
n ボスである渡部さんがふわっと大体把握ぐらい
p 様々な問題の発生
n 修正or新機能の追加でコンフィグの互換性がなくなる
n うっかりミスで他のタスクに影響してしまう
n 依存パッケージが増える + バージョン互換性がなくなる
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
人間によるチェックの限界の訪れ
Slide 29
Slide 29 text
29
テストコードが命綱
p 新機能実装とテストコードはセット
n モジュールに新オプションを追加 → ユニットテスト追加
n 新タスクを追加 → 統合テスト追加
n バグ修正 → 再発チェックテスト追加
n テストカバレッジをモニタして抜け漏れがないかチェック
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
ESPnetのPythonライブラリのテストカバレッジ
テストをサボっているやつが一発で可視化される
Slide 30
Slide 30 text
30
CIが命綱
p CI (Github Action) をとにかくフル活用
n Linter / Unit & Integration test / Configチェックを自動化
n GithubがOSSに対して大盤振る舞いなので使いまくる
n プライベートで換算すると大変なお金がかかっている
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
ESPnetで毎回テストしている組み合わせ / 主要OS・バージョンはある程度網羅
33
ESPnetに対する不満
p レシピのシェルスクリプト複雑すぎ問題
n そもそもシェルスクリプト書ける人が減少
n シェルスクリプトというだけで敬遠されがち
p Kaldi形式のデータに揃えるのめんどくさすぎ
n Python上で整形してそのままフィードしたい
n ちょこっとファインチューニングしたいだけなのに面倒
p Jupyter Notebookで作業したい
n ターミナルでコマンドを叩くのだるい
n ブラウザでNotebookをポチポチするだけが良い
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
Pythonネイティブにより優しい
ESPnet-Easy (ESPnetEz) を作ろう!
Slide 34
Slide 34 text
34
ESPnetEz
Pythonオンリーで完結するシンプルなESPnet
p Jupyter Notebook上での動作を想定して設計
p シンプルにファインチューン・学習だけしたい人向け
p シェルスクリプトフリーで初心者にも安心
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
どちらかの形式でPython上で
データを用意できれば
もう学習準備完了!
espnet/egsez を要チェック!
Slide 35
Slide 35 text
35
データ駆動離散シンボル系列レシピ
p SSL特徴量をクラスタリングして離散記号化
p 記号列を入力・出力系列としてモデルを学習
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
espnet/egs2/librispeech/asr2を要チェック!
X. Chang, et al. “Exploration of Efficient End-to-End ASR using Discretized Input from Self-Supervised Learning,” arXiv preprint arXiv:2305.18108, 2023 より引用
重複記号の削除・サブワード化で爆速で学習が可能!
(Librispeech 960hがシングルGPUで1日かからない!!)
Slide 36
Slide 36 text
36
Whisperを再現するプロジェクト OWSM スタート
Whisperでいいじゃん問題
OpenAI Whisperの特徴
p 680k hoursもの多言語データセットで学習
p 言語判定対応
p 発話レベルのタイムスタンプ対応 (≒ VAD)
p 英語への翻訳対応 (X→English)
p チャンクベースにより任意の長さの発話に対応
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
モデルしか公開されておらず1から再現することは不可能
l どんな学習データを使っているのか?
l どうやって学習させているのか?
l 潜在的なバイアスの問題があるのではないか?
Slide 37
Slide 37 text
37
OWSM (awesome!)
OWSM = Open Whisper-style Speech Model
p Whisperを全てOSSで再現するプロジェクト
n ESPnetでWhisper-styleの学習ができるように拡張
n すべてをオープンソースでリリースして再現可能に
p 大学レベルでは難しいレベルのGPUリソースを利用
n A100 を 120,000 時間分利用
n AWS (On-demand)換算で $400,000≒6,000万円
n リソースの兼ね合いから数回の試行のみ
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
40
今後の方針
p データ駆動型離散シンボル処理の強化
n 新しいレシピ asr2 / tts2 として開発を強化
p 再現可能な音声基盤のモデルの提供
n 再現性・説明可能性を持った基盤モデルを作りたい
p 基盤モデルをより使いまわしやすいような改良
n レシピはどちらかというとスクラッチ学習を前提
n ESPnet-Easyのような簡単に他のデータを使える形も模索
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
Slide 41
Slide 41 text
41
まとめ
2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」
音声処理ツールキット ESPnet の全貌を理解すべく、
以下の4つの項目 (+苦労話) を紹介しました!
1. ESPnetの歴史
n 2017年のリリース以降の開発の歴史を振り返り
2. ESPnetで出来ること
n 2024年のESPnetで出来ることを紹介
(おまけ) ESPnetのメンテナンス
n 肥大化するリポジトリのメンテナンスについて紹介
3. ESPnetの最近の開発アイテムと今後の計画
n OWSMやESPnetEzなどの最近の開発トピックを紹介
ESPnet触ってみたくなっていただけたら幸いです!