WhisperSpeechのセットアップと使用法:FFmpegとCUDAを活用した効率的な環境構築

Whisper Speechを以前jupyter notebookで使用する方法を紹介しました。

ウィスパースピーチ(WhisperSpeech)は、音声合成技術を利用してテキストを音声に変換するツールです。以下に、ウィスパースピーチが持つ主な機能をいくつか挙げます。

WhisperSpeechの主な機能

  1. テキストから音声への変換:
    • 入力されたテキストを、選択した声で音声に変換します。この機能は、ナレーションや音声コンテンツの制作に便利です。
  2. 音声クローン機能:
    • 特定の人の声をサンプルとして使用し、その声に似た音声を生成することができます。そう、特定の声で新しいテキストを読ませることが可能です。
  3. 感情表現:
    • 音声合成において、感情を表現することができます。たとえば、喜びや悲しみ、驚きなどの感情を音声に反映させることが可能です。
  4. リアルタイム合成:
    • テキストをリアルタイムで音声に変換できるため、即時性が求められる場面でも活用できます。
  5. カスタム音声モデルの作成:
    • ユーザーが独自の音声モデルをトレーニングし、特定の用途に合わせた音声を生成することができます。
  6. スピーチの速度調整:
    • 合成された音声のスピードを調整することができ、自然な話し方や特定の用途に合わせた速度での音声出力が可能です。
  7. 音声スタイルのカスタマイズ:
    • 音声のピッチやトーンを調整して、よりカスタマイズされた音声を生成することができます。

これらの機能を活用して、さまざまなシーンでウィスパースピーチを活用できることが考えられます。特に音声クローン機能や感情表現は、コンテンツ制作やエンターテイメント、教育などの分野で強力なツールとなるでしょう。また同じテキストを使用しても、音声を作成するたびに違う結果が得られるのです。理由はいくつかありますので、以下に、その主な要因を説明します。

1. ランダム性の導入

  • 多くの音声合成システムでは、合成のプロセスにわずかなランダム性が導入されています。これにより、同じテキストでも微妙に異なるイントネーションや発音が生成されることがあります。ランダム性は、合成された音声がより自然で人間らしく聞こえるように設計されています。

2. モデルの不確実性

  • 音声合成モデルは、非常に複雑な統計モデルに基づいており、テキストから音声を生成する際に複数の可能な出力を考慮します。そのため、異なる合成結果が得られることがあります。これは特に、感情表現や音声スタイルのカスタマイズが可能なモデルにおいて顕著です。

3. 音声合成エンジンの内部処理

  • 音声合成エンジンがテキストを音声に変換する際、内部で行われる処理は非常に複雑です。例えば、音声の生成プロセスに使用されるアルゴリズムや音響モデルが、環境に応じて異なるパラメータを選択する場合があります。この違いが、生成される音声の微妙な違いにつながります。

4. 出力フォーマットやエンコーディングの違い

  • 音声を保存する際のフォーマットやエンコーディングの設定によっても、音質に違いが生じることがあります。同じモデルであっても、出力時の設定やエンコーディングの方法によって音質が変化する可能性があります。

5. システムやリソースの負荷

  • 音声合成を実行しているシステムのリソース(CPU、メモリなど)の負荷状態によっても、生成される音声に影響を与えることがあります。システムが負荷の高い状態にあると、音声の生成がリアルタイムで処理されず、わずかなタイミングのズレやクオリティの変化が生じることがあります。

これらの要因が組み合わさることで、同じテキストでも生成される音声が毎回微妙に異なる結果となることがあります。この多様性が、音声合成をより自然で柔軟にする一方で、完全に同一の音声を繰り返し生成するのが難しい理由でもあります。

今回はStable Diffusion WebUIみたいにブラウザで操作する方法を以下のGitHubを参考に紹介します。

GitHub - Mateusz-Dera/whisperspeech-webui: Simple WhisperSpeech web UI
Simple WhisperSpeech web UI. Contribute to Mateusz-Dera/whisperspeech-webui development by creating an account on GitHub...

ページに書いてある以下のことについて説明します。

export HSA_OVERRIDE_GFX_VERSION=11.0.0

