pyopenjtalk - 日本語の音声合成② 読み上げ音声の作成

今回は日本語音声データセットJSUTの読み上げ音声を、音声合成フレームワークのNVIDIA/tacotron2の読み上げ音声に変換します。

必要ライブラリのインストール

読み上げ音声の変換を行うためには以下のライブラリをインストールします。

[WSLコンソール]

1
2
pip install librosa==0.8.0
pip install PySoundFile==0.9.0.post1

読み上げ音声の変換

JSUTの読み上げ音声を、NVIDIA/tacotron2の読み上げ音声に変換するソースコードは次のようになります。

[ソースコード]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import os
import librosa
import soundfile as sf

# パス
in_paths = [
'jsut_ver1.1/basic5000/',
'jsut_ver1.1/countersuffix26/',
'jsut_ver1.1/loanword128/',
'jsut_ver1.1/onomatopee300/',
'jsut_ver1.1/precedent130/',
'jsut_ver1.1/repeat500/',
'jsut_ver1.1/travel1000/',
'jsut_ver1.1/utparaphrase512/',
'jsut_ver1.1/voiceactress100/']
out_path = 'wav/'

# 出力フォルダの準備
os.makedirs(out_path, exist_ok=True)

# wavを22KHzに変換
def convert(in_path, filename):
y, sr = librosa.core.load(in_path + 'wav/' + filename, sr=22050, mono=True)
sf.write(out_path + filename, y, sr, subtype="PCM_16")

# wavの変換
count = 0
for in_path in in_paths:
filenames = os.listdir(in_path + 'wav/')
for filename in filenames:
print(str(count) + '/7696')
count += 1
convert(in_path, filename)

上記のソースコードを実行すると次のようなログが表示されます。

[実行結果]

1
2
3
4
5
6
7
8
・・・(途中略)・・・
7689/7696
7690/7696
7691/7696
7692/7696
7693/7696
7694/7696
7695/7696

wavフォルダが作成されその中にNVIDIA/tacotron2用の読み上げ音声が出力されます。

フォルダ容量は1.53GBほどになりました。


次回は、音声合成の学習を行い・・・・たかったのですが、どうしてもうまくいかなかったのでまた別内容の記事を書き始めようと思います。<(_ _)>