【前準備】

ffmpegのパスが通っていること。
取ってなければ、ffmepg で検索して、スクリプトを絶対パスに変える。
VOICEVOX.AppImage を /opt/voicevox_nogui フォルダに解凍しておく。
VOICEVOX.AppImage が解凍ソフトで開けない場合は、拡張子を、zipに変えると、解凍できる。

VOICEVOX.AppImage -> VOICEVOX.zip

/opt/voicevox_nogui
┣run
┣voicevox
とかいろいろと入っていること。

あとは、下記のスクリプトと同じフォルダに、動画用の画像の img.bmp と、しゃべってもらう文字を text.txt をやっぱり、同じフォルダに入れておく。

【スクリプト】

#!/bin/bash

SCRIPT_DIR=$(cd $(dirname $0); pwd)
cd "${SCRIPT_DIR}"

killall run
timeout 600 nice -n 20 '/opt/voicevox_nogui/run' --cpu_num_threads 1 &> /dev/null &

# 動作チェック 30秒起動を待つ
echo '1. start process'
for i in {1..30} ; do
	ver=`curl -s -X GET "127.0.0.1:50021/version"`
	if [ -n "${ver}" ]
	then
		echo "   VoiceVox ${ver} Start!"
		break		
	fi
	sleep 2
done

echo '2. text creation'
No=29
nice -n 20 curl -s \
    -X POST "localhost:50021/audio_query?speaker=${No}" \
    --get --data-urlencode text@text.txt > './_query.json'

echo '3. voice generation'
nice -n 20 curl -s \
    -H "Content-Type: application/json" \
    -X POST -d @_query.json \
    "localhost:50021/synthesis?speaker=${No}" \
    > './_voice.wav' && killall run

# 動画作成
echo '4. video creation'
ffmpeg -y -loop 1 -r 15 \
	-i ./img.bmp -i ./_voice.wav -vcodec libx264 \
	-acodec mp3 -strict experimental -ab 320k -ac 2 -ar 48000 \
	-pix_fmt yuv420p -shortest './_movie.mp4'

echo '5. completion'
#

【実行/ダウンロード】

上記のスクリプトを、 makeMovie.sh に保存する。
同じフォルダに、動画用のための画像の img.bmp、しゃべってもらう文章を text.txtに入力。
で、端末を立ち上げて、実行。

  1. start process
    VoiceVox “0.14.6” Start!
  2. text creation
  3. voice generation
  4. video creation
    (中略 ffmpeg の動画変換出力)
  5. completion

【その他】

スクリプト中の、No=29 は、ナンバーセブン というキャラクタです。

詳しくは、Helpから。

usage: run [-h] [–host HOST] [–port PORT] [–use_gpu]
[–voicevox_dir VOICEVOX_DIR] [–voicelib_dir VOICELIB_DIR]
[–runtime_dir RUNTIME_DIR] [–enable_mock]
[–enable_cancellable_synthesis] [–init_processes INIT_PROCESSES]
[–load_all_models] [–cpu_num_threads CPU_NUM_THREADS]
[–output_log_utf8]
[–cors_policy_mode {CorsPolicyMode.all,CorsPolicyMode.localapps}]
[–allow_origin [ALLOW_ORIGIN [ALLOW_ORIGIN …]]]
[–setting_file SETTING_FILE]

VOICEVOX のエンジンです。

optional arguments:
-h, –help show this help message and exit
–host HOST 接続を受け付けるホストアドレスです。
–port PORT 接続を受け付けるポート番号です。
–use_gpu 指定するとGPUを使って音声合成するようになります。
–voicevox_dir VOICEVOX_DIR
VOICEVOXのディレクトリパスです。
–voicelib_dir VOICELIB_DIR
VOICEVOX COREのディレクトリパスです。
–runtime_dir RUNTIME_DIR
VOICEVOX COREで使用するライブラリのディレクトリパスです。
–enable_mock 指定するとVOICEVOX COREを使わずモックで音声合成を行います。
–enable_cancellable_synthesis
指定すると音声合成を途中でキャンセルできるようになります。
–init_processes INIT_PROCESSES
–load_all_models 指定すると起動時に全ての音声合成モデルを読み込みます。
–cpu_num_threads CPU_NUM_THREADS
音声合成を行うスレッド数です。指定しないと、代わりに環境変数VV_CPU_NUM_THREADSの値が使われ
ます。VV_CPU_NUM_THREADSが空文字列でなく数値でもない場合はエラー終了します。
–output_log_utf8 指定するとログ出力をUTF-8でおこないます。指定しないと、代わりに環境変数
VV_OUTPUT_LOG_UTF8 の値が使われます。VV_OUTPUT_LOG_UTF8
の値が1の場合はUTF-8で、0または空文字、値がない場合は環境によって自動的に決定されます。
–cors_policy_mode {CorsPolicyMode.all,CorsPolicyMode.localapps}
CORSの許可モード。allまたはlocalappsが指定できます。allはすべてを許可します。locala
ppsはオリジン間リソース共有ポリシーを、app://.とlocalhost関連に限定します。その他のオリジ
ンはallow_originオプションで追加できます。デフォルトはlocalapps。
–allow_origin [ALLOW_ORIGIN [ALLOW_ORIGIN …]]
許可するオリジンを指定します。スペースで区切ることで複数指定できます。
–setting_file SETTING_FILE
設定ファイルを指定できます。