声を作ってみた・Style-Bert-VITS2編

Mod作成

はじめに

公式サイトはおそらくここです。

インストールは書いてある通りにするだけです。とても簡単です。

とりあえずしゃべらせる

音声合成と言うようです。書いてある通りにすれば簡単です。

学習させる

事前に音声データを用意しました。

wav形式で用意します。Audacityで雑音やノイズを簡単に除去しました。

App.batを実行してブラウザの画面を開いておきます。

データセット作成

データセット作成タブを開きます。

モデル名を入力します。

用意したwav形式のファイルをinputsフォルダの中に入れます。

スライスを実行ボタンをクリックします。

次に音声の文字起こしボタンをクリックします。

私の環境では「HuggingFaceのWhisperを使う(速度が速いがVRAMを多く使う)」のチェックを外さないとutf-8がどうとかいうエラーが出て失敗しました。

学習

モデル名を入力します。

自動前処理を実行ボタンをクリックします。

学習を開始するボタンをクリックします。

試してみる

音声合成タブに戻ります。

更新ボタンを押さないとモデル一覧に学習させたモデルが出てきません。

音声合成を一括して行う

WebUIは簡易的なものみたいで、VOICEVOXやRVCのように大量のファイルを一括で処理する手段がどうやら用意されていないようです。

そのかわりにCLIとAPIがあります。スキルがあることが前提となってしまいますが、APIを叩けるのであれば自由度はこちらの方が格段に上です。

そこで、DBVOの辞書から一括してwavファイルを生成するPHPスクリプトを書いてみました。

create_wav.php (php)

<?php
$context_opts = [];
$http_opts = [];

try {
    if ($argc != 2) {
        throw new Exception('Usage: create_wav.php <DBVO local pack json>');
    }

    $json_filename = $argv[1];

    if ( !is_readable($json_filename) ) {
        throw new Exception($json_filename . ' is not readable.');
    }

    $json_data = json_decode( file_get_contents($json_filename) );

    $context_opts = [
        'http' => [
            'method' => 'GET',
        ]
    ];

    $http_opts = [
        'model_id' => 0,
        'speaker_id' => 0,
        'sdp_ratio' => 0.2,
        'noise' => 0.6,
        'noisew' => 0.8,
        'length' => 1,
        'language' => 'JP',
        'auto_split' => 'true',
        'split_interval' => 0.5,
        'assist_text_weight' => 1,
        'style' => '04',
        'style_weight' => 1,
    ];

    foreach ($json_data as $key => $value) {
        create_wav($key, $value . '.wav');
    }
} catch (Exception $e) {
    echo $e->GetMessage() . PHP_EOL;
}

function create_wav($text, $filename)
{
    global $context_opts, $http_opts;

    $http_opts['text'] = $text;

    $url = 'http://127.0.0.1:5000/voice?' . http_build_query($http_opts);

    $context = stream_context_create($context_opts);

    $data = file_get_contents($url, false, $context);

    file_put_contents($filename, $data);
}

config.ymlを編集して文字数上限を解除しておいたほうがいいでしょう。

Server:
limit: -1

Server.batを実行してAPIサーバを立ち上げます。

create_wav.phpにはAPIを叩く時のパラメータが埋め込まれていますので、調整しておきます。

以下は最低限変更しないと希望のモデルになりません。

$http_opts = [
'model_id' => 0,
'style' => '04',
]

ブラウザで http://127.0.0.1:5000/docs を開くと、APIを叩くときのパラメータを確認できます。

  • /voiceをクリックして広げてます。
  • Try it outをクリックします。
  • セリフに何でもいいので入力します。
  • Executeをクリックします。
  • 成功すれば下にURLが表示されますので、そこからパラメータを読み取ります。生成された音声もその場で再生して確認できます。

自分で学習させたモデルを指定する場合は以下になります。

$http_opts = [
'model_name' => 'hogehoge',
'model_id' => 0,
'style' => 'Neutral',
]

コマンドプロンプトを開き、以下のコマンドで実行できます。

php create_wav.php <DBVOの辞書のjsonファイル名>

感想

処理が速いです。速すぎてエラー終了しているのかと思いました。

適当に用意した素材でもそっくりに話します。

何より話し方が自然です。VOICEVOXにあるような違和感がだいぶ減ります。

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