Slide 1

Slide 1 text

1 音声処理ツールキットESPnetの 現在と未来 株式会社 Human Dataware Lab. COO / 情報科学博士 林 知樹 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」

Slide 2

Slide 2 text

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のコンセプトや出来ることをなんとなく理解し、 叩き台として触ってみたくなっていただけたら幸いです!

Slide 4

Slide 4 text

4 ESPnetの歴史 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」

Slide 5

Slide 5 text

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) の作

Slide 7

Slide 7 text

7 End-to-Endで何でも(?)作れる! p 様々な音声タスクを系列から系列への変換として表現 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」 𝐗 = (𝐱! , 𝐱" , … , 𝐱# ) 𝐘 = (𝐲! , 𝐲" , … , 𝐲$ ) 𝑓(+) 入力系列 出力系列 End-to-Endネットワーク

Slide 8

Slide 8 text

8 End-to-Endで何でも(?)作れる! p 様々な音声タスクを系列から系列への変換として表現 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」 𝐗 = (𝐱! , 𝐱" , … , 𝐱# ) 𝐘 = (𝐲! , 𝐲" , … , 𝐲$ ) 𝑓(+) 音声 テキスト End-to-Endネットワーク 音声認識 (ASR)

Slide 9

Slide 9 text

9 End-to-Endで何でも(?)作れる! p 様々な音声タスクを系列から系列への変換として表現 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」 𝐗 = (𝐱! , 𝐱" , … , 𝐱# ) 𝐘 = (𝐲! , 𝐲" , … , 𝐲$ ) 𝑓(+) テキスト 音声 End-to-Endネットワーク テキスト音声合成 (TTS)

Slide 10

Slide 10 text

10 End-to-Endで何でも(?)作れる! p 様々な音声タスクを系列から系列への変換として表現 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」 𝐗 = (𝐱! , 𝐱" , … , 𝐱# ) 𝐘 = (𝐲! , 𝐲" , … , 𝐲$ ) 𝑓(+) Noisy音声 Clean音声 End-to-Endネットワーク 音声強調 (SE)

Slide 11

Slide 11 text

11 End-to-Endで何でも(?)作れる! p 様々な音声タスクを系列から系列への変換として表現 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」 𝐗 = (𝐱! , 𝐱" , … , 𝐱# ) 𝐘 = (𝐲! , 𝐲" , … , 𝐲$ ) 𝑓(+) テキスト 他言語テキスト End-to-Endネットワーク 機械翻訳 (MT)

Slide 12

Slide 12 text

12 End-to-Endで何でも(?)作れる! p 様々な音声タスクを系列から系列への変換として表現 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」 𝐗 = (𝐱! , 𝐱" , … , 𝐱# ) 𝐘 = (𝐲! , 𝐲" , … , 𝐲$ ) 𝑓(+) 音声 他言語テキスト End-to-Endネットワーク 音声翻訳 (ST)

Slide 13

Slide 13 text

13 End-to-Endで何でも(?)作れる! p 様々な音声タスクを系列から系列への変換として表現 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」 𝐗 = (𝐱! , 𝐱" , … , 𝐱# ) 𝐘 = (𝐲! , 𝐲" , … , 𝐲$ ) 𝑓(+) 音声 他言語音声 End-to-Endネットワーク 音声to音声翻訳 (S2ST)

Slide 14

Slide 14 text

14 End-to-Endで何でも(?)作れる! p 様々な音声タスクを系列から系列への変換として表現 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」 𝐗 = (𝐱! , 𝐱" , … , 𝐱# ) 𝐘 = (𝐲! , 𝐲" , … , 𝐲$ ) 𝑓(+) 歌詞・楽譜情報 歌声 End-to-Endネットワーク 歌声合成 (SVS)

Slide 15

Slide 15 text

15 End-to-Endで何でも(?)作れる! p 様々な音声タスクを系列から系列への変換として表現 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」 𝐗 = (𝐱! , 𝐱" , … , 𝐱# ) 𝐘 = (𝐲! , 𝐲" , … , 𝐲$ ) 𝑓(+) 入力系列 出力系列 End-to-Endネットワーク End-to-Endには 自分で作る楽しさが溢れている!