自分が使用しているGPUはNVIDIAの GeForce RTX 4060 です。このGPUは、AMDのGPUに関連する HSA_OVERRIDE_GFX_VERSION の設定とは無関係です。

export HSA_OVERRIDE_GFX_VERSION=11.0.0 は、AMDのGPUを使用する際に特定のグラフィックスバージョンをオーバーライドするための設定です。NVIDIAのGPUには適用されません。そのため、この環境変数はNVIDIAのシステムでは意味がなく、設定する必要はありません。

したがって、NVIDIAのGPUを使用している限り、HSA_OVERRIDE_GFX_VERSION の設定は不要です。もしこの設定が何らかのスクリプトや設定ファイルに含まれている場合、AMDのGPU用に書かれたものかもしれませんが、NVIDIAの環境では削除または無効化しても問題ありません。

そしてもう一つが以下のコマンドです。

sudo apt install ffmpeg

これはFFmpegのインストールコマンドで、Windows上でPythonの仮想環境を使用している場合、通常は sudo apt install のようなコマンドは使用できません。sudo はLinuxやmacOSで管理者権限を取得するためのコマンドであり、apt はDebian系のLinuxディストリビューション(Ubuntuなど)でパッケージをインストールするためのものです。「Mount the repository directory」という操作が必要であれば、WSLまたは本物のLinuxを使用するのが適切です。

本物のLinux環境であれば、すべてのLinux機能が利用でき、特に複雑な操作やパフォーマンスが求められる作業に向いています。

WSL (Windows Subsystem for Linux):

Windows上でLinuxのような環境を実行できるため、mountやその他のLinuxコマンドを使って作業を進めることができます。

WSLは簡単にインストールでき、Windowsとシームレスに連携できるため、特にWindowsユーザーには便利な選択肢です。

本物のLinux:

実際のLinux環境が必要な場合や、特定のハードウェアアクセスが必要な場合は、仮想マシンやデュアルブート、または専用のLinuxマシンを使用することが考えられます。

実機にインストールしたLinuxはスペックが高いとは言えないので、WSLを使用することにします。CPUだけで動かしたいならVirtualBoxやVMwareでも動くかもしれません。ProxmoxだとGPUパススルーが可能です。

pyenvの記事につきましては以下のページにて詳しく説明しています。こちらの記事は実機のUbuntuですがWSLでも同様な作業で実現できます。

Pythonのバージョンを確認する

まず、現在システムにインストールされているPythonのバージョンを確認しておきましょう。これは、プロジェクトで推奨されているPythonのバージョンと比較するために重要です。

以下のコマンドを実行します:

python3 -V

このコマンドは、現在のPythonのバージョンを表示します。例えば、次のような結果が返ってくるかもしれません:

Python 3.12.3

ここで気づくことができるのは、GitHubのページで推奨されているPython 3.12.0とは「少しだけ異なる」ことです。たとえ3.12.3で動作する可能性はありますが、開発者が3.12.0を推奨している以上、問題を避けるためにも推奨バージョンに揃えておく方が安心です。特に依存関係やパッケージが特定のバージョンに最適化されている場合、同じバージョンを使用する方が予期せぬエラーを防ぐことができます。

プロジェクトのクローンを作成する

まず、作業環境を整えるためにGitHubからプロジェクトをクローンします。クローンを作成することで、プロジェクトのファイルやコードをローカルのコンピュータにコピーすることができます。

以下のコマンドでプロジェクトをクローンします:

git clone https://github.com/Mateusz-Dera/whisperspeech-webui.git

このコマンドを実行すると、whisperspeech-webuiという名前のディレクトリが作成され、その中にすべてのプロジェクトファイルがダウンロードされます。クローンを作成することは、Gitを使用してプロジェクトを共有したり、コードを管理する際に非常に一般的な手法です。

次に、作成されたディレクトリに移動します。ディレクトリに移動することで、そのプロジェクトの中で作業ができるようになります。以下のコマンドを実行してディレクトリに移動しましょう:

cd whisperspeech-webui

これで、whisperspeech-webuiディレクトリ内で作業を進められる状態になりました。



