Coder Social home page Coder Social logo

voicevox_volume_adjust's Introduction

VOICEVOX でスタイルごとの音量差を整える

要約: 適当なセリフで Integrated Loudness を求め、それを基準にしてスタイル毎に調整する

VOICEVOX 0.7.x 時点での出力音声は、たとえ同じキャラクターであってもスタイルを変えると音量差が大きく、
感情表現目的でスタイルを切り替えるような使い方をしようとした場合、そのままでは少なくない違和感があります。

もちろん手動で音量を調整することで違和感を小さくすることができますが、
その調整を完全に人間に任せるのではなく、ある程度自動で決めることができれば人間が楽をできます。

これはそのための雑多な手順書です。

1. スタイル毎に、同じセリフを書き出す

スタイル毎の音量差を計測するために、少し長めの同じセリフを全てのスタイルで読み上げて、その音声を書き出します。

今回の例文は以下のようなものにしました。

再生ボタンを押すと、文章が読まれます、読み方が変なときは、イントネーションを修正することもできます

この例文を四国めたんの4つのスタイルで読み上げて書き出します。

上記の4つのファイルを作成しました。

デフォルトとツンツンが、少し音量が小さめに聴こえます。

2. ファイル毎の音量を求める

ffmpeg をダウンロードし、コマンドラインから以下のようにして実行します。

ffmpeg -nostats -i 001_四国めたん_再生ボタンを押すと….wav -filter_complex ebur128 -f null -

するとたくさんログが流れますが、その最後にこのような表示があります。

  Integrated loudness:
    I:         -26.4 LUFS
    Threshold: -36.8 LUFS

  Loudness range:
    LRA:         2.2 LU
    Threshold: -47.2 LUFS
    LRA low:   -28.5 LUFS
    LRA high:  -26.3 LUFS

この I: の後ろに表示されているのがファイル全体の音量です。
4つのファイルで同じように実行して値をまとめたところ、以下のようになりました。

  • ffmpeg -nostats -i 001_四国めたん_再生ボタンを押すと….wav -filter_complex ebur128 -f null -
    • -26.4 LUFS
  • ffmpeg -nostats -i 002_四国めたん(あまあま)_再生ボタンを押すと….wav -filter_complex ebur128 -f null -
    • -23.7 LUFS
  • ffmpeg -nostats -i 003_四国めたん(ツンツン)_再生ボタンを押すと….wav -filter_complex ebur128 -f null -
    • -29.8 LUFS
  • ffmpeg -nostats -i 004_四国めたん(セクシー)_再生ボタンを押すと….wav -filter_complex ebur128 -f null -
    • -23.7 LUFS

ファイルを直接聞いた印象でも音量が小さいデフォルトやツンツンは、求めた数値上でも少し小さめの値になっています。

3. 音量を調整する

今回は -23 LUFS を目標として音量を調整してみます。
(-23 LUFS は EBU R128 におけるノーマライズ基準値)

例えば -26.4 LUFS を -23 LUFS にするためには +3.4 する必要があります。
それを踏まえた上で、それぞれのファイルに対して以下のような処理を施し、音量調整済みのファイルを生成してみます。

生成されたファイルを聴いてみると、元のファイルより音量差が小さくなっていることが確認できるはずです。

完全に同一とは言えないかも知れませんが、人間の耳で判断せずに調整した結果としてはまずまずです。

4. 他のセリフにも同じ音量調整を適用してみる

同じスタイルを使っている場合は、喋る内容が変わったとしても、ある程度は同じような音量になることが期待できます。

一方で、例えば力む場所で高い音を使うと音量が大きめになったり、静かに喋る場所で低い音を使うと音量が小さめになったりするかもしれません。
しかし、このようなセリフ内で発生する「自然な音量差」までを全部 -23 LUFS に揃えてしまうのは、逆に不自然な結果に繋がることもあります。

そこで、ここでは 毎回音声ファイルの音量を調べ、-23 LUFS になるように調整する という方針ではなく、
ツンツンの時は常に +6.8dB する などのように、スタイル毎に求めた基準値をそのまま適用する方針で進めます。

もっと細かく調整することもできます、ぜひ、みなさんもダウンロードして、遊んでみてください

この例文を四国めたんの4つのスタイルで読み上げて書き出し、音量は測定せずにさっきと同じだけ上げてみます。

セリフ内容が変わっても、概ね同じぐらいの音量に揃っていることがわかります。

5. まとめと応用

  • ある程度長めなセリフでスタイル毎に音量を計測しておいて、違うセリフに調整を適用してもそこそこイケそう
  • かんしくんの modifier でスタイル毎に自動調整とかにも応用できる
  • VOICEVOX 側で core からの出力前に音量調整を入れたり、metas で調整に必要なデータを返して engine で音量調整を入れたりもできそう

voicevox_volume_adjust's People

Contributors

oov avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.