パソナについて
記事検索

自然で表現力豊かな日本語音声合成:ESPnet入門

株式会社パソナWeb/AIチームの朱志翔です。
音声合成技術は、近年目覚ましい進化を遂げています。もはや機械的な音声ではなく、人間の声と遜色ない、自然で感情豊かな音声合成が可能になりました。
本記事では、高品質な音声合成を実現するオープンソースプロジェクト「ESPnet」と、その簡単な利用方法について解説します。

自然で表現力豊かな日本語音声合成:ESPnet入門

株式会社パソナWeb/AIチームの朱志翔です。
音声合成技術は、近年目覚ましい進化を遂げています。もはや機械的な音声ではなく、人間の声と遜色ない、自然で感情豊かな音声合成が可能になりました。
本記事では、高品質な音声合成を実現するオープンソースプロジェクト「ESPnet」と、その簡単な利用方法について解説します。

2025/03/03 UP

 

ESPnetの概要

ESPnetは、最先端の音声処理技術を提供するオープンソースプロジェクトです。音声合成や音声認識など、幅広い機能をサポートしており、特に以下の特徴があります:

  • 多言語対応(日本語を含む)
  • 最新の音声処理技術の実装
  • 活発なコミュニティによる継続的な改善
  • MIT ライセンスによる自由な利用

ソースコードは下記のGitHubリポジトリで公開されています:

手軽に体験! ESPnetによる音声合成

ESPnetを用いた音声合成は、高度な専門知識がなくても、比較的簡単に体験できます。ここでは、公開済みの日本語音声合成モデルを用いた、簡単な音声合成手順をご紹介します。

また、ESPnetでは自分の音声合成モデルを学習することもできますが、セットアップ方法が比較的に複雑で、大量の学習データとハイスペックなGPUマシンも必要です。本記事では範囲外とし、既存のモデルを利用した音声合成に焦点を当てます。

ステップ1:Python環境の確認

ESPnetを利用するには、Python 3.7以上が必要です。

ターミナルまたはコマンドプロンプトで python -V を実行し、Pythonのバージョンを確認します。

$ python -V
Python 3.9.13

インストールされていない場合は、Python公式サイト からダウンロードしてインストールしてください。

ステップ2:ESPnetと関連ツールのインストール

  1. Pythonのインストールが完了したら、以下のコマンドを実行し、ESPnetと関連ツールをインストールします。
pip install espnet espnet_model_zoo pyopenjtalk
  • espnet: ESPnet本体
  • espnet_model_zoo: 事前学習済みのESPnetモデルを提供するツールで、高品質な音声合成を手軽に実現するために不可欠です。
  • pyopenjtalk: ESPnet内部で日本語テキスト(漢字、ひらがなとカタカナ)を発音記号へ変換するために必要なツールです。日本語の自然な読み上げを実現するために重要な役割を果たします。

公開されている事前学習済のESPnetモデルの一覧はESPnet Model ZooのGitHubリポジトリのtable.csvで確認できます。今回は、日本語音声合成モデルとしてkan-bayashi/jsut_vits_prosodyを利用します。このモデルはJSUTコーパス(音声学習データの集合)をVITSで学習されています。

ステップ3:音声合成の実行

  1. 以下のPythonコードをコピーし、テキストエディタに貼り付けます。
  2. text 変数に、音声合成したいテキストを入力します。
  3. ファイルを synthesize.py などの名前で保存します。
import soundfile
from espnet2.bin.tts_inference import Text2Speech

# 事前学習済みの日本語音声合成モデルを読み込み
text2speech = Text2Speech.from_pretrained("kan-bayashi/jsut_vits_prosody")

# 音声合成したいテキスト
text = "パソナはお客様の課題に寄り添い、メソッドとテクノロジーを掛け合わせることで、お客様の状況にあった幅広い提案ができます。"

# 音声合成を実行
speech = text2speech(text)["wav"]

# 音声ファイルを保存
soundfile.write("output.wav", speech.numpy(), text2speech.fs, "PCM_16")
  1. ターミナルで python synthesize.py を実行します。

初回実行時には、モデルや辞書のダウンロードに数分かかる場合があります。その場合、以下のようなメッセージが表示されます。

https://zenodo.org/record/5521354/files/tts_train_vits_raw_phn_jaconv_pyopenjtalk_prosody_train.total_count.ave.zip?download=1:   1%| | 2.7

モデルのダウンロードが完了すると、次はopen_jtalkの辞書をダウンロードします。

Downloading: "https://github.com/r9y9/open_jtalk/releases/download/v1.11.1/open_jtalk_dic_utf_8-1.11.tar.gz"
100%|████████████████| 22.6M/22.6M [00:03<00:00, 6.07MB/s]
Extracting tar file

処理が完了すると、output.wav という音声ファイルが生成されます。

音声はこちら!

いかがでしょうか?まるで人間が話しているかのような自然な音声合成が実現できたかと思います。

ちなみに、セリフはパソナのDX推進ソリューションページから引用しました。

まとめ

本記事では、ESPnetを用いた日本語音声合成の方法について解説しました。ESPnet Model Zooによる事前学習済みモデルと、pyopenjtalkによる日本語テキストの読み上げ機能を組み合わせることで、わずか数行のコードで高品質な音声合成を実現できます。

ESPnetは、今後ますます注目を集めることでしょう。音声合成技術は、顧客対応の自動化や、より人間らしいAIの開発など、様々な分野で応用が期待されています。

弊社では、これまでにも音声合成技術を活用した様々なプロジェクトに取り組んできました。例えば、自社サービスのナレーションの自動生成や、オンラインセミナーの字幕生成などに活用し、業務の効率化と品質向上を実現しています。

音声合成技術の導入にご興味のある方は、ぜひ弊社までお問い合わせください。豊富な実績と知見を活かし、お客様のニーズに合わせた最適なソリューションをご提案いたします。

ぜひこの機会に、ESPnetを活用し、音声技術の可能性を探求してみて下さい。

また、弊社は音声合成技術の研究開発事例があり、需要がありましたらぜひご相談ください。

 

この記事を書いたメンバー

朱-氷川丸

Web/AIチーム 朱志翔