MENU
やすひら
やすひらと申します。
長靴を履いたタヌキ(ITエンジニア)です。
モノ作りの楽しさを発信中。
X(旧Twitter)のフォローもお願いします。

[Python]VOICEVOXコアを用いた音声合成

Pythonでは、音声合成でテキスト情報を音声に変換する技術を利用できます。
Pythonの音声合成は、いくつかの方法がありますが、本記事ではVOICEVOXを利用して、音声合成を行います。

やすひら

VOICEVOXコアを用いた音声合成を紹介します

この記事でわかること
  • 音声合成とは
  • VOICEVOXによる音声合成
  • VOICEVOXコアの環境構築
  • VOICEVOXコアの使い方
目次

音声合成とは

音声合成は、コンピュータを使ってテキスト情報を人工的に音声に変換する技術です。
テキスト情報を人間の声に近い形で再生できるため、聴覚で情報処理する場合に活用しています。
初期の音声合成は、単純な機械音でしたが、現在ではAIを用いた高度な技術により、自然な音声で表現生成されるようになっています。

VOICEVOXとは

VOICEVOXは、無料で利用できる中品質なテキスト読み上げソフトウェアです。
日本語の音声を生成でき、音声の抑揚や感情を表現できる点について、品質が高いソフトウェアです。
Open JTalkは機械感のある音声を高速で生成できるのに対して、VOICEVOXは高品質な音声が生成可能ですが、処理速度はOpen JTalkより低速となっています。

VOICEVOXコアとは

VOICEVOXの音声合成処理のコア部分は、GitHubでオープンソースとして公開されており、誰でも無料で利用することができます。
Pythonでも利用することができるため、使いやすい音声合成ソフトウェアの1つです。

VOICEVOXコアの環境構築

VOICEVOXコアの環境構築手順を紹介します。

Pythonバインディングのインストール

PythonでVOICEVOXを利用できるように、Pythonバインディングをインストールします。

コマンドライン

wget https://github.com/VOICEVOX/voicevox_core/releases/download/0.15.4/voicevox_core-0.15.4+cpu-cp38-abi3-linux_x86_64.whl
pip install voicevox_core-0.15.4+cpu-cp38-abi3-linux_x86_64.whl

Pythonバインディングをインストールします。
VOICEVOXコアのバージョンは、インストールしたいバージョンを指定します。

筆者は、wgetでwheelファイルをダウンロードしてからpipでライブラリをインストールしました。
pipのインストールでGitHubのURL指定もできますが、筆者の環境では失敗しました。
1コマンドでライブラリがインストールできない場合は、2段階の手順でインストールすると良いです。

関連ソフトウェアのダウンロード

関連ソフトウェアをダンロードします。

コマンドライン

binary=download-linux-x64
curl -sSfL https://github.com/VOICEVOX/voicevox_core/releases/latest/download/${binary} -o download
chmod +x download
./download -o ./example/python
rm -r ./example/python/{model,VERSION,*voicevox_core*}

ONNX RuntimeとOpen JTalkの辞書ファイルをダウンロードできます。

VOICEVOXコアの使い方

VOICEVOXコアの使い方を紹介します。

VOICEVOXコアで音声合成

VOICEVOXコアで音声合成します。

ソースコード

from pathlib import Path
import voicevox_core
from voicevox_core import AccelerationMode, AudioQuery, VoicevoxCore

open_jtalk_dict_dir = './open_jtalk_dic_utf_8-1.11'
out = Path('output.wav')
acceleration_mode = AccelerationMode.AUTO

def voicevox_core_tts(text, speaker_id):
    core = VoicevoxCore(
        acceleration_mode=acceleration_mode, open_jtalk_dict_dir=open_jtalk_dict_dir
    )
    core.load_model(speaker_id)
    audio_query = core.audio_query(text, speaker_id)
    wav = core.synthesis(audio_query, speaker_id)
    out.write_bytes(wav)


if __name__ == "__main__":
    voicevox_core_tts("テスト", 2)

コマンド実行例

$ python3 -B python-voicevox-core.py
$ ls
output.wav  python-voicevox-core.py

VOICEVOXコアで、テキストを音声に変換できました。

VOICEVOXの声を指定

VOICEVOXは、スピーカーIDの指定で生成する声を指定することができます。
VOICEVOXでは、キャラクターにちなんだ声を生成することができます。
各キャラクターで用意された声のスタイルも指定でき、より感情が付与された音声を生成することができます。

キャラクターID : スタイル
四国めたん2 : ノーマル
0 : あまあま
6 : ツンツン
4 : セクシー
36 : ささやき
37 : ヒソヒソ
ずんだもん3 : ノーマル
1 : あまあま
7 : ツンツン
5 : セクシー
22 : ささやき
38 : ヒソヒソ
春日部つむぎ8 : ノーマル
波音リツ9 : ノーマル
雨晴はう10 : ノーマル
玄野武宏11 : ノーマル
39 : 喜び
40 : ツンギレ
41 : 悲しみ
白上虎太郎12 : ふつう
32 : わーい
33 : びくびく
34 : おこ
35 : びえーん
青山龍星13 : ノーマル
冥鳴ひまり14 : ノーマル
九州そら16 : ノーマル
15 :あまあま
18 : ツンツン
17 : セクシー
19 : ささやき
もち子さん20 : ノーマル
剣崎雌雄21 : ノーマル
WhiteCUL23 : ノーマル
24 : たのしい
25 : かなしい
26 : びえーん
後鬼27 : 人間ver.
28 : ぬいぐるみver.
No.729 : ノーマル
30 : アナウンス
31 : 読み聞かせ
ちび式じい42 : ノーマル
櫻歌ミコ43 : ノーマル
44 : 第二形態
45 : ロリ
小夜/SAYO46 : ノーマル
ナースロボ_タイプT47 : ノーマル
48 : 楽々
49 : 恐怖
50 : 内緒話
†聖騎士 紅桜†51 : ノーマル
雀松朱司52 : ノーマル
麒ヶ島宗麟53 : ノーマル

スピーカーIDを指定すると、対応するキャラクターとスタイルを指定して音声を生成することができます。

キャラクターごとに利用規約があるので、注意して利用する必要があります。

まとめ

VOICEVOXコアを用いた音声合成の方法を紹介しました。

VOICEVOXコアを用いた音声合成の方法は
  • VOICEVOXコアをインストールする
  • 関連ソフトウェアをダウンロードする
  • Pythonで音声合成できる

音声アシスタントや、音声変換(Text-To-Speech)の機能を作成したい場合は、音声合成の実装が不可欠です。
VOICEVOXでは、テキストファイルを音声ファイル化することができるため、テキスト情報をインプットに、コンピュータが発音するアプリケーションを作成することができます。

  • URLをコピーしました!
目次