Slide 16

Slide 16 text

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の現在と未来」

Slide 18

Slide 18 text

18 ESPnetで出来ること 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」

Slide 19

Slide 19 text

19 ESPnet2でサポートされているタスク 1. 音声認識 2. テキスト音声合成 3. (マルチチャネル) 音声強調 4. (マルチチャネル) 音源分離 5. 機械翻訳 6. 音声翻訳 7. S2ST 8. 歌声合成 9. 話者認識 10. 音響イベント検出 11. 意図推定 (+スロットフィリング) 12. 感情分類 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」 13. 自己教師あり学習 14. ASVSpoof 15. 多話者音声認識 16. 音声強調+音声認識 17. 音声強調+音声翻訳 18. 音声強調+意図推定 19. Target Speaker Extraction とりあえずレシピを動かせば 全部自分で再現実験をできます! 学習済みモデルを 動かしたいだけなら 数行で実現できます!

Slide 20

Slide 20 text

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の現在と未来」

Slide 21

Slide 21 text

21 再現実験レシピの動かし方 p 慣れれば10秒で再現実験を開始可能! 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」 Slurm (ジョブスケジューラー) や tensorboard / wandb (実験ログ可視化) との連携も可能! すべてのタスクが同一のフォーマットの実行スクリプトに!

Slide 22

Slide 22 text

22 学習済みモデルの使い方 p HuggingFaceのtransformersと同じノリで使えます! p ESPnet-ONNXと連携してONNX化して使うことも! 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」 ※ 一部のモデルは変換がサポートされていません

Slide 23

Slide 23 text

23 ASRベンチマーク p Librispeech 960h WER (追加学習データなし) 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」 Toolkit dev_clean dev_other test_clean test_other Facebook wav2letter++ 3.1 10.1 3.4 11.2 RWTH RASR 2.9 8.8 3.1 9.8 Nvidia Jasper 2.6 7.6 2.8 7.8 Google SpecAug. N/A N/A 2.5 5.8 ESPnet Transformer 2.2 5.6 2.6 5.7 Google Conformer N/A N/A 1.9 3.9 ESPnet E-Branchformer N/A N/A 1.9 3.7 巨大テック企業たちに 対抗しうる性能を実現!

Slide 24

Slide 24 text

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と同等以上の性能を実現!

Slide 26

Slide 26 text

26 楽しいベンチマークがいっぱい 各タスクの主要レシピに実験結果がたくさん! 眺めるだけでも知見がたまるかも! 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」 https://github.com/espnet/espnet/tree/master/egs2 にアクセス! ESPnet自体は使わなくても ハイパラの参考になるかも? 各レシピのREADMEに結果と 学習済みモデルリンクあり!

Slide 27

Slide 27 text

27 (番外編) ESPnetのメンテナンス 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」

Slide 28

Slide 28 text

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・バージョンはある程度網羅

Slide 31

Slide 31 text

31 さらなる並列化の必要性 p テストが増えすぎてCIにかかる時間が増大 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」 一番網羅的にテストしているUbuntuでのCIの所要時間 人間が待てる時間の限界を超えつつある (※ ちなみにプライベートリポの金額に換算すると1回のCIを通しで行うと3000円ぐらい毎回飛んでいっていることに…)

Slide 32

Slide 32 text

32 最近のESPnetの取り組み 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」

Slide 33

Slide 33 text

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の現在と未来」

Slide 38

Slide 38 text

38 OWSMレシピ&モデル試せます p v1 / v2 / v3 / v3.1 が公開中 n egs2/owsm_/s2t1 を要チェック! 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」 最新のOWSM v3.1はアジア圏の言語に対しては Whisper-mediumを上回る性能を発揮! (もちろんタイムスタンピング・チャンクデコーディング・翻訳も可能!)

Slide 39

Slide 39 text

39 ESPnetの今後 2024/03/01 音声言語情報処理合同研究発表会 「音声処理ツールキットESPnetの現在と未来」

Slide 40

Slide 40 text

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触ってみたくなっていただけたら幸いです!