【音声学習・再現】GPT-SoVITS 〜ailia SDK×Mac×PythonでTTS10分実装〜

音声学習・再現の実装にはさまざまな方法がありますが、ailia SDK(アイリアSDK)を使えば、複数のTTS(Text-to-Speech)モデルを数分で簡単に試すことができます。

この記事は、以下のような方に特におすすめです:

● TTSの各種モデルを迅速に試してみたい方
● プログラミング初心者でAIに興味がある方
● 音声学習・再現技術を自社サービスに組み込みたい方

本記事では、Apple Silicon搭載Macを使い、Pythonで環境構築から音声学習・再現モデルの実装までを約10分で完了する手順を解説します。

1. ailia SDKとは?

AIモデルの実装を簡単に行えるSDKです。以下の特徴があります:

  • 高速な推論エンジンによる、スムーズな実行
  • 画像認識、物体検出、姿勢推定など、370以上の豊富な事前学習済みモデル
  • Mac、Windows、Linux、組み込みボード(Jetson、Raspberry Pi)まで対応したクロスプラットフォーム
  • 多言語対応(Python/C++/Unity(C#)/Java(JNI)/Kotlin/Rust/Flutter)
  • GPU対応(CUDA、Vulkan、Metal)

2. 環境構築(所要時間:約1分)

動作条件

  • Python 3.6 以降

インストール手順

  1. まず、ailia SDKをインストールします:
    pip3 install ailia
  2. サンプルコードをダウンロードして、対象ディレクトリに移動します:
    git clone https://github.com/axinc-ai/ailia-models
    cd ailia-models
  3. 必要な依存ライブラリをインストールします:
    pip3 install -r requirements.txt
    pip3 install -r audio_processing/requirements.txt

3. 概要把握

本記事では、以下の2つのモデルを順に紹介します。通常、GPT-SoVITSのインストールはDockerやConda環境整備など大変ですが、ailia SDKなら非常に簡単に実装できます。ぜひ、さまざまなテキストで出力結果を試してみてください:

  • GPT-SoVITS
  • GPT-SoVITS V2

両モデルの主な違い:

GPT-SoVITSは、テキストから音声を生成するTTS技術で、特にゼロショット(短いサンプル音声だけで音声クローニングが可能)やフューショット(少量のデータでモデルを微調整)機能が特徴です。一方、GPT-SoVITS V2はその進化版として次のような改良が加えられています:

  • 音声品質の向上:V2では音声生成の自然さやリアルさが改善され、特に発音の滑らかさや感情表現の再現性が向上し、より人間らしい声を実現
  • 処理速度と効率:推論やトレーニングの効率が最適化され、同じハードウェア環境でも生成速度が向上
  • モデル構造とアルゴリズムの改良:内部のニューラルネットワーク構造や学習アルゴリズムが改良され、音声特徴をより高精度に捉えることが可能に
  • 多言語対応の強化:元のGPT-SoVITSでも多言語推論が可能でしたが、V2では言語間の変換精度や対応範囲がさらに向上
  • 使いやすさの改善:WebUIや関連ツールの操作性が向上し、モデル設定や音声合成プロセスがより直感的に

簡潔に言えば、GPT-SoVITS V2は初代モデルの「高品質なゼロショットTTS」というコンセプトを継承しつつ、音質、速度、精度、使いやすさの面で全体的に進化したバージョンです。本記事ではGPT-SoVITS初代モデルを主軸に扱いますが、お使いの環境が許すようであれば、最新技術のV2の利用をお勧めします。

4. モデル実装

4.1 GPT-SoVITSモデル(所要時間:約8分)

  1. 環境準備:
    • ailia-modelsリポジトリ内の該当フォルダに移動します:
      cd diffusion/audio_processing/gpt-sovits
  2. サンプル実行:
    • 以下のコマンドを実行します。初回実行時は、 onnx ファイルと prototxt ファイルが自動的にダウンロードされるため、多少時間が掛かります。
      python3 gpt-sovits.py
    • 実行が成功すると、「output.wav」という音声ファイルが同一フォルダ内に生成されます。再生すると「ax株式会社ではAIの実用化のための技術を開発しています」という音声が流れます。
    • この音声は、「reference_audio_captured_by_ax.wav」という下記サンプル音声データから話者の声質を学習し、「ax株式会社ではAIの実用化のための技術を開発しています」という指定したテキストを読み上げたものです。
  3. カスタム設定を試す:
    • 同じ参照音声から、異なるテキストで音声を生成してみましょう:
      python3 gpt-sovits.py -i "音声合成のテストを行なっています。" --ref_audio reference_audio_captured_by_ax.wav --ref_text "水をマレーシアから買わなくてはならない。"
    • 英語での出力も問題なく行えます:
      python3 gpt-sovits.py -i "Hello world. We are testing speech synthesis." --text_language en --ref_audio reference_audio_captured_by_ax.wav --ref_text "水をマレーシアから買わなくてはならない。" --ref_language ja
    • 別の話者の声を参照したい場合は、以下のように別の音声ファイルを指定します:
      python3 gpt-sovits.py -i "音声合成のテストを行なっています。" --ref_audio test.wav --ref_text "こんにちは、今日は良い天気ですね。"

4.2 GPT-SoVITS V2モデル(所要時間:約1分)

  1. 使用方法:
    • 基本的な使い方はGPT-SoVITSと同じです。まず、以下のフォルダに移動します:
      cd diffusion/audio_processing/gpt-sovits
    • V2の指定は簡単で、以下のようにファイル名を変えるだけです。
      python3 gpt-sovits-v2.py

5. 発展編:ゼロベースから自分で工夫

  1. 概要
    • 自分でゼロからコードを書いて、さまざまなパターンを試してみましょう。
  2. 環境準備:
    • まず、必要なライブラリをインストールします:
      pip3 install ailia
      pip3 install ailia_voice
    • ailia_voiceについての補足:
      • ailia-modelsのgpt-sovitsでは、g2pやpyopenjtalkなどの外部ライブラリに依存しているが、これらへの依存がありません。
      • 前処理と後処理を統合しており、もっとシンプルなコードで音声合成が書けます。
      • pythonだけでなくc++やflutterからも使えます。
    • 下記のようなシンプルなコードを「test.py」として保存します:
      import ailia_voice

      import librosa
      import time
      import soundfile

      import os
      import urllib.request

      # Load reference audio
      ref_text = "水をマレーシアから買わなくてはならない。"
      ref_file_path = "reference_audio_girl.wav"
      if not os.path.exists(ref_file_path):
      urllib.request.urlretrieve(
      "",
      "reference_audio_girl.wav"
      )
      audio_waveform, sampling_rate = librosa.load(ref_file_path, mono=True)

      # Infer
      voice = ailia_voice.GPTSoVITS()
      voice.initialize_model(model_path = "./models/")
      voice.set_reference_audio(ref_text, ailia_voice.AILIA_VOICE_G2P_TYPE_GPT_SOVITS_JA, audio_waveform, sampling_rate)
      buf, sampling_rate = voice.synthesize_voice("こんにちは。今日はいい天気ですね。", ailia_voice.
      AILIA_VOICE_G2P_TYPE_GPT_SOVITS_JA)
      #buf, sampling_rate = voice.synthesize_voice("Hello world.", ailia_voice.AILIA_VOICE_G2P_TYPE_GPT_SOVITS_EN)

      # Save result
      soundfile.write("output.wav", buf, sampling_rate)
    • 以下のコマンドを実行すると、「こんにちは。今日はいい天気ですね」という音声ファイル「output.wav」が生成されます:
      python3 test.py
    • コードの一部をコメント解除することで、英語の音声合成も試せます。

6. 実用上の注意点

  • リソース管理
    • Macの機種によっては処理が遅くなる可能性があります。特に古い機種では注意が必要です。
  • プライバシーへの配慮
    • 個人の音声データを使用する場合は、必ず事前に本人の同意を得るようにしてください。

7. まとめ

わずか10分で、GPT-SoVITS系の高品質な音声学習・再現モデルを実装することができました!

機械学習の進化により、AIフレームワークは推論の高速化と使いやすさを両立させています。ailia SDKは、この他にも370以上の事前学習済みモデルを活用でき、画像認識、物体検出、自然言語処理など幅広い分野に対応しています。

「高速」「使いやすさ」「豊富なモデル」を特徴とするailia SDKは、AIを実装する際の強力なツールとなるでしょう。ぜひ、ご自身の開発プロジェクトでお試しください。

8. 参考リンク

土橋克寿

証券会社、ビジネス誌副編集長を経て2013年に独立。欧米中印のスタートアップ取材や、各国首脳・テック企業幹部へのインタビューを多数実施。Yahoo!ニュース エキスパートなど国内外メディアで執筆。2018年より株式会社クロフィー代表取締役として、AI開発・PRコンサルティングなどを手掛ける。
https://news.yahoo.co.jp/expert/authors/dobashikatsutoshi
https://x.com/dobatty

SHARE THIS ARTICLE