推奨されるPythonバージョンのインストール

次に、プロジェクトで推奨されているPythonのバージョンをインストールします。今回は、pyenvというツールを使ってPythonのバージョンを管理します。pyenvを使うことで、システムにインストールされた複数のバージョンのPythonを簡単に切り替えることができ、特定のプロジェクトで指定されたバージョンを使用するのに便利です。

まず、次のコマンドでPython 3.12.0をインストールします:

pyenv install 3.12.0

このコマンドを実行すると、pyenvは指定されたバージョンのPythonをインターネットからダウンロードし、システムにインストールします。


特定のディレクトリにPythonバージョンを適用する

インストールが完了したら、次に特定のプロジェクトフォルダ内だけでこのバージョンを使用するように設定します。pyenvを使えば、このディレクトリに限って特定のバージョンを適用できます。

次のコマンドを実行しましょう:

pyenv local 3.12.0

このコマンドを実行すると、whisperspeech-webuiディレクトリ内で自動的にPython 3.12.0が使用されるようになります。この設定は、プロジェクトフォルダ内に.python-versionというファイルが作成され、そこに指定されたバージョンが記録されます。これにより、他のプロジェクトやフォルダに影響を与えることなく、特定のプロジェクトで推奨バージョンを使用できるようになります。

特定のディレクトリにPythonバージョンを適用する

プロジェクトによっては、指定されたPythonのバージョンが必要になることがあります。pyenvを使えば、システム全体に影響を与えることなく、特定のプロジェクトフォルダ内でだけ異なるバージョンのPythonを使用することができます。

ここでは、whisperspeech-webuiディレクトリでのみPython 3.12.0を使うように設定してみましょう。

まず、以下のコマンドを実行して、そのディレクトリにPython 3.12.0を適用します:

pyenv local 3.12.0

このコマンドを実行すると、そのフォルダ内に.python-versionという隠しファイルが作成され、その中に指定されたバージョン(今回は3.12.0)が記録されます。この設定によって、そのディレクトリ内でのみPython 3.12.0が自動的に使用されるようになります。


適用されたバージョンの確認

次に、設定したPythonのバージョンが正しく適用されたか確認してみましょう。pyenv versionコマンドを使うと、現在のディレクトリで使用されるPythonのバージョンが表示されます。

以下のコマンドを実行してください:

pyenv version

実行結果は以下のようになります:

3.12.0 (set by /home/mamu/whisperspeech-webui/.python-version)

このように表示された場合、指定したPython 3.12.0が正しく設定されていることがわかります。


Pythonの仮想環境を作成する

次に、Pythonの仮想環境を作成します。仮想環境とは、プロジェクトごとに独立したPython環境を作成できる便利な機能で、他のプロジェクトに影響を与えることなく、ライブラリのインストールや設定を管理することができます。

以下のコマンドを実行して、venvという名前の仮想環境を作成します:

python -m venv venv

これで、venvという名前のフォルダが作成され、その中に仮想環境が準備されます。しかし、仮想環境を作成しただけでは有効になっていないので、次のステップで仮想環境を「有効化」します。


仮想環境を有効化する

仮想環境を有効にするためには、次のコマンドを実行します:

source venv/bin/activate

このコマンドを実行すると、プロンプトが変わり、仮想環境が有効化されたことがわかります。仮想環境が有効になっている間は、インストールするパッケージやPythonの設定はすべてこの環境内に限られ、システム全体には影響しません。


WindowsとWSLの違いに注意する

ここで、初心者の方がよく間違えるポイントについて説明します。WindowsとLinux(WSLを含む)では、ファイルパスの表記方法が異なるため、コマンドの入力に注意が必要です。

  • Windowsの場合
    • ファイルパスの区切りには「バックスラッシュ(\)」を使います。
    • 例: C:\Users\Username\Documents\
  • WSL(Linux)の場合
    • ファイルパスの区切りには「スラッシュ(/)」を使います。
    • 例: /home/username/documents/

仮想環境の有効化時も、WSLではsource venv/bin/activateのようにスラッシュを使いますが、Windowsのコマンドプロンプトではvenv\Scripts\activateといった形になります。環境に応じて正しいコマンドを使うことが重要です。

