オープンソースの音声合成ソフトであるVOICEVOXについて紹介します。
実際に音声ファイルを作成してみましょう。
Google colabを使用して簡単に実装することができますので、ぜひ最後までご覧ください。
(Google colabの使用方法はこちら⇨使い方

音声合成技術とは

音声合成技術とは、コンピュータが人間の言語を模倣して音声を生成する技術のことです。この技術は、テキストベースの情報を音声情報に変換するために使用されます。音声合成の主な目的は、視覚障害者へのアクセシビリティ向上や、ナビゲーション、音声アシスタントなど、人々が情報にアクセスしやすくすることです。

音声合成技術は、主に以下の3つのステップに分けられます。

テキスト解析: このステップでは、入力されたテキストを文法的に解析し、文章の構造や単語の意味を理解します。また、音素(最小の音韻単位)への変換が行われます。

音声生成: 解析されたテキスト情報をもとに、音声波形を生成します。この過程では、音声のピッチ、音量、音質などが調整されます。

音声出力: 生成された音声波形をデジタル信号に変換し、スピーカーやヘッドフォンなどの出力デバイスから音声が再生されます。

近年の音声合成技術は、ディープラーニングやAIを活用して、より自然で理解しやすい音声を生成することが可能になっています。また、オープンソースの音声合成ソフトウェアが増えており、個人や企業が自由に利用や改変ができるようになっています。

VOICEVOXの概要

VOICEVOXとは

VOICEVOX(ボイスボックス)は、2021年8月1日にヒホ(ヒロシバ)氏がリリースしたオープンソースの音声合成ソフトウェアです。AIとディープラーニング技術を活用し、文字単位でのイントネーション調整が可能です。無料で商用利用が許可されており、プログラムの改変や再配布が自由に行えます。これにより、対話型システムや観光案内システム、クラウド型システムなど様々な応用が可能です。

VOICEVOXは、入力テキストを基に音声合成を生成し、再生や出力ができるソフトウェアです。話す速度や音程、アクセント、単語の区切り方などを調整することで多彩な表現が可能です。内部エンジンはCPUまたはGPUで動作し、後者が高速かつ快適に動作するため、3GB以上のVRAMを持つNVIDIA製GPUが推奨されています。

現在、VOICEVOXには「四国めたん」や「ずんだもん」をはじめとした多くの音声ライブラリが収録されており、生成した音声はWAV形式で出力できます。ライブラリに応じたクレジット表記で、商用・非商用問わず利用可能です。

VOICEVOXの使い方

VOICEVOXの利用には、公式サイトからソフトをダウンロードする方法と、Pythonから利用する方法があります。

初めて利用する場合には、まずは公式サイトからどのような音声が出力できるのかを確認することをお勧めします。

今回の記事では、Pythonから利用する方法について紹介していきます。

VOICEVOXの実装

導入

ここからはGoogle colabを使用して実装していきます。
(Google colabの使用方法はこちら⇨使い方

※今回紹介するコードは以下のリンクからもご覧いただけます。

Open In Colab

まずはGPUを使用できるように設定をします。

「ランタイムのタイプを変更」→「ハードウェアアクセラレータ」をGPUに変更

GPUの設定が終わったら、Googleドライブをマウントします。

from google.colab import drive
drive.mount('/content/drive')
%cd ./drive/MyDrive

パッケージをクローンします。

# パッケージのクローンとセットアップ
!git clone https://github.com/VOICEVOX/voicevox_core -b 0.13.2
%cd voicevox_core/

必要なライブラリをインストールします。

# 環境構築

# ONNX Runtimeのダウンロード
!mkdir onnxruntime
!wget https://github.com/microsoft/onnxruntime/releases/download/v1.10.0/onnxruntime-linux-x64-gpu-1.10.0.tgz
!tar xf onnxruntime-linux-x64-gpu-1.10.0.tgz -C onnxruntime --strip=1
!rm onnxruntime-linux-x64-gpu-1.10.0.tgz
# コアライブラリのダウンロード
!mkdir release
!wget https://github.com/VOICEVOX/voicevox_core/releases/download/0.13.2/voicevox_core-linux-x64-gpu-0.13.2.zip
!unzip -qj voicevox_core-linux-x64-gpu-0.13.2.zip -d release
!rm voicevox_core-linux-x64-gpu-0.13.2.zip
# 配置
!mkdir -p core/lib
!cp onnxruntime/lib/* core/lib
!cp release/* core/lib
# 辞書データダウンロード
!wget http://downloads.sourceforge.net/open-jtalk/open_jtalk_dic_utf_8-1.11.tar.gz
!tar xf open_jtalk_dic_utf_8-1.11.tar.gz
!rm open_jtalk_dic_utf_8-1.11.tar.gz
# pythonモジュールのインストール

!pip install -qqUr requirements.txt
!pip install -qqU .

以上で準備が完了しました。

サンプル実装

まずは「この動画は、つくもちチャンネルの提供でお送りしました」という音声ファイルを作成してみます。 speaker_id = 3とすると、ずんだもん:ノーマルの音声となります。

以下の通り実行します。

text = 'この動画は、つくもちチャンネルの提供でお送りしました'
speaker_id = 3
!python example/python/run.py \
    --text $text \
    --speaker_id $speaker_id \
    --use_gpu

# --text : 入力テキスト
# --speaker_id : 話者IDを指定
# --f0_speaker_id : 音高の話者ID(デフォルト値: speaker_id)
# --f0_correct : 音高の補正値(デフォルト値:0、+-0.3くらいで結果が変わる)
# --root_dir_path : onnxファイル等必要なファイルがあるディレクトリを指定
# --use_gpu : GPUを使用する

処理が終わると「.wav」ファイルのが出力されます。
この音声ファイルを再生しみましょう。

# 再生
import IPython.display
audio=f'{text}-{speaker_id}.wav'
IPython.display.Audio(audio, autoplay=True)

無事に音声ファイルを作ることができました。

音声を変えるには

音声を変えるにはspeaker_idの引数を変更します。音声一覧は以下の通りです。

話者,speaker_id
・四国めたん
 ・ノーマル : 2
 ・あまあま : 0
 ・ツンツン : 6
 ・セクシー : 4

・ずんだもん
 ・ノーマル : 3
 ・あまあま : 1
 ・ツンツン : 7
 ・セクシー : 5

・春日部つむぎ
 ・ノーマル : 8

・雨晴はう
 ・ノーマル : 10

・波音リツ
 ・ノーマル : 9

・玄野武宏
 ・ノーマル : 11

・白上虎太郎
 ・ノーマル : 12

・青山龍星
 ・ノーマル : 13

・冥鳴ひまり
 ・ノーマル : 14

・九州そら
 ・ノーマル : 16
 ・あまあま : 15
 ・ツンツン : 18
 ・セクシー : 17
 ・ささやき : 19

まとめ

最後までご覧いただきありがとうございました。