sample_voicevox.py Technical Documentation

このドキュメントは、Pythonプログラム sample_voicevox.py の機能、使用方法、および内部原理について説明します。

プログラムの動作

sample_voicevox.py は、VOICEVOX を利用して指定された日本語テキストの音声合成を行うサンプルプログラムです。主な目的は、Pythonスクリプトから簡単にVOICEVOXの音声合成機能を利用する方法を示すことです。

主な機能:

  • 利用可能な音声の表示: コマンドライン引数 list を与えることで、VOICEVOXで利用可能な話者の一覧を表示します。

  • 音声合成: 指定された話者(デフォルトは「四国めたん」)を用いて、プログラム内に定義されたテキストを音声に変換します。

  • WAVファイルの出力: 生成された音声データは sample_voicevox.wav という名前のWAVファイルとして保存されます。

このプログラムは、プログラマーがVOICEVOXを自身のPythonアプリケーションに組み込む際の出発点として機能し、テキストから自然な日本語音声を生成する課題を解決します。

原理

このプログラムは、tktts_voicevox というPythonライブラリを介してVOICEVOXの音声合成機能を利用します。VOICEVOXは、指定されたテキストと話者IDに基づいて、高品質な音声データを生成するオープンソースの音声合成エンジンです。

プログラムの主要なステップは以下の通りです。

  1. 話者の解決: コマンドライン引数として与えられた話者名(例: "ずんだもん")を、tktts_voicevox.resolve_speaker_id() 関数を使用してVOICEVOXが認識する内部のスピーカーIDに変換します。これにより、VOICEVOXエンジンはどの話者の声を使用すべきかを特定できます。

  2. テキストの準備: 音声合成するテキストをプログラム内で準備します。このテキストは内部的に保持され、合成処理に渡されます。

  3. 音声の生成: tktts_voicevox.speak() 関数を呼び出し、準備されたテキスト、解決されたスピーカーID、およびオプションの音声調整パラメータ(話速 speak_rate、ピッチ speak_pitch など)を渡します。この関数がVOICEVOXエンジンと通信し、音声データを生成します。

  4. WAVファイルへの保存: 生成された音声データは、指定された出力ファイル名 (sample_voicevox.wav) でWAV形式のオーディオファイルとして保存されます。

この一連のプロセスにより、VOICEVOXの複雑なAPI操作を直接行わずとも、Pythonから簡単に音声合成を実行できます。

必要な非標準ライブラリとインストール方法

このプログラムは、以下の非標準ライブラリに依存しています。

  • tktts_voicevox: VOICEVOXエンジンとのインターフェースを提供するライブラリです。

これらのライブラリは pip コマンドを使用してインストールできます。

pip install tktts_voicevox

補足: tktts_voicevox ライブラリの機能を利用するには、ローカル環境でVOICEVOXエンジンが起動しているか、あるいはVOICEVOXのAPIにアクセスできる状態である必要があります。

必要な入力ファイル

このプログラムは、実行時に外部の入力ファイルを必要としません。 合成するテキストは、プログラムのソースコード内に文字列として直接記述されています。話者名はコマンドライン引数として指定されます。

生成される出力ファイル

プログラムが正常に実行されると、以下のWAVオーディオファイルが生成されます。

  • sample_voicevox.wav:

    • 内容: プログラム内のテキスト こんにちは。\nこれはVOICEVOXを使った音声合成のサンプルです。\nPythonから簡単に自然な日本語音声を生成できます。 が、指定された話者(デフォルトは「四国めたん」)の声で合成された音声データが含まれます。

    • 形式: リニアPCM形式のWAVファイルです。

コマンドラインでの使用例 (Usage)

基本的なコマンドラインでの使用方法は以下の通りです。

python sample_voicevox.py [話者名またはコマンド]
  • [話者名またはコマンド]:

    • 省略した場合、デフォルトの話者(「四国めたん」)で音声が合成されます。

    • 特定の話者名を指定した場合、その話者で音声が合成されます。

    • list と指定した場合、利用可能なVOICEVOX話者の一覧が表示されます。

コマンドラインでの具体的な使用例

1. デフォルトの話者で音声合成を行う

コマンド:

python sample_voicevox.py

実行結果の説明: 「四国めたん」の声で「こんにちは。これはVOICEVOXを使った音声合成のサンプルです。Pythonから簡単に自然な日本語音声を生成できます。」という内容の音声が生成され、sample_voicevox.wav というファイル名で保存されます。コンソールには以下のようなメッセージが表示されます。

Voice: 四国めたん
Speaker ID: [VOICEVOXのスピーカーID]
sample_voicevox.wav を作成しました。

([VOICEVOXのスピーカーID] の部分は環境によって異なります。)

2. 利用可能な話者の一覧を表示する

コマンド:

python sample_voicevox.py list

実行結果の説明: VOICEVOXエンジンで利用可能な話者のリストがコンソールに表示されます。出力の形式は tktts_voicevox ライブラリとVOICEVOXエンジンのバージョンに依存しますが、例えば以下のような形式になります。

Available Voices:
  四国めたん (standard)
  ずんだもん (standard)
  春日部つむぎ (standard)
  雨晴はう (standard)
  白上虎太郎 (standard)
  冥鳴ひまり (standard)
  九州そら (standard)
  他多数...

3. 特定の話者(例: ずんだもん)で音声合成を行う

コマンド:

python sample_voicevox.py ずんだもん

実行結果の説明: 「ずんだもん」の声で、上記1と同じテキストの音声が生成され、sample_voicevox.wav というファイル名で保存されます。コンソールには以下のようなメッセージが表示されます。

Voice: ずんだもん
Speaker ID: [VOICEVOXのずんだもんのスピーカーID]
sample_voicevox.wav を作成しました。

([VOICEVOXのずんだもんのスピーカーID] の部分は環境によって異なります。)