仮想環境内でFFmpegをインストールする

仮想環境が有効化された状態で、次に必要なツールをインストールします。今回は、音声や動画の処理に必要なFFmpegをインストールします。

まず、以下のコマンドでFFmpegをインストールします:

sudo apt install ffmpeg

ここでのポイント:

  • FFmpegとは何か?
    FFmpegは、音声や映像の変換、録画、編集を行うための強力なツールです。WhisperSpeechでは、音声データの処理にFFmpegが必要になります。インストールすることで、音声のエンコードやデコードが可能になります。
  • なぜaptコマンドを使うのか?
    aptは、LinuxやWSL(Windows Subsystem for Linux)で使われるパッケージ管理システムです。これを使って必要なソフトウェアを簡単にインストールできます。
    注意点として、Windowsの仮想環境ではaptコマンドを直接使うことができません。そのため、Windowsでこの作業を行う際は、WSLを使ってLinux環境を利用する必要があります。これで、Linuxのパッケージ管理機能をフルに活用でき、FFmpegや他の必要なソフトを簡単にインストールできるようになります。

CUDAとその依存関係のインストール

次に、WhisperSpeechの処理を高速化するために、CUDA(NVIDIAのGPUコンピューティングプラットフォーム)をインストールします。これにより、GPUを活用して高速に計算処理を行うことができ、音声生成のパフォーマンスが向上します。

CUDAとその依存関係は、以下のコマンドでインストールします:

pip install -r requirements_cuda_12.1.txt

ここでのポイント:

  • CUDAとは?
    CUDAは、NVIDIAのGPUを利用した高速な並列計算を可能にするプラットフォームです。特に大量のデータ処理が必要な場合、CUDAを使うことでCPUよりも高速に計算が可能になります。WhisperSpeechのような音声合成ツールでも、GPUを使うことで処理速度を大幅に向上させることができます。
  • requirementsファイルとは?
    requirements_cuda_12.1.txtというファイルには、WhisperSpeechの動作に必要なライブラリやパッケージがリストされています。このファイルを使ってpipコマンドで必要な依存関係を一括でインストールします。バージョン12.1のCUDAを使用しているため、対応する依存パッケージもこのファイルを使って管理されています。

スクリプトを実行する

すべての準備が整ったら、最後にスクリプトを実行してWhisperSpeechを起動します。以下のコマンドを実行します:

python webui.py

ここでのポイント:

  • スクリプトの役割
    このスクリプトは、WhisperSpeechのWebインターフェース(GUI)を起動するためのものです。実行すると、ブラウザから操作できるようになり、テキストを音声に変換するインターフェースを使用することができます。
  • Stable Diffusion WebUIとの類似点
    このWebインターフェースは、Stable Diffusion WebUIと同様の仕組みで動作します。ブラウザで直感的に操作できるため、プログラムを手動で操作する必要がなく、初心者でも簡単に利用できます。

補足説明:なぜWSLを使うのか?

ここまでの説明で出てきたaptやCUDAなどのツールは、基本的にLinux環境で動作します。Windowsの標準環境ではこれらを直接扱うことが難しいため、**WSL(Windows Subsystem for Linux)**を使ってLinux環境を作り、その上で作業を進めます。

WSLを使用する理由は以下の通りです:

  1. Linuxのパッケージ管理システムaptが使える
    Windowsでは使えないaptを使うことで、簡単にソフトウェアをインストール・管理できます。FFmpegのようなツールもスムーズにインストールできます。
  2. CUDAの対応
    GPUを利用する場合、Linux環境が推奨されます。特にNVIDIAのGPUを利用するCUDAは、Linuxでのサポートが強力です。WSLを使うことで、この恩恵を受けることができます。
  3. Windowsの互換性を保持しつつ、Linuxの柔軟性を活用できる
    Windowsの便利さを保ちながら、Linuxでしか使えないツールやコマンドを自由に扱えるのがWSLの大きな利点です。

WhisperSpeechのセットアップや動作をスムーズに進めることができるため、WSLは非常に便利です。

タイトルとURLをコピーしました